楊曉雨,周彩鳳
(華北電力大學 數(shù)理學院 河北省物理與能源技術重點實驗室,河北 保定 071003)
近年來,魚類分類與識別技術得到廣泛應用。在深海捕魚中,魚類識別技術被應用于魚類檢測器和魚類分類器,在實現(xiàn)勞動力節(jié)約的同時,提高了魚類分類的準確性。因此,魚類識別技術能夠為人類生活帶來極大便捷,魚類識別技術的研究對于機器視覺的研究也具有重要意義[1]。
與此同時,一些深度卷積網(wǎng)絡模型(如ResNet[2]、VGG16[3]、Transformer[4])在圖像分類方面取得了令人印象深刻的突破,許多研究人員也將這些深度學習模型運用于魚類的分類技術,有效提高了魚類分類的效率以及準確性。然而,水下拍攝的魚類圖像面臨著噪聲、遮擋、復雜環(huán)境限制亮度、光照不一致、水中沉淀物和起伏的水下植物等問題[1]。過往提出的一些算法很難通過不清晰且具有諸多干擾項的圖像來學習魚類的特征。另一方面,受限于標記數(shù)據(jù)少、訓練數(shù)據(jù)集不平衡和過擬合等原因,在具體使用這類深度卷積模型時依舊存在效率不高且精度下降的現(xiàn)象。
基于上述魚類識別分類中存在的問題,該文提出一種基于聯(lián)邦學習的魚類分類解決系統(tǒng)。使用卷積神經(jīng)網(wǎng)絡作為基本模型,并在其基礎上使用聯(lián)邦學習技術對數(shù)據(jù)集進行拆分處理,通過將訓練分散本地處理以及最終中心參數(shù)聚合的方法,改善當前數(shù)據(jù)集不均衡且訓練效率不高的問題。經(jīng)過仿真實驗分析,所提出的魚類分類系統(tǒng)在訓練的質量上以及效率上較以往提出的魚類分類系統(tǒng)具有一定的優(yōu)越性。
國內外許多學者已經(jīng)在魚類分類領域進行了較深入的研究,本節(jié)將依照魚類分類技術的發(fā)展歷程,概述魚類識別技術的進展以及解決問題的系統(tǒng)。
在深度學習與計算機視覺結合用于魚類分類之前,White D J等人便提出了一種基于從魚的輪廓獲得的多邊形矩量計算來確定魚的方向的方法[5],用于識別和測量不同魚類。但是,這種方法僅包括長寬比較大的魚,限制了可用物種的數(shù)量。在這之后,Wu等人采取灰度共生矩陣、最小二乘支持向量機并采用人工蜂群算法對多核LS-SVM中的待定參數(shù)進行尋優(yōu)的方法[6],實現(xiàn)了淡水魚種類自動識別。同年,Yousef等人介紹了一種高效的視覺信號處理系統(tǒng)[7],使用應用于視頻幀內最佳局部區(qū)域的相關過濾器來檢測饋送量,然后通過基于SVM的細化分類器來抑制錯誤檢測到的饋送,實現(xiàn)了以自動化的方式準確控制進料的過程。
隨著深度神經(jīng)網(wǎng)絡的發(fā)展,神經(jīng)網(wǎng)絡為圖像分類帶來了一系列突破,越來越受到人們的青睞,但神經(jīng)網(wǎng)絡也伴隨著更深層次的訓練更新產(chǎn)生了更多的問題,這其中包括梯度消失以及梯度爆炸?;谏鲜鰡栴},He等人提出了一個剩余學習框架[8],以簡化比以前使用的網(wǎng)絡更深的網(wǎng)絡訓練。同年,Ren等人建立了一種區(qū)域前定位網(wǎng)絡[9],實現(xiàn)幾乎無成本的區(qū)域建議,提高整體目標檢測精度。隨著神經(jīng)網(wǎng)絡在魚類識別分類領域研究的深入,Dhruv等人采用卷積神經(jīng)網(wǎng)絡、形態(tài)學運算、Otsu二值化等方法[1],實現(xiàn)了水下魚類的分類。但這也同時存在著由于背景噪聲和其他水體的影響,對部分圖像無法進行準確分類的問題。針對海底環(huán)境惡劣,海底觀測視頻品質差,圖片中魚類占比小難識別這一問題,Zhang等人通過背景差分法、暗通道先驗算法去霧、權重化特征的卷積等方法提高了圖片的品質[10]。Zheng等人則提出了一種基于局部區(qū)域的魚類區(qū)域建模方法[11],以強制模型關注魚類區(qū)域,改善了圖片中魚類占比小的問題。Chen等人提出了一種深度神經(jīng)魚類分類系統(tǒng)[12],可以在不受人類干擾的情況下使用相機自動標記魚。
在云計算、人工智能、神經(jīng)網(wǎng)絡等快速發(fā)展的同時,數(shù)據(jù)集變得越來越大,模型變得越來越復雜,數(shù)據(jù)也變得越來越分散。機器學習需要在多臺機器上進行參數(shù)優(yōu)化[13]。人們的隱私保護意識也越來越強烈。由于聯(lián)邦學習具有很好地保護用戶數(shù)據(jù)隱私的特性,以及目前存在許多優(yōu)化算法[14-16],聯(lián)邦學習在近幾年迅速崛起。聯(lián)邦學習最早是在2016年由谷歌提出的[17],目標是在保證數(shù)據(jù)隱私安全及合法合規(guī)的基礎上,實現(xiàn)共同建模,提升AI模型的效果。雖然聯(lián)邦學習很好地保護了用戶數(shù)據(jù)的安全性,但是由于非獨立同分布數(shù)據(jù)的存在,聯(lián)邦學習的效率、準確性和通信成本等都有了很大的限制。除了通信外聚合也是影響聯(lián)邦學習性能的另一個瓶頸。為此,前輩們做了許多嘗試,McMahan等人[17]提出了聯(lián)邦平均算法FedAvg。為了提高FedAvg模型的性能,Sahu等人[18]提出了FedProx模型,使得局部更新接近于原始的全局模型。為了減少客戶端的計算量,Yurochkin等人[19-20]提出了概率聯(lián)邦神經(jīng)匹配方法。然而,它只適用于簡單的網(wǎng)絡架構,例如全連接網(wǎng)絡(Fully Connected Network,FCN)。由此看出,這些聚合算法都存在一些問題,例如不能同時考慮全局模型對局部更新的影響,不能減少客戶端的計算量,也不能同時應用于如今流行的網(wǎng)絡模型。
綜上所述,隨著魚類分類技術走向成熟,神經(jīng)網(wǎng)絡在魚類識別中起到了越來越重要的作用。與此同時,由于數(shù)據(jù)變得越來越分散,以及模型的復雜程度增加,聯(lián)邦學習也逐漸受到人們的青睞。在前人發(fā)展魚類識別技術至今的歷程中,該文充分吸收了一些系統(tǒng)的優(yōu)勢以及思考了當前魚類識別分類所面臨的新的問題,提出了一種基于聯(lián)邦學習的魚類識別分類解決系統(tǒng),致力于解決魚類識別分類過程效率低、精度差的問題,以此達到魚類識別進程的優(yōu)化。
基于聯(lián)邦卷積神經(jīng)網(wǎng)絡的魚類分類系統(tǒng)如圖1所示。該系統(tǒng)先將數(shù)據(jù)集中的圖片隨機分發(fā)給100個用戶,并將這些圖片視為用戶本身擁有的數(shù)據(jù),這些數(shù)據(jù)滿足非獨立同分布的特點。用戶得到數(shù)據(jù)后會對本地的卷積神經(jīng)網(wǎng)絡模型進行訓練。雖然每個用戶的卷積神經(jīng)網(wǎng)絡模型具有相同的結構,但是由于每個用戶所擁有的數(shù)據(jù)集不同,所訓練得到的模型參數(shù)也會不同。訓練完成后,用戶會將模型參數(shù)上傳到云端。云端將完成模型參數(shù)的聚合與更新,并將更新好的參數(shù)返回到用戶的終端,各個用戶開始下一輪迭代。以上過程會一直重復,直到整個模型收斂。
使用的神經(jīng)網(wǎng)絡模型結構如圖1所示,輸入層將不同大小的圖片轉換成180*180*3作為模型的輸入。卷積層是卷積神經(jīng)網(wǎng)絡的第一層,輸入的180*180*3原始RGB圖像首先進行第一層卷積,在這一層中用到10個5*5的卷積核,后經(jīng)過第一層最大池化,窗口的大小為2,步長也為2;接下來進行第二層卷積,第二層用到20個5*5的卷積核,卷積操作后將得到的特征圖進行第二次最大池化,為防止模型過擬合,該層進一步連接到一個Dropout層和一個Flatten層,Flatten層后是第一個全連接層,該全連接層有50個神經(jīng)元,進一步連接到第二個全連接層,該全連接層神經(jīng)元的個數(shù)等于最終分類的種類數(shù),用來將圖像劃分為適當類別。實驗使用RELU(Rectified Linear Unit)作為激活函數(shù)。在最后一層,全連接層需要計算出每個類別對應的分數(shù),使用softmax分類器[21]將得分轉化為概率值,概率值大的類型就是該類別對應的類別。
對于模型的訓練,實驗運用交叉熵計算估計值與實際值之間的誤差,采用隨機梯度下降SGD(Stochastic Gradient Descent)[21]作為優(yōu)化器,結合反向傳播算法訓練神經(jīng)網(wǎng)絡。
聯(lián)邦學習是一種加密的分布式機器學習范式,一般由多個客戶端(如移動設備)和一個中央服務器(如服務提供商)組成[18]。其特點是各參與客戶端的數(shù)據(jù)始終保持在用戶本地,各參與客戶端利用自己的本地數(shù)據(jù)和本地資源進行本地訓練,待訓練完成后再將參數(shù)上傳到服務器進行整合。典型的聯(lián)邦學習場景是在本地客戶端設備負責存儲和處理的約束下,只上傳模型更新的梯度信息,在數(shù)千萬到數(shù)百萬個客戶端設備上訓練單個全局模型ω,中心服務器的目標函數(shù)F(ω)通常表現(xiàn)為:

