蘭博鈞,陶青川
(四川大學(xué)電子信息學(xué)院,成都 610065)
在互聯(lián)網(wǎng)與人工智能高速發(fā)展的今天,數(shù)據(jù)逐步成為了企業(yè)生產(chǎn)中不可或缺的生產(chǎn)要素,在企業(yè)業(yè)務(wù)發(fā)展愈發(fā)倚重數(shù)據(jù)的同時,政府和用戶也愈發(fā)重視隱私數(shù)據(jù)的保護與合理利用?!?020年人臉識別行業(yè)研究報告》指出,人臉在日常生活中暴露度比較高,相較于其他人體生物特征更易于被動采集。這意味著人臉的信息更易于泄露,對個人可能會帶來財產(chǎn)損失,對國家可能引發(fā)國家安全問題。對于此類問題,我國于2021年11月1日正式施行《中華人民共和國個人信息保護法》,以保護個人的數(shù)據(jù)信息權(quán)益。隨著監(jiān)管力度的不斷加強,個人數(shù)據(jù)將慢慢形成一個個的數(shù)據(jù)孤島,企業(yè)如果想利用大量數(shù)據(jù)來創(chuàng)造新的價值將面臨更多阻礙。因此,如何平衡好數(shù)據(jù)利用與數(shù)據(jù)隱私保護兩方面是企業(yè)當(dāng)前亟待解決的一個難點。
谷歌的McMahan 等于2016年首次提出了聯(lián)邦學(xué)習(xí)的概念,他們采用邊緣服務(wù)器架構(gòu),先利用邊緣的移動設(shè)備對本地數(shù)據(jù)進(jìn)行計算,再將各個邊緣節(jié)點計算的模型參數(shù)上傳至服務(wù)器進(jìn)行聚合,最后再將聚合的模型參數(shù)更新至用戶的移動設(shè)備。這種方式既保護了個人隱私,又讓割裂成一塊塊的孤島數(shù)據(jù)得到了充分的利用。為了解決人臉數(shù)據(jù)隱私問題以及數(shù)據(jù)孤島問題,本文采用聯(lián)邦學(xué)習(xí)策略展開對人臉檢測的研究,在訓(xùn)練過程中使用Fedavg 算法來進(jìn)行模型參數(shù)的聚合,數(shù)據(jù)傳輸過程中通過Paillier算法來進(jìn)行數(shù)據(jù)加密,同時對YOLOv5網(wǎng)絡(luò)進(jìn)行改進(jìn):引入卷積塊的注意力模塊(convolutional block attention module,CBAM)與快速非極大值抑制(fast non-maximum suppression,F(xiàn)ast-NMS)以提升神經(jīng)網(wǎng)絡(luò)模型對人臉檢測的準(zhǔn)確度和效率。
根據(jù)應(yīng)用場景的不同,聯(lián)邦學(xué)習(xí)的架構(gòu)可以分為需要聚合服務(wù)器的網(wǎng)絡(luò)與對等網(wǎng)絡(luò)(P2P)的形式,本文采用需要聚合服務(wù)器的服務(wù)器-客戶端架構(gòu)模式,其架構(gòu)模型如圖1所示。根據(jù)數(shù)據(jù)類型的不同,聯(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,F(xiàn)TL),由于本文在不同客戶端上的人臉數(shù)據(jù)的數(shù)據(jù)特征與標(biāo)簽是一致的,即數(shù)據(jù)特征在參與訓(xùn)練的客戶端之間是對齊的,故采用HFL。HFL 的訓(xùn)練過程通常包括以下5步:
圖1 聯(lián)邦學(xué)習(xí)架構(gòu)模型
(1)各個客戶端接收服務(wù)器分發(fā)的初始化模型參數(shù)。
(2)各個客戶端使用自己的本地數(shù)據(jù)集進(jìn)行模型計算,計算后將其模型參數(shù)信息- ω使用同態(tài)加密、差分隱私等手段進(jìn)行掩飾,再發(fā)送給服務(wù)器。
(3)服務(wù)器將收到的數(shù)據(jù)進(jìn)行聚合。
(4)把服務(wù)器聚合后的結(jié)果下發(fā)給各個客戶端。
(5)各個客戶將收到的梯度進(jìn)行解密,然后更新自身的網(wǎng)絡(luò)信息進(jìn)行新的訓(xùn)練。
數(shù)據(jù)聚合過程中采用的Fedavg,分為梯度平均與模型平均兩種。設(shè)ω為當(dāng)前參數(shù)模型,為固定學(xué)習(xí)率,為訓(xùn)練數(shù)據(jù)的數(shù)量,表示第個客戶端,為客戶端數(shù)量,g為第個客戶端在ω參數(shù)模型下進(jìn)行本地訓(xùn)練得到的平均梯度。如果個客戶端之間的數(shù)據(jù)滿足獨立同分布(IID),且滿足的分布式梯度下降的前提。
如公式(1)與公式(2)所示,若服務(wù)器將新的模型參數(shù)ω或聚合各方梯度得到的加權(quán)平均梯度ˉ下發(fā)給客戶端,那么稱這種Fedavg 為梯度平均。
如公式(3)與公式(4)所示,如果客戶端先在本地得到新的模型參數(shù)ω后,服務(wù)器再將這些模型參數(shù)進(jìn)行加權(quán)平均得到新的平均模型參數(shù)ˉ并將其下發(fā)給客戶端,那么稱這種Fedavg為模型平均。在進(jìn)行YOLOv5人臉檢測的訓(xùn)練中便是采用了模型平均的方案。
聯(lián)邦學(xué)習(xí)是為了在保護數(shù)據(jù)隱私的情況下解決數(shù)據(jù)孤島問題,除了需要訓(xùn)練數(shù)據(jù)本地化、私有化,同時要通過一些數(shù)據(jù)加密的手段來保護客戶端與服務(wù)器之間傳遞的參數(shù)信息,因為這些參數(shù)的泄露也可能會導(dǎo)致訓(xùn)練數(shù)據(jù)或模型數(shù)據(jù)的泄露。常用的保護手段有同態(tài)加密與差分隱私,差分隱私可能會對訓(xùn)練數(shù)據(jù)造成噪聲干擾,故本文采用同態(tài)加密的保護手段。
根據(jù)計算類型的不同,同態(tài)加密又可分為:部分同態(tài)加密(partially homomorphic encryption,PHE)、些許同態(tài)加密(somewhat homomorphic encryption,SHE)與全同態(tài)加密(fully homomorphic encryption,F(xiàn)HE)。其中PHE 是指只支持乘法或加法一種運算的加密算法;SWHE 是指可以同時支持乘法運算和加法運算,但是計算次數(shù)有限的加密算法;FHE 是指同時支持乘法運算和加法運算且計算次數(shù)無限的加密算法?;谶_(dá)到減少加解密時間損耗的目的,采用了PHE中的加法同態(tài)加密算法Paillier。
Paillier 是1999年提出的一種可證的安全加密算法,在現(xiàn)代網(wǎng)絡(luò)安全中有著廣泛的應(yīng)用。Paillier算法通常分為3步:
(1)生成公鑰(,)與私鑰(,),如公式(5)、公式(6)、公式(7)所示。其中、為隨機生成的大素數(shù),表示整數(shù)。
(2)對數(shù)據(jù)進(jìn)行加密,得到密文,如公式(8)所示。
(3)對密文進(jìn)行解密,得到明文,如公式(9)所示。
目標(biāo)檢測算法大致可以劃分成兩類,一類是以R-CNN 系列為代表的算法,它們一般需要兩步,先采用Selective Search 或RPN 得到候選區(qū)域,再在候選區(qū)域中完成回歸任務(wù)與分類任務(wù);另一類則是以YOLO 系列為代表的算法,這類算法僅需要一次CNN 運算便可以找到目標(biāo)的位置與類別。而YOLOv5 作為YOLO 系列最新的網(wǎng)絡(luò)模型, 有著更為優(yōu)異的性能。YOLOv5s 5.0 版本網(wǎng)絡(luò)模型如圖2 所示,主要由兩個組件所構(gòu)成:Head 和BackBone(Head 部分包括了以往YOLO 模型的Neck 和Head 兩部分,YOLOv5代碼上并沒有將二者進(jìn)行區(qū)分)。其中:BackBone 先獲取人眼視覺對目標(biāo)圖像不能提取的深層信息,再由Neck 將這些不同層次的特征信息加工、融合,從而增加神經(jīng)網(wǎng)絡(luò)的表達(dá)能力,最后再通過Head 使用這些信息將圖像上的目標(biāo)種類及其位置預(yù)測出來。
圖2 YOLOv5s 5.0版本網(wǎng)絡(luò)模型
YOLOv5網(wǎng)絡(luò)也有其特點:采用Mosaic 數(shù)據(jù)增強手段增加數(shù)據(jù)豐富度、錨定框可基于訓(xùn)練數(shù)據(jù)自動計算、輸入圖像放縮至標(biāo)準(zhǔn)尺寸以減少推理時的計算量、采用Focus結(jié)構(gòu)將圖像切片以減少FLOPS 和增加速度、借鑒CSPNet網(wǎng)絡(luò)結(jié)構(gòu)用以增強學(xué)習(xí)能力,使YOLOv5網(wǎng)絡(luò)能兼顧輕量化和準(zhǔn)確性兩方面。
YOLOv5 共有s、l、m、x 四個版本,s 版本網(wǎng)絡(luò)深度與特征圖寬度最小,其他三個版本皆是在其基礎(chǔ)上加深擴寬,考慮到需要快速檢測以及后期會將網(wǎng)絡(luò)部署到嵌入式設(shè)備上,本文選用s版本用做檢測網(wǎng)絡(luò)模型。
YOLOv5s 的BackBone 相較于其他輕量級網(wǎng)絡(luò)來說具有網(wǎng)絡(luò)復(fù)雜且深度大的特點,這種特點可能會導(dǎo)致網(wǎng)絡(luò)提取的圖像特征不平衡,因此采用加入CBAM 模塊來聚焦重要信息同時抑制不重要的信息。深度學(xué)習(xí)中的注意力機制與人眼的選擇性視覺機制類似,從復(fù)雜的信息中選出更為重要的進(jìn)行關(guān)注,根據(jù)其關(guān)注的域可分為不同類型:層域、通道域、空間域、時間域、混合域,而CBAM 模塊則是結(jié)合了通道域與空間域。
加入CBAM模塊的改進(jìn)如圖3所示。
圖3 改進(jìn)后的Conv_CBAM 模塊
將改進(jìn)后的Conv_CBAM 模塊去替代Back-Bone 中Focus 后面第一個與SPP 后面第一個CBS模塊。CA 是指通道域的注意力機制,其策略如公式(10)所示,表示經(jīng)過feature map 的輸入,首先進(jìn)行AvgPool 以及MaxPool,從而得到更豐富的高層特征,這里的F與F是經(jīng)過全局平均池化與全局最大池化后的feature。再通過全連接層和激活函數(shù)來構(gòu)建通道之間的相關(guān)性,這里的與是多層感知機模型中的兩層參數(shù),而表示sigmoid 激活函數(shù)。然后合并兩個輸出得到各通道的權(quán)重信息,最后再把權(quán)重與CA 輸入的特征圖相乘得到輸出信息。其目的在于區(qū)分出特征圖不同通道的重要程度并將其量化成權(quán)重的形式,從而聚焦更重要的通道。
SA 是指空間域的注意力機制,其策略如公式(11)所示,它首先對通道維度進(jìn)行全局最大池化以及全局平均池化,然后對其輸出使用7*7卷積核進(jìn)行卷積得到空間注意力特征圖,最后將其與SA 輸入的特征圖相乘得到輸出信息。其目的在于區(qū)分出特征圖不同空間位置的有用程度并將其量化成權(quán)重的形式,從而聚焦特征圖中更主要的空間位置。
通過將CA 與SA 串行組合便可達(dá)到兩種注意力機制互補的效果,最終形成CBAM模塊。
NMS 對于目標(biāo)檢測來說是一種常用的算法,其目的在于從網(wǎng)絡(luò)最后輸出的候選框中找到最佳的目標(biāo)框。對于傳統(tǒng)的NMS 來說,一般第一步先將候選框按照其分類得分從高到低排序,第二步保留得分最高的候選框,再分別計算其他候選框與保留框之間的,若大于閾值,則刪除這個候選框,第三步則是對第二步操作進(jìn)行迭代直至沒有剩余候選框為止。
由于是對稱矩陣并且不存在候選框與自身進(jìn)行,故可對進(jìn)行上三角化,如公式(13)所示。然后對矩陣的每一列取該列最大值,將最大值與設(shè)定的閾值進(jìn)行比較,超過該閾值就將其濾除,最后剩下的便是結(jié)果。
本實驗的人臉數(shù)據(jù)集大小為:訓(xùn)練集11976張,驗證集4228 張,測試集3112 張,實驗過程中共設(shè)置了4個客戶端,故將訓(xùn)練集與驗證集隨機等分成四份并分別放置在4個客戶端上,形成訓(xùn)練數(shù)據(jù)的獨立同分布狀態(tài)。將服務(wù)器與客戶端的通信輪次設(shè)置成200輪,每輪通信時長上限為6 mins,如果服務(wù)器不能在規(guī)定時長內(nèi)完成模型收集、模型聚合與模型下發(fā)三個步驟,則視為該輪通信失敗,下一輪使用的模型參數(shù)以上一次參數(shù)為準(zhǔn)。如圖4 所示,在使用聯(lián)邦學(xué)習(xí)后,訓(xùn)練的速度有所下降,同時網(wǎng)絡(luò)模型的性能也略有降低,但是也能較好地趨近于未使用聯(lián)邦學(xué)習(xí)策略時的模型性能,保證了YOLOv5人臉檢測網(wǎng)絡(luò)處于聯(lián)邦學(xué)習(xí)策略下的可用性。
圖4 性能比較
將加入CBAM 模塊改進(jìn)后的YOLOv5與未加的YOLOv5 進(jìn)行對比,結(jié)果如表1 所示??梢钥闯?,加入CBAM 模塊后模型對人臉檢測的準(zhǔn)確率得到了一定的提升。
表1 兩種模型的準(zhǔn)確率比較
當(dāng)網(wǎng)絡(luò)將傳統(tǒng)的NMS 模塊改成Fast-NMS 模塊后,模型檢測時的總體時長有了一定的減少,可以達(dá)到我們預(yù)期的效果。測試時,設(shè)置成了每個batch 的batchsize 為688,平均每個batch 所耗時間如表2所示,其中torchvision.ops.nms()是官方庫的實現(xiàn),由于底層是用C++實現(xiàn)的,所以效果最好。
表2 測試耗時比較
本文采用聯(lián)邦學(xué)習(xí)策略來訓(xùn)練YOLOv5的人臉模型,使用Fedavg 算法將模型聚合并通過Paillier 算法把服務(wù)器與客戶端通信過程中的數(shù)據(jù)進(jìn)行加密,同時在YOLOv5 網(wǎng)絡(luò)中引入CBAM模塊與Fast-NMS 模塊。實驗結(jié)果表明,采用聯(lián)邦學(xué)習(xí)的策略訓(xùn)練模型,在保證數(shù)據(jù)隱私安全的情況下有效地解決了數(shù)據(jù)孤島問題,同時模型性能的損失在可控范圍。而CBAM 模塊與Fast-NMS 模塊分別使得模型檢測的準(zhǔn)確度與效率有所提升。