楊曉雨,周彩鳳
(華北電力大學(xué) 數(shù)理學(xué)院 河北省物理與能源技術(shù)重點(diǎn)實(shí)驗(yàn)室,河北 保定 071003)
近年來,魚類分類與識別技術(shù)得到廣泛應(yīng)用。在深海捕魚中,魚類識別技術(shù)被應(yīng)用于魚類檢測器和魚類分類器,在實(shí)現(xiàn)勞動力節(jié)約的同時,提高了魚類分類的準(zhǔn)確性。因此,魚類識別技術(shù)能夠?yàn)槿祟惿顜順O大便捷,魚類識別技術(shù)的研究對于機(jī)器視覺的研究也具有重要意義[1]。
與此同時,一些深度卷積網(wǎng)絡(luò)模型(如ResNet[2]、VGG16[3]、Transformer[4])在圖像分類方面取得了令人印象深刻的突破,許多研究人員也將這些深度學(xué)習(xí)模型運(yùn)用于魚類的分類技術(shù),有效提高了魚類分類的效率以及準(zhǔn)確性。然而,水下拍攝的魚類圖像面臨著噪聲、遮擋、復(fù)雜環(huán)境限制亮度、光照不一致、水中沉淀物和起伏的水下植物等問題[1]。過往提出的一些算法很難通過不清晰且具有諸多干擾項(xiàng)的圖像來學(xué)習(xí)魚類的特征。另一方面,受限于標(biāo)記數(shù)據(jù)少、訓(xùn)練數(shù)據(jù)集不平衡和過擬合等原因,在具體使用這類深度卷積模型時依舊存在效率不高且精度下降的現(xiàn)象。
基于上述魚類識別分類中存在的問題,該文提出一種基于聯(lián)邦學(xué)習(xí)的魚類分類解決系統(tǒng)。使用卷積神經(jīng)網(wǎng)絡(luò)作為基本模型,并在其基礎(chǔ)上使用聯(lián)邦學(xué)習(xí)技術(shù)對數(shù)據(jù)集進(jìn)行拆分處理,通過將訓(xùn)練分散本地處理以及最終中心參數(shù)聚合的方法,改善當(dāng)前數(shù)據(jù)集不均衡且訓(xùn)練效率不高的問題。經(jīng)過仿真實(shí)驗(yàn)分析,所提出的魚類分類系統(tǒng)在訓(xùn)練的質(zhì)量上以及效率上較以往提出的魚類分類系統(tǒng)具有一定的優(yōu)越性。
國內(nèi)外許多學(xué)者已經(jīng)在魚類分類領(lǐng)域進(jìn)行了較深入的研究,本節(jié)將依照魚類分類技術(shù)的發(fā)展歷程,概述魚類識別技術(shù)的進(jìn)展以及解決問題的系統(tǒng)。
在深度學(xué)習(xí)與計(jì)算機(jī)視覺結(jié)合用于魚類分類之前,White D J等人便提出了一種基于從魚的輪廓獲得的多邊形矩量計(jì)算來確定魚的方向的方法[5],用于識別和測量不同魚類。但是,這種方法僅包括長寬比較大的魚,限制了可用物種的數(shù)量。在這之后,Wu等人采取灰度共生矩陣、最小二乘支持向量機(jī)并采用人工蜂群算法對多核LS-SVM中的待定參數(shù)進(jìn)行尋優(yōu)的方法[6],實(shí)現(xiàn)了淡水魚種類自動識別。同年,Yousef等人介紹了一種高效的視覺信號處理系統(tǒng)[7],使用應(yīng)用于視頻幀內(nèi)最佳局部區(qū)域的相關(guān)過濾器來檢測饋送量,然后通過基于SVM的細(xì)化分類器來抑制錯誤檢測到的饋送,實(shí)現(xiàn)了以自動化的方式準(zhǔn)確控制進(jìn)料的過程。
隨著深度神經(jīng)網(wǎng)絡(luò)的發(fā)展,神經(jīng)網(wǎng)絡(luò)為圖像分類帶來了一系列突破,越來越受到人們的青睞,但神經(jīng)網(wǎng)絡(luò)也伴隨著更深層次的訓(xùn)練更新產(chǎn)生了更多的問題,這其中包括梯度消失以及梯度爆炸?;谏鲜鰡栴},He等人提出了一個剩余學(xué)習(xí)框架[8],以簡化比以前使用的網(wǎng)絡(luò)更深的網(wǎng)絡(luò)訓(xùn)練。同年,Ren等人建立了一種區(qū)域前定位網(wǎng)絡(luò)[9],實(shí)現(xiàn)幾乎無成本的區(qū)域建議,提高整體目標(biāo)檢測精度。隨著神經(jīng)網(wǎng)絡(luò)在魚類識別分類領(lǐng)域研究的深入,Dhruv等人采用卷積神經(jīng)網(wǎng)絡(luò)、形態(tài)學(xué)運(yùn)算、Otsu二值化等方法[1],實(shí)現(xiàn)了水下魚類的分類。但這也同時存在著由于背景噪聲和其他水體的影響,對部分圖像無法進(jìn)行準(zhǔn)確分類的問題。針對海底環(huán)境惡劣,海底觀測視頻品質(zhì)差,圖片中魚類占比小難識別這一問題,Zhang等人通過背景差分法、暗通道先驗(yàn)算法去霧、權(quán)重化特征的卷積等方法提高了圖片的品質(zhì)[10]。Zheng等人則提出了一種基于局部區(qū)域的魚類區(qū)域建模方法[11],以強(qiáng)制模型關(guān)注魚類區(qū)域,改善了圖片中魚類占比小的問題。Chen等人提出了一種深度神經(jīng)魚類分類系統(tǒng)[12],可以在不受人類干擾的情況下使用相機(jī)自動標(biāo)記魚。
在云計(jì)算、人工智能、神經(jīng)網(wǎng)絡(luò)等快速發(fā)展的同時,數(shù)據(jù)集變得越來越大,模型變得越來越復(fù)雜,數(shù)據(jù)也變得越來越分散。機(jī)器學(xué)習(xí)需要在多臺機(jī)器上進(jìn)行參數(shù)優(yōu)化[13]。人們的隱私保護(hù)意識也越來越強(qiáng)烈。由于聯(lián)邦學(xué)習(xí)具有很好地保護(hù)用戶數(shù)據(jù)隱私的特性,以及目前存在許多優(yōu)化算法[14-16],聯(lián)邦學(xué)習(xí)在近幾年迅速崛起。聯(lián)邦學(xué)習(xí)最早是在2016年由谷歌提出的[17],目標(biāo)是在保證數(shù)據(jù)隱私安全及合法合規(guī)的基礎(chǔ)上,實(shí)現(xiàn)共同建模,提升AI模型的效果。雖然聯(lián)邦學(xué)習(xí)很好地保護(hù)了用戶數(shù)據(jù)的安全性,但是由于非獨(dú)立同分布數(shù)據(jù)的存在,聯(lián)邦學(xué)習(xí)的效率、準(zhǔn)確性和通信成本等都有了很大的限制。除了通信外聚合也是影響聯(lián)邦學(xué)習(xí)性能的另一個瓶頸。為此,前輩們做了許多嘗試,McMahan等人[17]提出了聯(lián)邦平均算法FedAvg。為了提高FedAvg模型的性能,Sahu等人[18]提出了FedProx模型,使得局部更新接近于原始的全局模型。為了減少客戶端的計(jì)算量,Yurochkin等人[19-20]提出了概率聯(lián)邦神經(jīng)匹配方法。然而,它只適用于簡單的網(wǎng)絡(luò)架構(gòu),例如全連接網(wǎng)絡(luò)(Fully Connected Network,FCN)。由此看出,這些聚合算法都存在一些問題,例如不能同時考慮全局模型對局部更新的影響,不能減少客戶端的計(jì)算量,也不能同時應(yīng)用于如今流行的網(wǎng)絡(luò)模型。
綜上所述,隨著魚類分類技術(shù)走向成熟,神經(jīng)網(wǎng)絡(luò)在魚類識別中起到了越來越重要的作用。與此同時,由于數(shù)據(jù)變得越來越分散,以及模型的復(fù)雜程度增加,聯(lián)邦學(xué)習(xí)也逐漸受到人們的青睞。在前人發(fā)展魚類識別技術(shù)至今的歷程中,該文充分吸收了一些系統(tǒng)的優(yōu)勢以及思考了當(dāng)前魚類識別分類所面臨的新的問題,提出了一種基于聯(lián)邦學(xué)習(xí)的魚類識別分類解決系統(tǒng),致力于解決魚類識別分類過程效率低、精度差的問題,以此達(dá)到魚類識別進(jìn)程的優(yōu)化。
基于聯(lián)邦卷積神經(jīng)網(wǎng)絡(luò)的魚類分類系統(tǒng)如圖1所示。該系統(tǒng)先將數(shù)據(jù)集中的圖片隨機(jī)分發(fā)給100個用戶,并將這些圖片視為用戶本身擁有的數(shù)據(jù),這些數(shù)據(jù)滿足非獨(dú)立同分布的特點(diǎn)。用戶得到數(shù)據(jù)后會對本地的卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練。雖然每個用戶的卷積神經(jīng)網(wǎng)絡(luò)模型具有相同的結(jié)構(gòu),但是由于每個用戶所擁有的數(shù)據(jù)集不同,所訓(xùn)練得到的模型參數(shù)也會不同。訓(xùn)練完成后,用戶會將模型參數(shù)上傳到云端。云端將完成模型參數(shù)的聚合與更新,并將更新好的參數(shù)返回到用戶的終端,各個用戶開始下一輪迭代。以上過程會一直重復(fù),直到整個模型收斂。
使用的神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)如圖1所示,輸入層將不同大小的圖片轉(zhuǎn)換成180*180*3作為模型的輸入。卷積層是卷積神經(jīng)網(wǎng)絡(luò)的第一層,輸入的180*180*3原始RGB圖像首先進(jìn)行第一層卷積,在這一層中用到10個5*5的卷積核,后經(jīng)過第一層最大池化,窗口的大小為2,步長也為2;接下來進(jìn)行第二層卷積,第二層用到20個5*5的卷積核,卷積操作后將得到的特征圖進(jìn)行第二次最大池化,為防止模型過擬合,該層進(jìn)一步連接到一個Dropout層和一個Flatten層,Flatten層后是第一個全連接層,該全連接層有50個神經(jīng)元,進(jìn)一步連接到第二個全連接層,該全連接層神經(jīng)元的個數(shù)等于最終分類的種類數(shù),用來將圖像劃分為適當(dāng)類別。實(shí)驗(yàn)使用RELU(Rectified Linear Unit)作為激活函數(shù)。在最后一層,全連接層需要計(jì)算出每個類別對應(yīng)的分?jǐn)?shù),使用softmax分類器[21]將得分轉(zhuǎn)化為概率值,概率值大的類型就是該類別對應(yīng)的類別。
對于模型的訓(xùn)練,實(shí)驗(yàn)運(yùn)用交叉熵計(jì)算估計(jì)值與實(shí)際值之間的誤差,采用隨機(jī)梯度下降SGD(Stochastic Gradient Descent)[21]作為優(yōu)化器,結(jié)合反向傳播算法訓(xùn)練神經(jīng)網(wǎng)絡(luò)。
聯(lián)邦學(xué)習(xí)是一種加密的分布式機(jī)器學(xué)習(xí)范式,一般由多個客戶端(如移動設(shè)備)和一個中央服務(wù)器(如服務(wù)提供商)組成[18]。其特點(diǎn)是各參與客戶端的數(shù)據(jù)始終保持在用戶本地,各參與客戶端利用自己的本地數(shù)據(jù)和本地資源進(jìn)行本地訓(xùn)練,待訓(xùn)練完成后再將參數(shù)上傳到服務(wù)器進(jìn)行整合。典型的聯(lián)邦學(xué)習(xí)場景是在本地客戶端設(shè)備負(fù)責(zé)存儲和處理的約束下,只上傳模型更新的梯度信息,在數(shù)千萬到數(shù)百萬個客戶端設(shè)備上訓(xùn)練單個全局模型ω,中心服務(wù)器的目標(biāo)函數(shù)F(ω)通常表現(xiàn)為:
其中,m是參與訓(xùn)練的客戶端設(shè)備總數(shù),n是所有客戶端數(shù)據(jù)量總合,nk是第k個客戶端的數(shù)據(jù)量,Fk(ω)是第k個設(shè)備的本地目標(biāo)函數(shù)。
根據(jù)聯(lián)邦學(xué)習(xí)中數(shù)據(jù)集的貢獻(xiàn)方式可以將聯(lián)邦學(xué)習(xí)分為三類:橫向聯(lián)邦學(xué)習(xí)(Horizontal Federated Learning,HFL)、縱向聯(lián)邦學(xué)習(xí)(Vertical Federated Learning,VFL)和聯(lián)邦遷移學(xué)習(xí)(Federated Transfer Learning,FTL)。橫向聯(lián)邦學(xué)習(xí)指的是不同的參與方有較多的數(shù)據(jù)樣本特征(橫向)重疊而數(shù)據(jù)樣本(縱向)重疊較少。縱向聯(lián)邦學(xué)習(xí)指的是不同參與方有較多的數(shù)據(jù)樣本重疊而數(shù)據(jù)樣本特征重疊較少。聯(lián)邦遷移學(xué)習(xí)是對橫向聯(lián)邦學(xué)習(xí)和縱向聯(lián)邦學(xué)習(xí)的補(bǔ)充,指的是不同參與方的數(shù)據(jù)樣本以及數(shù)據(jù)樣本特征的重疊都較少的情況。該文主要采用橫向聯(lián)邦學(xué)習(xí),并在實(shí)驗(yàn)中對橫向聯(lián)邦學(xué)習(xí)進(jìn)行模擬。
在橫向聯(lián)邦學(xué)習(xí)中,可以看作是基于樣本的分布式模型訓(xùn)練,分發(fā)全部數(shù)據(jù)到不同的機(jī)器,每臺機(jī)器從服務(wù)器下載模型,然后利用本地數(shù)據(jù)訓(xùn)練模型,之后返回給服務(wù)器需要更新的參數(shù);服務(wù)器聚合各機(jī)器上返回的參數(shù),更新模型,再把最新的模型反饋到每臺機(jī)器。在這個過程中,每臺機(jī)器都是相同且完整的模型,且機(jī)器之間不交流不依賴,在預(yù)測時每臺機(jī)器也可以獨(dú)立預(yù)測,可以把這個過程看作成基于樣本的分布式模型訓(xùn)練。橫向聯(lián)邦學(xué)習(xí)模型如圖2所示。
圖2 橫向聯(lián)邦學(xué)習(xí)
在概率論與統(tǒng)計(jì)學(xué)中,獨(dú)立同分布(Independent and Identically Distributed,IID)是指一組隨機(jī)變量中每個變量的概率分布相同并且每個變量之間相互獨(dú)立。而非獨(dú)立同分布(non Independent and Identically Distributed,non-IID)是指隨機(jī)變量之間非獨(dú)立或者非同分布。在聯(lián)邦學(xué)習(xí)中,non-IID是指數(shù)據(jù)獨(dú)立但不同分布的情況,因?yàn)閿?shù)據(jù)的分布一定是獨(dú)立的,但是數(shù)據(jù)的采集不一定服從同一采樣方法。由于在現(xiàn)實(shí)生活中各個用戶所擁有的魚類圖片并非獨(dú)立同分布的。一般會受到季節(jié)、氣候、地點(diǎn)等因素的影響。故本次實(shí)驗(yàn)中對用戶所擁有的數(shù)據(jù)進(jìn)行非獨(dú)立同分布的模擬。
該文選擇了11種常見的魚類作為分類對象,分別是比目魚、大黃魚、帶魚、翻車魚、飛魚、狗魚、蝴蝶魚、金槍魚、魔鬼魚、網(wǎng)紋魚、鱈魚,數(shù)據(jù)集如圖3所示。由于這些RGB魚類圖片的大小不同,考慮到圖片的平均大小,在實(shí)驗(yàn)中將圖片統(tǒng)一調(diào)整為180*180,同時將數(shù)據(jù)集劃分為三部分,原數(shù)據(jù)集一共有739張圖片,將數(shù)據(jù)集劃分為包含443張的訓(xùn)練集、包含148張的驗(yàn)證集和包含148張的測試集。
圖3 數(shù)據(jù)集展示
實(shí)驗(yàn)用到的CPU是AMD Ryzen 7 4800U 1.80 GHz,實(shí)驗(yàn)環(huán)境為Windows 11,Python版本為3.7.3,Pytorch版本為1.2.0,torchvision版本為0.4.0。
在實(shí)驗(yàn)過程中,模擬了100名用戶,在每一輪的訓(xùn)練中隨機(jī)選取10名用戶,并將數(shù)據(jù)按照非獨(dú)立同分布的方式等分成10份,隨機(jī)分配到10名用戶手中,這是一個模擬的過程。在數(shù)據(jù)分發(fā)給用戶后,直到訓(xùn)練結(jié)束,每個用戶的數(shù)據(jù)都不會進(jìn)行任何的交換和共享,以此來達(dá)到數(shù)據(jù)隔離的目的。在每個用戶進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的過程中,都會將自身的數(shù)據(jù)劃分成60%的訓(xùn)練集、20%的驗(yàn)證集和20%的測試集。以交叉熵作為損失函數(shù),以學(xué)習(xí)率為0.01的隨機(jī)梯度下降算法作為優(yōu)化器更新模型參數(shù),一共訓(xùn)練20輪。并將訓(xùn)練結(jié)果傳遞給聚合器。聚合器將這些用戶的參數(shù)值取平均,更新全局模型。在模型訓(xùn)練的過程中記錄下模型在測試集上的準(zhǔn)確率,用于分析實(shí)驗(yàn)結(jié)果。
實(shí)驗(yàn)中,每名用戶的損失函數(shù)采用交叉熵?fù)p失函數(shù):
其中,K是種類數(shù);y是標(biāo)簽,如果是類別i,則yi=1,否則等于0;p是神經(jīng)網(wǎng)絡(luò)的輸出,即類別是i的概率。每名用戶計(jì)算完自己的損失后,將自己的損失上傳到云端,云端將損失按照如下公式進(jìn)行聚合,并將聚合后的損失作為模型的損失。
其中,nk為每個客戶端上的數(shù)據(jù)批次的數(shù)目,fi(ω)是根據(jù)客戶端上每一批次計(jì)算出的損失。
為了展示聯(lián)邦卷積神經(jīng)網(wǎng)絡(luò)模型在野生魚類識別方面的作用,實(shí)驗(yàn)將聯(lián)邦卷積神經(jīng)網(wǎng)絡(luò)的實(shí)驗(yàn)結(jié)果與用于圖像分類的Resnet50[2]和傳統(tǒng)的聯(lián)邦學(xué)習(xí)方法在相同數(shù)據(jù)集上的運(yùn)行結(jié)果進(jìn)行對比。在本次實(shí)驗(yàn)中,傳統(tǒng)的聯(lián)邦學(xué)習(xí)中每個用戶用到的模型是全連接神經(jīng)網(wǎng)絡(luò)。運(yùn)行結(jié)果如圖4所示。
圖4 實(shí)驗(yàn)結(jié)果
由圖4所示,聯(lián)邦卷積神經(jīng)網(wǎng)絡(luò)模型的最終分類準(zhǔn)確率為33.3%,而傳統(tǒng)的聯(lián)邦學(xué)習(xí)的分類準(zhǔn)確率為26.67%,Resnet50的分類準(zhǔn)確率為87.97%。聯(lián)邦卷積神經(jīng)網(wǎng)絡(luò)模型的損失為0.781,傳統(tǒng)聯(lián)邦學(xué)習(xí)的損失為1.874,Resnet50的損失為0.074。
從圖4可以很直觀地看到,聯(lián)邦卷積神經(jīng)網(wǎng)絡(luò)的分類準(zhǔn)確率高于傳統(tǒng)的聯(lián)邦學(xué)習(xí)的分類準(zhǔn)確率,并且相比于傳統(tǒng)的聯(lián)邦學(xué)習(xí)聯(lián)邦卷積神經(jīng)網(wǎng)絡(luò)的損失收斂更快,這主要是由于采用聯(lián)邦學(xué)習(xí)與卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)合的方式進(jìn)行訓(xùn)練,提高了聯(lián)邦學(xué)習(xí)的訓(xùn)練效率。聯(lián)邦學(xué)習(xí)提供的快速模糊化處理以及數(shù)據(jù)獨(dú)立的特性,使得魚類分類的效率和數(shù)據(jù)保護(hù)得到了有力保障。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)在聯(lián)邦學(xué)習(xí)的框架下應(yīng)用,可以比較好地實(shí)時估算全局模型聚合頻率,使得算法能夠在保證模型精度的前提下提高訓(xùn)練效率,降低學(xué)習(xí)成本。但是聯(lián)邦卷積神經(jīng)網(wǎng)絡(luò)相比于Resnet50還是存在一定差距,這主要是由于聯(lián)邦卷積神經(jīng)網(wǎng)絡(luò)考慮了用戶的隱私,并且在聯(lián)邦卷積神經(jīng)網(wǎng)絡(luò)中各用戶的卷積神經(jīng)網(wǎng)絡(luò)的架構(gòu)與Resnet50存在差異。
本次實(shí)驗(yàn)中,卷積神經(jīng)網(wǎng)絡(luò)與聯(lián)邦學(xué)習(xí)結(jié)合改善了聯(lián)邦學(xué)習(xí)的通信有效性和資源優(yōu)化問題。與此同時,聯(lián)邦學(xué)習(xí)提供的快速模糊化處理與數(shù)據(jù)獨(dú)立的特性也為魚類的檢測與識別的效率和數(shù)據(jù)保護(hù)提供了有力的支持。經(jīng)過仿真實(shí)驗(yàn)表明,聯(lián)邦卷積神經(jīng)網(wǎng)絡(luò)模型相比于傳統(tǒng)的聯(lián)邦學(xué)習(xí)在效率和模型精度方面分別提升了12%和16.3%。該研究結(jié)果有助于進(jìn)一步提升魚類檢測與識別的精度,同時為智能魚缸、智能魚類捕撈分類等提供便利。但是,該實(shí)驗(yàn)還有許多不足之處,首先實(shí)驗(yàn)用到的模型還可以進(jìn)一步優(yōu)化,比如加深模型中卷積神經(jīng)網(wǎng)絡(luò)網(wǎng)絡(luò)的深度、增加訓(xùn)練輪數(shù)等,也可以嘗試其他神經(jīng)網(wǎng)絡(luò)比如VGG等與聯(lián)邦學(xué)習(xí)進(jìn)行結(jié)合從而識別圖像。其次,實(shí)驗(yàn)對非獨(dú)立同分布用戶的訓(xùn)練模型的模擬均采用的是相同卷積神經(jīng)網(wǎng)絡(luò),然而在實(shí)際生活中,由于不同地區(qū)、不同環(huán)境下用戶的數(shù)據(jù)分布情況是不同的,用戶的模型也是有差異的,如果直接視為一類進(jìn)行上傳聚合,生成的模型與目標(biāo)模型必定存在偏差。最后,在聯(lián)邦學(xué)習(xí)與深度學(xué)習(xí)的結(jié)合方面還面臨諸多挑戰(zhàn)。在非獨(dú)立同分布數(shù)據(jù)的處理方面還存在很大的不足。對獨(dú)立同分布數(shù)據(jù)和非獨(dú)立同分布數(shù)據(jù)缺乏有效的優(yōu)化算法來提高模型的收斂速度。后續(xù)研究還可以根據(jù)聯(lián)邦學(xué)習(xí)適當(dāng)調(diào)整機(jī)器學(xué)習(xí)的工作或算法,從而提高模型的性能。