其中,m是參與訓練的客戶端設備總數(shù),n是所有客戶端數(shù)據(jù)量總合,nk是第k個客戶端的數(shù)據(jù)量,Fk(ω)是第k個設備的本地目標函數(shù)。


根據(jù)聯(lián)邦學習中數(shù)據(jù)集的貢獻方式可以將聯(lián)邦學習分為三類:橫向聯(lián)邦學習(Horizontal Federated Learning,HFL)、縱向聯(lián)邦學習(Vertical Federated Learning,VFL)和聯(lián)邦遷移學習(Federated Transfer Learning,FTL)。橫向聯(lián)邦學習指的是不同的參與方有較多的數(shù)據(jù)樣本特征(橫向)重疊而數(shù)據(jù)樣本(縱向)重疊較少。縱向聯(lián)邦學習指的是不同參與方有較多的數(shù)據(jù)樣本重疊而數(shù)據(jù)樣本特征重疊較少。聯(lián)邦遷移學習是對橫向聯(lián)邦學習和縱向聯(lián)邦學習的補充,指的是不同參與方的數(shù)據(jù)樣本以及數(shù)據(jù)樣本特征的重疊都較少的情況。該文主要采用橫向聯(lián)邦學習,并在實驗中對橫向聯(lián)邦學習進行模擬。
在橫向聯(lián)邦學習中,可以看作是基于樣本的分布式模型訓練,分發(fā)全部數(shù)據(jù)到不同的機器,每臺機器從服務器下載模型,然后利用本地數(shù)據(jù)訓練模型,之后返回給服務器需要更新的參數(shù);服務器聚合各機器上返回的參數(shù),更新模型,再把最新的模型反饋到每臺機器。在這個過程中,每臺機器都是相同且完整的模型,且機器之間不交流不依賴,在預測時每臺機器也可以獨立預測,可以把這個過程看作成基于樣本的分布式模型訓練。橫向聯(lián)邦學習模型如圖2所示。

