周可鑫,左云波,谷玉海,朱騰騰,卞景藝
(北京信息科技大學(xué) 現(xiàn)代測控技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,北京 100192)
隨著經(jīng)濟(jì)水平和互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,人們的消費(fèi)觀念也隨之在發(fā)生變化。從傳統(tǒng)的線下消費(fèi)到線上的網(wǎng)店消費(fèi),再到現(xiàn)在逐漸起步的線下新零售方式,人們不僅重視線上消費(fèi)的便利,還重視線下消費(fèi)的體驗(yàn)[1]。因此,對于傳統(tǒng)線下消費(fèi)場所來說,從商品的供應(yīng)到商品流通的各個環(huán)節(jié)都急需升級改造,來滿足顧客們的消費(fèi)體驗(yàn)。其中,商品結(jié)算環(huán)節(jié)是線下消費(fèi)過程中最重要的一環(huán),傳統(tǒng)的結(jié)算方式還是以人工為主,由收銀員一步一步完成商品的清點(diǎn)和結(jié)算工作,效率非常低,尤其在節(jié)假日,顧客會花費(fèi)大量時間用于排隊(duì)結(jié)算,這大大影響了顧客的消費(fèi)體驗(yàn)。因此,提出一種能滿足自動清點(diǎn),實(shí)時結(jié)算,方便部署且具有很高的應(yīng)用價值以及學(xué)術(shù)價值[2]的零售商品檢測方法尤為重要?;趫D像識別檢測的無人結(jié)算是無人結(jié)算中的一種重要技術(shù)方法。
圖像的目標(biāo)檢測是計(jì)算機(jī)視覺領(lǐng)域的一個重要分支,其目的是檢測出圖片上的所有目標(biāo)的類別信息以及位置信息[3]。2012年ImageNet大賽之后,深度神經(jīng)網(wǎng)絡(luò)得到了飛速發(fā)展,其中最具代表的就是卷積神經(jīng)網(wǎng)絡(luò)的快速發(fā)展,已經(jīng)廣泛應(yīng)用到了目標(biāo)檢測領(lǐng)域中。目前,基于深度學(xué)習(xí)的目標(biāo)檢測方法主要有兩大類,一類是基于提取候選框的兩階段檢測算法,代表有:R-CNN[4]、Fast R-CNN[5]、Faster R-CNN[6]等。此類算法在工作時首先會生成一系列的候選框,之后根據(jù)候選框完成相應(yīng)的分類識別工作。這些算法的優(yōu)點(diǎn)是檢測精度高,缺點(diǎn)是檢測速度較慢,普遍不滿足實(shí)時檢測的需求。另外一類是基于回歸問題的單階段檢測算法,代表有:YOLOv1[7]、YOLOv2[8]、YOLOv3[9]算法以及SSD系列算法[10]。此類算法檢測速度非???,但是精度低。目前,檢測性能最優(yōu)的算法是由Alex等在2020CVPR會議上提出的YOLOv4算法,與YOLOv3相比,YOLOv4算法將COCO數(shù)據(jù)集的檢測精度提高了10%,速度提升了12%[11]。近幾年,學(xué)者們還致力于研究在移動端如手機(jī)和嵌入式平臺運(yùn)行的目標(biāo)檢測網(wǎng)絡(luò),這一類網(wǎng)絡(luò)普遍體積較輕,且性能良好,部署方便。這類網(wǎng)絡(luò)結(jié)構(gòu)代表有:MobileNetV1[12]、MobileNetV2[13]、Mobile-NetV3[14]、ShuffleNetV1[15]、ShuffleNetV2[16]等。由于這類網(wǎng)絡(luò)可以部署靈活,使用方便,因此這類算法是目前目標(biāo)檢測領(lǐng)域研究的重點(diǎn)。
在前人的研究基礎(chǔ)上,本文提出一種改進(jìn)的YOLO-GT目標(biāo)檢測算法,部署在Jetson nano核心板上用于零售商品RPC數(shù)據(jù)集目標(biāo)檢測。YOLOv3-Tiny是YOLOv3的簡化版,其結(jié)構(gòu)輕便,可部署在嵌入式平臺工作,運(yùn)行速度與YOLOv3相比要快得多,但缺點(diǎn)是精度低,尤其是對于小目標(biāo)物體檢測來說效果更差。借鑒特征金字塔(FPN)[17]的思想,將YOLOv3-Tiny網(wǎng)絡(luò)的淺層信息與深層信息充分融合,將2個預(yù)測尺度變?yōu)?個預(yù)測尺度,增強(qiáng)對小目標(biāo)檢測的能力。此外,還借鑒了華為公司在2020年CVPR會議提出的線性擴(kuò)展卷積層(Ghostmodule)[18]的思想對網(wǎng)絡(luò)中的卷積層進(jìn)行優(yōu)化,提高網(wǎng)絡(luò)的計(jì)算速度,減少網(wǎng)絡(luò)在工作時所耗費(fèi)的資源,在已經(jīng)增加網(wǎng)絡(luò)層數(shù)的情況下,保證檢測時間不受太大影響。同時,對于激活函數(shù)進(jìn)行更新,利用Mish[19]激活函數(shù)替代原先的Leaky Relu和ReLu激活函數(shù),進(jìn)一步優(yōu)化提升網(wǎng)絡(luò)的非線性擬合能力。最后,重新根據(jù)數(shù)據(jù)集優(yōu)化先驗(yàn)框的數(shù)目和尺寸,提升網(wǎng)絡(luò)在預(yù)測時的檢測精度和速度。將改進(jìn)的YOLOv3-Tiny網(wǎng)絡(luò)命名為YOLO-GT。經(jīng)過實(shí)驗(yàn),對于同一商品數(shù)據(jù)集YOLO-GT與YOLOv3-Tiny相比,mAP提升了1.84%。檢測單張圖片速度提升464 ms。與原YOLOv3-Tiny網(wǎng)絡(luò)相比性能得到提升,并且滿足無人結(jié)算的使用要求。
基于深度學(xué)習(xí)的目標(biāo)檢測網(wǎng)絡(luò)主要由3個部分組成,首先是用于特征提取的主干網(wǎng)絡(luò)(Back-Bones)部分,其次是用于特征融合的分析網(wǎng)絡(luò)部分(Neck),最后是用于結(jié)果預(yù)測的部分(Heads)。在YOLOv3-Tiny中,用于特征提取的網(wǎng)絡(luò)由7個3×3的卷積層以及6個步長為2的池化層組成[20]。特征融合部分依然采用YOLOv3的思想,借鑒FPN思想,將網(wǎng)絡(luò)淺層信息與深層信息融合。實(shí)現(xiàn)了2個尺度(13×13,26×26)的預(yù)測,保證了對小目標(biāo)物體檢測的能力。同時,每個尺度依然分配3個先驗(yàn)框(anchor box),可實(shí)現(xiàn)多目標(biāo)檢測,不僅加快模型收斂的速度,還保證了預(yù)測精度。預(yù)測部分與YOLOv3也相同,由YOLO層完成。YOLO層之前的卷積層的卷積核個數(shù)由類別數(shù)確定,計(jì)算公式為:
YOLOv3-Tiny的結(jié)構(gòu)如圖1所示。
圖1 YOLOv3-Tiny網(wǎng)絡(luò)結(jié)構(gòu)圖
YOLOv3-Tiny的損失函數(shù)依然延續(xù)整個YOLO系列算法的思想,由3個部分組成。分別是定位損失,分類損失以及置信度損失[21]。網(wǎng)絡(luò)訓(xùn)練時,YOLO的每個單元格會預(yù)測多個邊界框,最終只選擇與目標(biāo)框(ground truth)目標(biāo)具有最高IOU的那個框作為預(yù)測框(bounding box)。YOLOv3-Tiny使用預(yù)測值和目標(biāo)框之間的誤差平方求和來計(jì)算損失。每個目標(biāo)框的目標(biāo)僅僅與一個先驗(yàn)框相關(guān)聯(lián)。如果一個目標(biāo)框的目標(biāo)沒有分配先驗(yàn)框,則不會導(dǎo)致分類損失和定位損失,只會擁有置信度損失。YOLOv3-Tiny的損失函數(shù)計(jì)算公式為:
1.2.1 定位損失
YOLOv3-Tiny相比于前幾個版本的YOLO算法,在定位損失計(jì)算上有所不同。YOLOv3-Tiny的預(yù)測框(bounding box)生成與先驗(yàn)框(anchor box)有關(guān)。網(wǎng)絡(luò)在生成預(yù)測框時,不再直接預(yù)測預(yù)測框的具體尺寸,而是首先預(yù)測出預(yù)測框與先驗(yàn)框相比的寬高偏移值(tw,th)以及相對單元格的中心坐標(biāo)的偏移值(tx,ty),再經(jīng)過計(jì)算得到具體的預(yù)測邊界框尺寸,如圖2所示。
圖2 先驗(yàn)框與預(yù)測框關(guān)系示意圖
圖中的虛線框?yàn)橄闰?yàn)框,實(shí)線框?yàn)轭A(yù)測框。其中pw和ph為先驗(yàn)框的寬高尺寸,bw和bh為預(yù)測框的具體寬高尺寸,由偏移值和先驗(yàn)框的尺寸計(jì)算得到。cx和cy為單元格左上角點(diǎn)相對于整張圖片的坐標(biāo)值。σ()為引用的Sigmoid函數(shù),目的是將偏移值tx、ty壓縮到(0,1)之間,保證模型可以正常收斂。bx和by為計(jì)算得到的邊界框具體的中心點(diǎn)坐標(biāo)。由于網(wǎng)絡(luò)預(yù)測出的是邊界框的各項(xiàng)偏移值,因此計(jì)算定位損失主要是以偏移值為主,式(3)為計(jì)算定位損失的公式:
式中:txi、tyi、twi、thi為預(yù)測框的中心點(diǎn)坐標(biāo)偏移值以及寬高偏移值;為目標(biāo)框的中心點(diǎn)偏移值以及寬高偏移值;M為單元格數(shù)目;N為每個單元格預(yù)測預(yù)測框的數(shù)目;代表目標(biāo)性,當(dāng)檢測目標(biāo)的中點(diǎn)落入第i個單元格中的第j個預(yù)測框時取1,否則取0;λcoordinate為2部分損失各自所占權(quán)重大小。
1.2.2 分類損失
YOLOv3-Tiny網(wǎng)絡(luò)在訓(xùn)練時,利用二元交叉熵?fù)p失作為分類損失。摒棄了softmax分類器,將分類問題轉(zhuǎn)化成了回歸問題,可實(shí)現(xiàn)多目標(biāo)分類,分類損失計(jì)算公式為:
式中:M為單元格數(shù)目;代表目標(biāo)性,當(dāng)?shù)趇個單元格包含有目標(biāo)中心時,取1,反之取0;(pi(c)-(c))2為計(jì)算所得的條件類別概率的平方誤差;pi(c)為預(yù)測到的目標(biāo)屬于類別c的概率;為真實(shí)的條件類別概率。
1.2.3 置信度損失
若預(yù)測框中包含有檢測目標(biāo),置信度損失為:
式中:Conf表示預(yù)測框的置信度;表示單元格內(nèi)有目標(biāo),且目標(biāo)屬于類別i的條件概率。置信度分?jǐn)?shù)表示預(yù)測框與目標(biāo)的匹配程度。當(dāng)預(yù)測框中不包含檢測目標(biāo)時,同樣需要計(jì)算置信度損失,計(jì)算公式為:
在實(shí)際網(wǎng)絡(luò)訓(xùn)練過程中,大部分的預(yù)測框是不包含任何目標(biāo)的,如果不加處理直接計(jì)算,會導(dǎo)致類不平衡的問題,即在訓(xùn)練中頻繁地在檢測背景而不是目標(biāo),為了解決這一問題,需要引入損失因子λnoobj,借助損失因子將這部分的損失所占比重降低。因此,總的置信度損失為式(5)和式(7)之和:
綜合考慮原YOLOv3-Tiny在識別時的各種問題,從改變網(wǎng)絡(luò)結(jié)構(gòu)以及優(yōu)化訓(xùn)練方案2個方向出發(fā),對YOLOv3-Tiny進(jìn)行優(yōu)化,提出YOLO-GT網(wǎng)絡(luò)。
2.1.1 線性擴(kuò)展的卷積層
在各種CNN模型中,圖像經(jīng)過卷積層的處理會生成大量的特征圖,這些生成的特征圖并不都是獨(dú)一無二的,大部分的特征圖與特征圖之間存在很大的相似性,我們將其稱之為特征圖的冗余[18]。特征圖的冗余對于網(wǎng)絡(luò)訓(xùn)練是非常重要的。圖3為ResNet-50網(wǎng)絡(luò)某一個卷積層輸出的特征圖可視化。
圖3 ResNet-50特征圖可視化
圖3中圈出了3組相似的特征圖。線性擴(kuò)展卷積層思想著眼于卷積層生成的特征圖冗余,提出在生成特征圖時,一部分特征圖代表著圖像的本質(zhì)特征,而另一部分特征則是與本質(zhì)特征相似的冗余特征,在生成冗余特征時,無需按部就班借助大量卷積核生成,可用一系列簡單的線性操作代替卷積核生成特征圖冗余,這樣做不僅可以加快網(wǎng)絡(luò)的計(jì)算速度,還可以減輕網(wǎng)絡(luò)的“重量”。因此可對普通卷積層進(jìn)行修改,分2步生成完整的特征圖,如圖4所示。
圖4 卷積層特征圖
從圖4(a)(b)中可看出,在普通卷積層的操作中,可直接生成特征圖。而線性擴(kuò)展卷積層是將卷積層分為了2個部分,首先是利用普通的少量卷積對輸入圖像進(jìn)行操作,生成圖像的本質(zhì)特征。之后利用一系列的線性操作,通過本質(zhì)特征生成更多的特征,這部分新生成的特征就是冗余特征,最后將2個部分特征堆疊,完成整個卷積操作。利用線性操作生成特征圖這一步驟中,借鑒了深度可分離卷積的思想(depthwise separable convolution)[22],對每一個本質(zhì)特征圖都會進(jìn)行線性操作,生成冗余特征圖。整個過程可以表示為:
式中:f′表示少量的卷積核;Y′表示生成的本質(zhì)特征圖集合;y′i表示本質(zhì)特征圖集合中的第i個特征圖;δi,j表示用于生成第j個冗余特征圖的第j個線性計(jì)算公式;yi,j表示生成的冗余特征圖集合。一共可以得到m·s個特征圖。這里的線性操作選擇3×3卷積操作。因?yàn)榫矸e是一個高效的計(jì)算方式,不僅涵蓋了很多廣泛使用的線性計(jì)算,而且硬件對于卷積也提供了很好的支持。使用線性擴(kuò)展卷積層思想的卷積層,能有效降低卷積計(jì)算的成本,加快網(wǎng)絡(luò)的計(jì)算時間。借助線性擴(kuò)展卷積層的思想,對YOLOv3-Tiny主干網(wǎng)絡(luò)中的卷積層進(jìn)行優(yōu)化,使得主干網(wǎng)絡(luò)變得輕量化的同時,提升網(wǎng)絡(luò)提取圖片特征信息的速度。
2.1.2 特征融合優(yōu)化
在特征融合優(yōu)化方面,依然借助FPN的思想,充分利用網(wǎng)絡(luò)的淺層信息和深層信息,采用上采樣的方式融合網(wǎng)絡(luò)淺層特征和深層特征,得到不同尺度的特征預(yù)測圖。具體操作是,將網(wǎng)絡(luò)的第15層輸出特征與第48層輸出特征融合,將網(wǎng)絡(luò)的第17層輸出特征與第37層特征融合,使得原2個預(yù)測尺度的網(wǎng)絡(luò)變?yōu)?個預(yù)測尺度網(wǎng)絡(luò),增強(qiáng)了網(wǎng)絡(luò)對于小目標(biāo)商品的檢測能力。網(wǎng)絡(luò)層數(shù)雖然較之前更深了,但是上述卷積層的優(yōu)化正好彌補(bǔ)了這一部分改變可能帶來的負(fù)面作用,使得網(wǎng)絡(luò)變得更加輕便,更加緊湊。優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)得到的YOLO-GT網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。
圖5 YOLO-GT網(wǎng)絡(luò)結(jié)構(gòu)圖
2.2.1 Mish激活函數(shù)的使用
YOLOv3-Tiny的激活函數(shù)選擇的是ReLu和Leaky ReLu。盡管這2個激活函數(shù)已經(jīng)被廣泛應(yīng)用到深度學(xué)習(xí)領(lǐng)域,甚至成為激活函數(shù)的標(biāo)準(zhǔn)選擇,但是在實(shí)際使用的過程中,還是有一些無法忽略的缺點(diǎn)。如圖6所示,Relu在x>0的區(qū)域是正比例曲線,避免了梯度飽和以及梯度爆炸的情況發(fā)生,但是在x<0的區(qū)域,Relu將所有的值都置為0。在網(wǎng)絡(luò)實(shí)際運(yùn)行過程中,x小于0時對應(yīng)的梯度也小于0,導(dǎo)致后續(xù)神經(jīng)元的梯度都為0,造成“神經(jīng)元壞死”現(xiàn)象,影響網(wǎng)絡(luò)的訓(xùn)練測試效果。此外,ReLu不是0均值輸出,會造成偏置現(xiàn)象,對數(shù)據(jù)的分布變動影響較大。
圖6 ReLU激活函數(shù)曲線
如圖7所示的Leaky ReLu彌補(bǔ)了ReLu的不足,用一個非常小斜率的正比例函數(shù)處理x<0情況的值,避免了“神經(jīng)元壞死”的現(xiàn)象發(fā)生,使得ReLu在負(fù)區(qū)域以激活替代之前的置0,保留部分x<0的信息,使得網(wǎng)絡(luò)在訓(xùn)練階段更加穩(wěn)定。
圖7 LeakyReLU函數(shù)曲線
選擇Mish激活函數(shù)替換原有的Relu以及Leaky Relu。Mish激活函數(shù)的公式為:
式(11)為目標(biāo)函數(shù),由相應(yīng)樣本的隸屬度以及該樣本到各個聚類中心的距離相乘得到。Mish是一個非單調(diào)光滑激活函數(shù),同時繼承了ReLu和Leaky ReLu的下有界上無界的優(yōu)點(diǎn),產(chǎn)生很強(qiáng)正則化效果的同時,又能避免發(fā)生梯度飽和和梯度消失的情況。另外,對于負(fù)區(qū)域,Mish用一條光滑曲線替換了Leaky ReLu的正比例曲線,提高了表達(dá)能力以及梯度流,同時非單調(diào)特性使得小的負(fù)輸入成為小的負(fù)輸出。此外,學(xué)者們通過大量實(shí)驗(yàn)也證明了光滑的激活函數(shù)會使得網(wǎng)絡(luò)獲得更好的信息,從而可以提高準(zhǔn)確性和泛化能力。Mish在深度網(wǎng)絡(luò)中的表現(xiàn)要優(yōu)于ReLu和Leaky ReLu。因此,本文選擇Mish作為YOLO-GT的激活函數(shù),其曲線如圖8所示。
圖8 Mish激活函數(shù)曲線
2.2.2 優(yōu)化錨框數(shù)目及尺寸
YOLOv3-Tiny根據(jù)COCO數(shù)據(jù)集,利用Kmeans算法得到9個先驗(yàn)框的具體尺寸。這里采用模糊C均值(FCM)聚類算法,以實(shí)驗(yàn)使用的RPC零售商品數(shù)據(jù)集為準(zhǔn)來重新獲取先驗(yàn)框的尺寸。FCM不同于K-means,它是以模糊概念為核心思想,基于目標(biāo)函數(shù),利用每個樣本點(diǎn)屬于某一類別的隸屬度及距離各聚類中心的距離來確定這個樣本點(diǎn)具體屬于哪一類。FCM聚類算法的目標(biāo)函數(shù)以及約束條件為:
式中:c代表想要得到的聚類個數(shù);n代表數(shù)據(jù)集中樣本點(diǎn)個數(shù);表示樣本j屬于類別i的隸屬度,m為隸屬度因子。式(12)為約束條件,即所有樣本點(diǎn)的隸屬度之和為1。當(dāng)目標(biāo)函數(shù)在約束條件下取得極小值點(diǎn)或者在一定范圍內(nèi)微小變化時,我們就認(rèn)為此時的聚類中心為迭代出來的最優(yōu)聚類中心,因此需要分別對目標(biāo)函數(shù)中的umij以及c求導(dǎo),令其導(dǎo)數(shù)為0,這樣就可以分別求出二者的迭代表達(dá)式,結(jié)果為:
步驟1根據(jù)RPC數(shù)據(jù)集的標(biāo)注信息初始化9個anchor box。
步驟2將聚類中心信息代入到式(14),迭代出隸屬度數(shù)值。
步驟3 將得到的和c代入到式(12)得到新的目標(biāo)函數(shù)值,與上一次的目標(biāo)函數(shù)值比較,若變化范圍在一定閾值內(nèi),確定此時的聚類中心為最優(yōu)聚類中心即所需最優(yōu)的anchor box,否則,進(jìn)行步驟4。
步驟4利用式(15)迭代出新的聚類中心,返回步驟2。
經(jīng)過FCM聚類算法重新得到anchor box的具體尺寸為:[49,45],[40,70],[79,50],[62,72],[51,127],[82,87],[127,72],[105,115],[147,150]。
實(shí)驗(yàn)采用曠視公司提供的RPC零售商品開源數(shù)據(jù)集,共200類商品目標(biāo)。其中訓(xùn)練集共有圖片53 736張,測試集共有圖片24 000張,圖片像素大小為1 830×1 830。圖片均采集自真實(shí)結(jié)算場景,滿足實(shí)驗(yàn)要求。使用前,將RPC零售商品數(shù)據(jù)集的格式統(tǒng)一轉(zhuǎn)換成為供darknet框架使用的VOC格式,每一張樣本圖片都有一個對應(yīng)的擁有該樣本圖片標(biāo)注信息的xml文件,再經(jīng)過進(jìn)一步轉(zhuǎn)換,將xml格式標(biāo)注文件轉(zhuǎn)化為txt格式標(biāo)注文件,完成數(shù)據(jù)集的準(zhǔn)備工作。
YOLO-GT網(wǎng)絡(luò)初始化設(shè)置信息為:將Batch和subdivisions設(shè)置為64和16,其中,Batch是指網(wǎng)絡(luò)經(jīng)過訓(xùn)練Batch張圖片后更新一次權(quán)重,subdivisions是指,網(wǎng)絡(luò)每組訓(xùn)練subdivisions張圖片。初始學(xué)習(xí)率設(shè)置為0.001,其決定網(wǎng)絡(luò)模型的參數(shù)更新的幅度大小。迭代次數(shù)設(shè)置為50 000,每經(jīng)過45 000和48 000次迭代后更改學(xué)習(xí)率,每次更改的學(xué)習(xí)率較上次相比縮小10倍。具體的網(wǎng)絡(luò)訓(xùn)練環(huán)境如表1所示。
表1 網(wǎng)絡(luò)訓(xùn)練環(huán)境
利用RPC開源數(shù)據(jù)集,同時對YOLO-GT網(wǎng)絡(luò)與YOLOv3-Tiny網(wǎng)絡(luò)進(jìn)行訓(xùn)練,得到的訓(xùn)練損失收斂圖如圖9所示,2種網(wǎng)絡(luò)單次運(yùn)行的計(jì)算次數(shù)如表2所示,工作時占用的空件大小如表3所示。
表2 計(jì)算次數(shù)
表3 占用空間大小
圖9 YOLOv3-Tiny與YOLO-GT網(wǎng)絡(luò)訓(xùn)練損失收斂圖
從圖9(a)(b)中可以看出,YOLO-GT網(wǎng)絡(luò)訓(xùn)練過程比YOLOv3-Tiny網(wǎng)絡(luò)穩(wěn)定,且收斂速度更快。最終YOLO-GT網(wǎng)絡(luò)的損失值收斂到0.6左右,YOLOv3-Tiny網(wǎng)絡(luò)損失值收斂到0.8左右,滿足訓(xùn)練停止條件,證明設(shè)置訓(xùn)練次數(shù)為50 000是合理的。
從表2中可以看出,改進(jìn)后的網(wǎng)絡(luò)單次運(yùn)行時的計(jì)算量比原網(wǎng)絡(luò)減少2.342 BFLops,這得益于對卷積層的優(yōu)化,較少的計(jì)算量保證了網(wǎng)絡(luò)提取圖片特征的速度得到了提升,同時,從表3可以看出,YOLO-GT工作時占用的空間大小約為YOLOv3-Tiny的1/4,大大減少了對于資源的占用,更易于部署運(yùn)行在嵌入式平臺或其他移動端。
將訓(xùn)練好的網(wǎng)絡(luò)模型移植到Jetson Nano核心板上,利用RPC數(shù)據(jù)集中的測試集部分對各網(wǎng)絡(luò)模型進(jìn)行測試,選擇平均檢測準(zhǔn)確率(mAP)和召回率(Recall)以及網(wǎng)絡(luò)檢測時間(ms)作為評價指標(biāo)。其中平均檢測準(zhǔn)確率是準(zhǔn)確率(AP)的平均值,準(zhǔn)確率指的是預(yù)測正確的結(jié)果占總樣本的百分比。平均檢測準(zhǔn)確率及準(zhǔn)確率的計(jì)算公式為[23]:
式中:m為類別總數(shù);Precisionc為類別c的精確率之和;Nc為包含類別c的圖片之和。Precisionc是指在被所有預(yù)測為類別c的樣本中實(shí)際為樣本c的概率,計(jì)算公式為:
召回率(Recall)是指實(shí)際為正的樣本被預(yù)測為正樣本的概率。在這里是指所有被正確檢測出的類別c個數(shù)占類別c樣本總個數(shù)的比例,計(jì)算公式為:
式中:N(True)c代表正確檢測出類別c的樣本數(shù)目;N(True)c代表類別c樣本集中沒有被檢測出的數(shù)目。
網(wǎng)絡(luò)在訓(xùn)練的過程中,每經(jīng)過4次epoch對測試集進(jìn)行一次檢測,并記錄檢測結(jié)果mAP。其中1次epoch是指網(wǎng)絡(luò)對數(shù)據(jù)集進(jìn)行一次完整的訓(xùn)練。2個網(wǎng)絡(luò)檢測測試集的mAP變化如圖10所示。
圖10 mAP變化曲線
圖10中的實(shí)線表示的是YOLO-GT網(wǎng)絡(luò)的平均檢測精度變化趨勢,虛線表示的是YOLOv3-Tiny網(wǎng)絡(luò)的平均檢測精度變化趨勢。從圖中可以看到,在前20 000次左右的訓(xùn)練迭代中,YOLOv3-Tiny對于測試集的檢測精度要比改進(jìn)后的網(wǎng)絡(luò)高。但是之后YOLOv3-Tiny網(wǎng)絡(luò)的檢測精度突然變差,從93%突然降到了52%。而YOLO-GT的檢測精度一直在平穩(wěn)上升,在經(jīng)過25 000次左右迭代后平均檢測精度超過了YOLOv3-Tiny網(wǎng)絡(luò)。最終YOLOv3-Tiny的平均檢測精度穩(wěn)定在95%左右,YOLO-GT的平均檢測精度穩(wěn)定在97%左右。最終選擇二者最佳檢測精度作為最終結(jié)果記錄下來。
實(shí)驗(yàn)時,還選擇引入YOLO的其他版本Tiny網(wǎng)絡(luò)進(jìn)行訓(xùn)練測試,得到各自最優(yōu)的檢測精度以及召回率,結(jié)果如表4所示。
表4 不同網(wǎng)絡(luò)對于RPC數(shù)據(jù)集的檢測結(jié)果%
從表中4中的數(shù)據(jù)可以看出,YOLO-GT的平均檢測精度與YOLOv3-Tiny相比,增長了1.84個百分點(diǎn),與YOLOv2-Tiny相比,增長了8.62個百分點(diǎn),與Tiny-YOLO相比,增長了36.35個百分點(diǎn)。召回率方面,YOLO-GT與YOLOv3-Tiny相比增長了2.08個百分點(diǎn),與YOLOv2-Tiny相比,增長了7.55個百分點(diǎn),與Tiny-YOLO相比,增長了37.4個百分點(diǎn)。從綜合比較結(jié)果來看,YOLO-GT具有較高的檢測性能,提升了原YOLOv3-Tiny網(wǎng)絡(luò)的檢測精度,并且通過與其他版本的Tiny網(wǎng)絡(luò)比較優(yōu)勢更為明顯,準(zhǔn)確率和召回率均已經(jīng)超過了95%,滿足RPC目標(biāo)檢測的基本要求。其次,對各網(wǎng)絡(luò)對于每張圖片的平均檢測時間進(jìn)行了記錄,結(jié)果如表5所示。
表5 不同網(wǎng)絡(luò)對于RPC數(shù)據(jù)集的檢測速度
從表5中可以看出,YOLO-GT的檢測速度為342.67 ms,與YOLOv3-Tiny相比提升469.56 ms,約57.81%。得益于對卷積層的優(yōu)化,網(wǎng)絡(luò)在檢測時速度得到了很大提升,更容易滿足實(shí)時檢測的使用需求。
綜合以上所得的性能指標(biāo)信息,可以看出改進(jìn)后的YOLO-GT提升檢測速度的同時,準(zhǔn)確率也有小幅度提升。同時,YOLO-GT自身輕便,很容易部署在嵌入式平臺或其他移動端平臺,方便使用。從各類數(shù)值分析可以得出結(jié)論,優(yōu)化改進(jìn)得到的新目標(biāo)檢測網(wǎng)絡(luò)YOLO-GT網(wǎng)絡(luò)在計(jì)算速度,檢測速度,平均準(zhǔn)確率,召回率等方面都有所提升,單張檢測時間342.67 ms證明可實(shí)現(xiàn)實(shí)時RPC目標(biāo)檢測,具有良好的性能。接下來將通過實(shí)際檢測場景對比進(jìn)一步說明YOLO-GT網(wǎng)絡(luò)的高性能。
利用真實(shí)場景拍到的圖片數(shù)據(jù)對網(wǎng)絡(luò)進(jìn)行測試。如圖11所示,共列舉出來了4種檢測對比圖,其中左側(cè)為YOLOv3-Tiny的檢測圖,右側(cè)為YOLO-GT的檢測圖。前2組為少量商品的檢測結(jié)果圖,從圖中可以看到,YOLOv3-Tiny對小目標(biāo)商品的檢測效果較差,出現(xiàn)了漏檢的現(xiàn)象。此外,商品之間間距較小時,YOLOv3-Tiny的檢測準(zhǔn)確率也偏低,漏檢現(xiàn)象更為明顯。作為對比,YOLO-GT對于小目標(biāo)商品檢測效果較好,同時在商品間距變小時,依然表現(xiàn)出了較高的檢測準(zhǔn)確率。后2組為大數(shù)量商品場景的檢測結(jié)果圖,從圖中可以看出YOLOv3-Tiny漏檢現(xiàn)象更為明顯,而且還出現(xiàn)了錯檢現(xiàn)象。YOLO-GT網(wǎng)絡(luò)在大數(shù)量商品場景下表現(xiàn)更為優(yōu)越,即使商品數(shù)量多,彼此間隔小,依然可以全部正確檢測出來。通過綜合分析可以得出結(jié)論,改進(jìn)得到Y(jié)OLO-GT網(wǎng)絡(luò)的檢測性能優(yōu)于YOLOv3-Tiny,尤其是對于小目標(biāo)商品檢測以及大數(shù)量商品檢測,同時,YOLO-GT的漏檢率和錯檢率都遠(yuǎn)遠(yuǎn)低于YOLOv3-Tiny。YOLO-GT表現(xiàn)出較高的檢測性能,檢測速度和檢測準(zhǔn)確率均滿足使用要求。
圖11 YOLOv3-Tiny與YOLO-GT檢測圖
以YOLOv3-Tiny網(wǎng)絡(luò)為基礎(chǔ)進(jìn)行優(yōu)化,提出一種用于零售商品RPC自動結(jié)算場景的新的目標(biāo)檢測網(wǎng)絡(luò)YOLO-GT。YOLO-GT主要對原網(wǎng)絡(luò)的卷積層以及特征融合方式進(jìn)行了線性擴(kuò)展與FPN融合優(yōu)化,利用Mish函數(shù)優(yōu)化激活函數(shù)以及FCM優(yōu)化先驗(yàn)框的尺寸和數(shù)目,保證網(wǎng)絡(luò)變得輕便的同時準(zhǔn)確率也可以得到小幅度提高。最終,利用曠視RPC零售商品數(shù)據(jù)集在嵌入式平臺Jetson Nano進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明YOLO-GT對于零售商品數(shù)據(jù)集的mAP與YOLOv3-Tiny相比提高1.84%,速度提高57.81%。同時,利用實(shí)景數(shù)據(jù)進(jìn)行檢測,與YOLOv3-Tiny相比降低了漏檢率和錯檢率。對于零售商品而言,YOLO-GT的檢測效果更佳,滿足無人結(jié)算的使用要求,具有很強(qiáng)的應(yīng)用價值。