琚恭偉,焦慧敏,張佳明,暴泰焚,蔡吉飛
(北京印刷學(xué)院 機電工程學(xué)院,北京 102600)
全球新冠疫情蔓延,使得醫(yī)用外科手套需求量激增。醫(yī)用外科手套具有左右手之分,包裝過程中,依靠人工識別和手動分揀,但是長時間人工分揀,容易產(chǎn)生錯檢、漏檢。為了提高生產(chǎn)效率,急需采用自動化方式代替人工分揀,實現(xiàn)左右手套識別問題。本文使用深度學(xué)習(xí)技術(shù),搭載相應(yīng)的圖像采集裝置,完成醫(yī)用外科手套的左右手識別,提高分揀過程中的自動化程度。
隨著計算機視覺和深度學(xué)習(xí)的快速發(fā)展,使得自動化和智能化包裝方式取得巨大進步。Hinton[1]等人使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)參加ILSVRC(ImageNet Large Scale Visual Recognition Challenge)圖像分類大賽,證明了深度學(xué)習(xí)的潛力。目前,基于CNN的目標檢測算法大致可以分為兩類,一類為“two-stage detection”(兩步驟檢測),另一類為“one-stage detection”(單步驟檢測)[2]?!皌wostage detection”即基于候選區(qū)域的目標檢測算法,這是一個“從粗到細”的過程,先根據(jù)不同的區(qū)域選擇算法從圖像中選擇多個感興趣的領(lǐng)域,然后通過深度學(xué)習(xí)提取特征并分類檢測。T.-Y.Lin[3]等人提出的FPN(feature pyramid networks)算法,采用了特征金字塔網(wǎng)絡(luò)結(jié)構(gòu),在檢測各種尺度的目標方面取得巨大的進步。“one-stage detection”即基于回歸的目標檢測算法,在將一張圖像進行分割操作,使其成為多個候選區(qū)域的同時,被分割出來的區(qū)域的邊界框和目標的概率也會被預(yù)測出來,這樣就可以在犧牲部分定位精度的情況下,大大提升檢測速度。YOLO(You Only Look Once)v5被Jocher[4]提出,作為目前較為領(lǐng)先的目標檢測技術(shù),YOLOv5在推理速度上表現(xiàn)優(yōu)異。
外科手套在充氣狀態(tài)下進行品質(zhì)檢測和左右手的識別。由于上道工序?qū)κ痔椎膴A持位置不同,導(dǎo)致充氣后的手套狀態(tài)各異,使得對目標定位困難。郭[5]利用膚色檢測和背景差分方法相結(jié)合的方式實現(xiàn)人手的定位和跟蹤。張[6]提出基于梯度方向直方圖特征的主成份分析方法,對視頻中單手或者雙手的手部分割和跟蹤具有較好的輔助作用。Bao[7]對卷積神經(jīng)網(wǎng)絡(luò)模型的反向傳播過程進行分析,采用不同的損失函數(shù)在模型中學(xué)習(xí)相同次數(shù),分析比較學(xué)習(xí)結(jié)果,優(yōu)化了反向傳播過程,并應(yīng)用于人手的左右手識別,提高了識別正確率。
本文提出在YOLOv5目標檢測算法的前提下,使用復(fù)制多份數(shù)據(jù)集的方法,減少人工labelimg標注的時間,提高數(shù)據(jù)的有效性和模型的準確性。
YOLOv5模型集成了FPN多尺度檢測及Mosaic數(shù)據(jù)增強和SPP結(jié)構(gòu),整體結(jié)構(gòu)可以分為四個模塊,具體為:輸入端(Input)、主干特征提取網(wǎng)絡(luò)(Backbone)、Neck與輸出層(Prediction)。
第一部分是Input,包括Mosaic數(shù)據(jù)增強、自適應(yīng)錨框計算、自適應(yīng)圖片縮放三大部分。Mosaic數(shù)據(jù)增強是將數(shù)據(jù)集圖片以隨機縮放、隨機裁剪、隨機排布的方式進行拼接。自適應(yīng)錨框計算是指在網(wǎng)絡(luò)訓(xùn)練中,網(wǎng)絡(luò)在初始錨框的基礎(chǔ)上輸出預(yù)測框,進而和真實框進行比對,計算兩者差距,再反向迭代,更新網(wǎng)絡(luò)參數(shù)。自適應(yīng)圖片縮放常用的方式是將原始圖片統(tǒng)一縮放到一個標準尺寸,再送入檢測網(wǎng)絡(luò)中。
圖1 YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)圖
第二部分是Backbone,由Focus結(jié)構(gòu)和CSP結(jié)構(gòu)組成。Focus結(jié)構(gòu)中,切片操作是最為重要的。例如,輸入一個原始圖像,其大小為608×608×3,對其進行切片操作,這樣就能使其成為一個304×304×12的特征圖,之后經(jīng)過32個卷積核進行一次卷積操作,這樣就可以得到一個304×304×32的特征圖。CSPDarknet53是借鑒了CSPNet并在Yolov3所使用的主干特征提取網(wǎng)絡(luò)Darknet53的基礎(chǔ)上,將resblock_body的結(jié)構(gòu)進行修改并使用CSPnet結(jié)構(gòu),而產(chǎn)生的主干特征提取網(wǎng)絡(luò)Backbone結(jié)構(gòu)。這樣可以有效的增強卷積神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力,在保證其運行準確性的同時,使CNN更加的小,這樣就可以有效降低計算瓶頸,也可以減小內(nèi)存成本。YOLOv5中分別設(shè)計和使用了兩種不同的CSP結(jié)構(gòu),其中CSP1_X結(jié)構(gòu)應(yīng)用于主干特征提取網(wǎng)絡(luò)中,同時在Neck中使用了另一種CSP2_X結(jié)構(gòu)。
第三部分是Neck,由FPN和PAN組成,F(xiàn)PN是通過向上采樣的方法將上層的特征進行傳輸融合,從而得到預(yù)測特征圖,其中含有兩個PAN結(jié)構(gòu)。FPN采用了自頂向下的結(jié)構(gòu),這樣就可以進行對于強語義特征的傳輸,特征金字塔采用了自底向上的結(jié)構(gòu),這樣就可以進行對于強定位特征的傳輸,這兩者經(jīng)過練手結(jié)合后,就可以將每一個檢測層做到特征聚合,這樣就成功提高了特征提取的能力。
第四部分是Prediction,Generalized Intersection over Union(GIOU_Loss)與Complete Intersection over Union(CIOU_Loss)目標檢測任務(wù)往往都使用損失函數(shù),損失函數(shù)一般由兩大部分構(gòu)成:回歸損失函數(shù)和分類損失函數(shù)。GIOU_Loss與CIOU_Loss都是以IOU_Loss為基礎(chǔ)發(fā)展的回歸損失函數(shù)。所需要識別的目標框和檢測框之間的重疊面積是IOU_Loss主要考慮的問題,但是它有時會存在所需要識別的目標的框和檢測框的邊界不重合的問題,GIOU_Loss解決了這個問題,但是這兩個損失函數(shù)依舊存在著沒有考慮到所需要識別的目標的框和檢測框中心點距離的信息的問題,DIOU_Loss解決了這個問題,但是DIOU_Loss存在沒有考慮所需要識別的目標的框和檢測框的寬高比的尺度信息的問題,而CIOU_Loss解決了這個問題。
本次實驗首先搭建YOLOv5環(huán)境,然后采集數(shù)據(jù)構(gòu)建數(shù)據(jù)集,通過labelimg工具對數(shù)據(jù)集做標簽標定,將做好的數(shù)據(jù)集放到Y(jié)OLOv5上進行訓(xùn)練,產(chǎn)生訓(xùn)練模型,最后使用生成的訓(xùn)練模型對同一測試集進行識別,得到識別結(jié)果,分析多次對測試集識別產(chǎn)生的結(jié)果,得出結(jié)論。實驗流程如圖2所示。
圖2 實驗流程圖
本文的實驗環(huán)境搭建在工作站上,服務(wù)器配置使用Ubuntu 18.04版本,CUDA Toolkit 10.1版本,深度學(xué)習(xí)框架平臺為Pytorch 1.6 版本。
在收集數(shù)據(jù)時,使用固定式相機進行拍攝,為模擬生產(chǎn)醫(yī)用外科手套現(xiàn)場,采集到的圖片為同一背景。在醫(yī)用外科手套充滿氣的狀態(tài)下,從底部對其進行拍照,充分考慮實際醫(yī)用外科手套的氣密性檢測狀態(tài),從其正下方拍照,通過旋轉(zhuǎn)、平移、俯仰手套等實際情況,收集手套在各個角度下的圖片數(shù)據(jù),同時刪除數(shù)據(jù)集中人眼識別較低的圖片,共收集2378張照片,以此來增強數(shù)據(jù)的真實性,之后將收集到的數(shù)據(jù)分為三組,分別為訓(xùn)練集、驗證集和測試集,比例為3∶2∶1。
針對數(shù)據(jù)集中的圖片,采用labelimg工具進行框選標注,將醫(yī)用外科手套左手的圖片標注為left,右手為right,標注范例如圖3所示。
圖3 labelimg軟件標注圖
將收集到的數(shù)據(jù)集和相對應(yīng)的標簽文件,按照訓(xùn)練集、驗證集、測試集的順序放到相對應(yīng)的文件夾中,然后配置訓(xùn)練模型的參數(shù),通過終端輸入訓(xùn)練命令,模型的訓(xùn)練次數(shù)Epochs設(shè)為500;批次大小Batch size是指訓(xùn)練時一次性輸入網(wǎng)絡(luò)的圖片數(shù)目,與顯卡的顯存大小有關(guān),將其設(shè)為16;提高輸入分辨率在一定程度上會提高小目標檢測精度,所以輸入分辨率img-size的原始值為640。
為驗證復(fù)制訓(xùn)練集和驗證集的方法對系統(tǒng)識別準確率的影響,本實驗通過使用YOLOv5s訓(xùn)練框架對數(shù)據(jù)集進行訓(xùn)練,對同一組訓(xùn)練集和驗證集,復(fù)制一份到十份,對其逐一進行訓(xùn)練,得到訓(xùn)練模型,將訓(xùn)練出來的模型,對相同的測試集進行測試,得到平均得分、錯識別率、漏識別率以及準確率,結(jié)果如表1所示,結(jié)果趨勢如圖4所示。
圖4 實驗趨勢圖
表1 實驗結(jié)果對比
平均得分是測試之后產(chǎn)生具有識別標識部分得分的平均值,錯識別率是測試之后產(chǎn)生具有標識部分醫(yī)用外科手套左右手辨別錯誤占總數(shù)的比率,漏識別率是測試之后具有醫(yī)用外科手套左右手但未檢測出來的圖片占總數(shù)的比率,準確率是測試之后正確識別醫(yī)用外科手套左右手占所有測試圖片總數(shù)的比率,僅對本文實驗數(shù)據(jù)集的數(shù)據(jù)有效。錯識別圖:如圖5(a)所示,第一輪原始數(shù)據(jù)右手的一張圖,圖5(b)所示,第六輪復(fù)制五份右手的一張圖;識別得分低圖:如圖5(c)所示,第一輪原始數(shù)據(jù)右手的識別圖,圖5(d)所示,第三輪復(fù)制兩份左手的一張圖;漏識別圖:如圖5(e)所示,第一輪原始數(shù)據(jù)左手的一張圖。本文測試結(jié)果,此處為第十輪識別結(jié)果部分數(shù)據(jù)結(jié)果截圖,如圖6所示。
圖5 錯識別、低識別、漏識別示例圖
圖6 第十輪識別結(jié)果部分數(shù)據(jù)圖
實驗過程中每一輪對測試集單張圖片測試時間在0.004s到0.005s之間,訓(xùn)練速度基本一致。
通過對比實驗過程中的數(shù)據(jù),在第一輪原始數(shù)據(jù)和第二輪復(fù)制一份的時候,正確率較低,漏識別率和錯誤率較高。到第五輪復(fù)制四份的時候,訓(xùn)練模型的準確率滿足實際生產(chǎn)需求。在第六輪復(fù)制五份、第七輪復(fù)制六份、第九輪、復(fù)制八份的實驗中,出現(xiàn)對一部分圖識別錯誤的情況,這些錯誤識別圖是收集數(shù)據(jù)的時候光線較強烈,對于光線較強的時候,該模型還是具有缺陷。為滿足工業(yè)生產(chǎn)識別需求,在生產(chǎn)過程中添加控制光照不變的裝置,收集該狀態(tài)下的數(shù)據(jù)集,以減少光照對識別的影響,進而減少錯誤率。
通過對比可得出結(jié)論:同一數(shù)據(jù)集使用復(fù)制訓(xùn)練集和驗證集的方式可以增加準確率,本實驗使用復(fù)制的方法和YOLOv5模型中的Mosaic數(shù)據(jù)增強不沖突,此方法是在Mosaic數(shù)據(jù)增強基礎(chǔ)上進行實驗。對于模型準確率,仍需要做多次實驗,得到最優(yōu)的訓(xùn)練模型,避免光照、色差等因素的影響。
本文采用YOLOv5目標檢測算法,研究了固定式攝像頭對醫(yī)用外科手套生產(chǎn)過程中左右手識別,收集同一背景、同一主體、不同狀態(tài)的數(shù)據(jù)集,使用了復(fù)制數(shù)據(jù)集的方法,通過對比不同訓(xùn)練模型的測試結(jié)果,得出相同的數(shù)據(jù)集復(fù)制多份可以增加訓(xùn)練模型的準確性的結(jié)論,但數(shù)據(jù)集復(fù)制到一定的次數(shù)之后,訓(xùn)練模型對同一批測試集有很好的識別性,此時模型處于過擬合的一個狀態(tài)。
由于本文數(shù)據(jù)集的單一性,出現(xiàn)過擬合狀態(tài),下一步解決過擬合狀態(tài)的訓(xùn)練模型,增強模型的有效性。