圖2 橫向聯(lián)邦學習
在概率論與統(tǒng)計學中,獨立同分布(Independent and Identically Distributed,IID)是指一組隨機變量中每個變量的概率分布相同并且每個變量之間相互獨立。而非獨立同分布(non Independent and Identically Distributed,non-IID)是指隨機變量之間非獨立或者非同分布。在聯(lián)邦學習中,non-IID是指數(shù)據(jù)獨立但不同分布的情況,因為數(shù)據(jù)的分布一定是獨立的,但是數(shù)據(jù)的采集不一定服從同一采樣方法。由于在現(xiàn)實生活中各個用戶所擁有的魚類圖片并非獨立同分布的。一般會受到季節(jié)、氣候、地點等因素的影響。故本次實驗中對用戶所擁有的數(shù)據(jù)進行非獨立同分布的模擬。
該文選擇了11種常見的魚類作為分類對象,分別是比目魚、大黃魚、帶魚、翻車魚、飛魚、狗魚、蝴蝶魚、金槍魚、魔鬼魚、網(wǎng)紋魚、鱈魚,數(shù)據(jù)集如圖3所示。由于這些RGB魚類圖片的大小不同,考慮到圖片的平均大小,在實驗中將圖片統(tǒng)一調整為180*180,同時將數(shù)據(jù)集劃分為三部分,原數(shù)據(jù)集一共有739張圖片,將數(shù)據(jù)集劃分為包含443張的訓練集、包含148張的驗證集和包含148張的測試集。

圖3 數(shù)據(jù)集展示
實驗用到的CPU是AMD Ryzen 7 4800U 1.80 GHz,實驗環(huán)境為Windows 11,Python版本為3.7.3,Pytorch版本為1.2.0,torchvision版本為0.4.0。
在實驗過程中,模擬了100名用戶,在每一輪的訓練中隨機選取10名用戶,并將數(shù)據(jù)按照非獨立同分布的方式等分成10份,隨機分配到10名用戶手中,這是一個模擬的過程。在數(shù)據(jù)分發(fā)給用戶后,直到訓練結束,每個用戶的數(shù)據(jù)都不會進行任何的交換和共享,以此來達到數(shù)據(jù)隔離的目的。在每個用戶進行卷積神經(jīng)網(wǎng)絡訓練的過程中,都會將自身的數(shù)據(jù)劃分成60%的訓練集、20%的驗證集和20%的測試集。以交叉熵作為損失函數(shù),以學習率為0.01的隨機梯度下降算法作為優(yōu)化器更新模型參數(shù),一共訓練20輪。并將訓練結果傳遞給聚合器。聚合器將這些用戶的參數(shù)值取平均,更新全局模型。在模型訓練的過程中記錄下模型在測試集上的準確率,用于分析實驗結果。
實驗中,每名用戶的損失函數(shù)采用交叉熵損失函數(shù):

其中,K是種類數(shù);y是標簽,如果是類別i,則yi=1,否則等于0;p是神經(jīng)網(wǎng)絡的輸出,即類別是i的概率。每名用戶計算完自己的損失后,將自己的損失上傳到云端,云端將損失按照如下公式進行聚合,并將聚合后的損失作為模型的損失。

其中,nk為每個客戶端上的數(shù)據(jù)批次的數(shù)目,fi(ω)是根據(jù)客戶端上每一批次計算出的損失。
為了展示聯(lián)邦卷積神經(jīng)網(wǎng)絡模型在野生魚類識別方面的作用,實驗將聯(lián)邦卷積神經(jīng)網(wǎng)絡的實驗結果與用于圖像分類的Resnet50[2]和傳統(tǒng)的聯(lián)邦學習方法在相同數(shù)據(jù)集上的運行結果進行對比。在本次實驗中,傳統(tǒng)的聯(lián)邦學習中每個用戶用到的模型是全連接神經(jīng)網(wǎng)絡。運行結果如圖4所示。

圖4 實驗結果
由圖4所示,聯(lián)邦卷積神經(jīng)網(wǎng)絡模型的最終分類準確率為33.3%,而傳統(tǒng)的聯(lián)邦學習的分類準確率為26.67%,Resnet50的分類準確率為87.97%。聯(lián)邦卷積神經(jīng)網(wǎng)絡模型的損失為0.781,傳統(tǒng)聯(lián)邦學習的損失為1.874,Resnet50的損失為0.074。
從圖4可以很直觀地看到,聯(lián)邦卷積神經(jīng)網(wǎng)絡的分類準確率高于傳統(tǒng)的聯(lián)邦學習的分類準確率,并且相比于傳統(tǒng)的聯(lián)邦學習聯(lián)邦卷積神經(jīng)網(wǎng)絡的損失收斂更快,這主要是由于采用聯(lián)邦學習與卷積神經(jīng)網(wǎng)絡模型結合的方式進行訓練,提高了聯(lián)邦學習的訓練效率。聯(lián)邦學習提供的快速模糊化處理以及數(shù)據(jù)獨立的特性,使得魚類分類的效率和數(shù)據(jù)保護得到了有力保障。傳統(tǒng)的神經(jīng)網(wǎng)絡在聯(lián)邦學習的框架下應用,可以比較好地實時估算全局模型聚合頻率,使得算法能夠在保證模型精度的前提下提高訓練效率,降低學習成本。但是聯(lián)邦卷積神經(jīng)網(wǎng)絡相比于Resnet50還是存在一定差距,這主要是由于聯(lián)邦卷積神經(jīng)網(wǎng)絡考慮了用戶的隱私,并且在聯(lián)邦卷積神經(jīng)網(wǎng)絡中各用戶的卷積神經(jīng)網(wǎng)絡的架構與Resnet50存在差異。
本次實驗中,卷積神經(jīng)網(wǎng)絡與聯(lián)邦學習結合改善了聯(lián)邦學習的通信有效性和資源優(yōu)化問題。與此同時,聯(lián)邦學習提供的快速模糊化處理與數(shù)據(jù)獨立的特性也為魚類的檢測與識別的效率和數(shù)據(jù)保護提供了有力的支持。經(jīng)過仿真實驗表明,聯(lián)邦卷積神經(jīng)網(wǎng)絡模型相比于傳統(tǒng)的聯(lián)邦學習在效率和模型精度方面分別提升了12%和16.3%。該研究結果有助于進一步提升魚類檢測與識別的精度,同時為智能魚缸、智能魚類捕撈分類等提供便利。但是,該實驗還有許多不足之處,首先實驗用到的模型還可以進一步優(yōu)化,比如加深模型中卷積神經(jīng)網(wǎng)絡網(wǎng)絡的深度、增加訓練輪數(shù)等,也可以嘗試其他神經(jīng)網(wǎng)絡比如VGG等與聯(lián)邦學習進行結合從而識別圖像。其次,實驗對非獨立同分布用戶的訓練模型的模擬均采用的是相同卷積神經(jīng)網(wǎng)絡,然而在實際生活中,由于不同地區(qū)、不同環(huán)境下用戶的數(shù)據(jù)分布情況是不同的,用戶的模型也是有差異的,如果直接視為一類進行上傳聚合,生成的模型與目標模型必定存在偏差。最后,在聯(lián)邦學習與深度學習的結合方面還面臨諸多挑戰(zhàn)。在非獨立同分布數(shù)據(jù)的處理方面還存在很大的不足。對獨立同分布數(shù)據(jù)和非獨立同分布數(shù)據(jù)缺乏有效的優(yōu)化算法來提高模型的收斂速度。后續(xù)研究還可以根據(jù)聯(lián)邦學習適當調整機器學習的工作或算法,從而提高模型的性能。