暴泰焚,焦慧敏,張皓,齊元勝,吳志鵬
(北京印刷學院,北京 102600)
目前印刷包裝過程中的很多產(chǎn)品從外觀來看具有數(shù)學上的反射對稱關系,通俗地說有左右之分,例如手套,鞋子,無線藍牙耳機等,這些產(chǎn)品在包裝前后需要識別左右以完成分揀,多數(shù)情況下主要依賴人工識別和手動分揀,自動化程度較低,效率低下,且人在長時間重復一項工作時容易疲倦而造成錯檢漏檢,嚴重影響了產(chǎn)品質(zhì)量。針對此實際問題,可以考慮應用計算機視覺技術,搭載相應的圖像采集裝置,代替人工操作,完成這類產(chǎn)品的自動快速準確識別。本文以醫(yī)用外科手套在生產(chǎn)脫模后左右手套識別為例進行實驗研究,旨在提升生產(chǎn)包裝過程的自動化程度及反射對稱關系物體的檢測識別效率。
近年來運用深度神經(jīng)網(wǎng)絡的目標檢測技術突飛猛進,其中卷積神經(jīng)網(wǎng)絡(CNN)顯著提高了計算機視覺、圖像處理等諸多任務的性能[1],之后在CNN的基礎上又發(fā)展出了許多目標檢測架構,例如RCNN[2],SPP-Net[3],F(xiàn)ast-RCNN[4],F(xiàn)aster-RCNN[5],YOLO[6]等等。關于反射對稱關系物體檢測識別的相關研究方法也由傳統(tǒng)機器學習算法發(fā)展到以卷積神經(jīng)網(wǎng)絡為基礎的深度學習算法。比如張生軍等[7]使用主成分分析法對手部特征降維,并通過左手、右手和雙手遮擋3種模式進行匹配達到左右手判別的目的。De Bellis等[8]利用人手解剖學特征構建了人手的經(jīng)驗模型,并構造了決策樹分類器來區(qū)分用戶的左右手。崔欣等[9]基于人工神經(jīng)網(wǎng)絡,在皮膚顏色模型的基礎上提出了一種基于多色彩通道和鄰居投票的人手輪廓線提取方法,通過人手分割特征提取完成了左右手識別流程。汪飛躍等[10]使用柔性力敏傳感器獲取足底壓力動態(tài)數(shù)據(jù),結(jié)合腳印外觀形狀實現(xiàn)了左右腳動態(tài)識別,并驗證了所用方法的魯棒性。鐘志權等[11]提出并驗證了首個深度卷積神經(jīng)網(wǎng)絡,用于左右眼自動判別,在識別具有多變性的眼底圖像時體現(xiàn)出高度的魯棒性。琚恭偉等[12]采用YOLOv5目標檢測算法,研究了醫(yī)用外科手套生產(chǎn)過程中的左右手識別,使用固定式攝像頭獲得同一背景、同一主體、不同狀態(tài)的數(shù)據(jù)集,通過復制數(shù)據(jù)集的方法對比不同訓練模型的測試結(jié)果,得出了相同的數(shù)據(jù)集復制多份可以增加訓練模型準確性的結(jié)論。高溯等[13]開發(fā)了基于機器視覺和卷積神經(jīng)網(wǎng)絡算法的左右手識別模型,通過將獨立采集的左右手原始數(shù)據(jù)集與運用OTSU算法二值化后的數(shù)據(jù)集的學習精度對比,證明了數(shù)據(jù)增強方法的合理性。
本文使用一種基于Transformer的端到端目標檢測(Detection Transformer,DETR)算法,以自制的醫(yī)用外科手套左右手圖像數(shù)據(jù)集為例進行訓練,并基于python中的imgaug庫函數(shù)實施一種數(shù)據(jù)增強策略,保持圖像和標注框同步改變,從而實現(xiàn)圖片與對應標注文件同時增強,以擴充數(shù)據(jù)量并增加類型多樣性,極大減少人工標注,同時可以緩解模型訓練時的過擬合現(xiàn)象,以達到增強算法模型準確性與適應性、提高反射對稱關系物體檢測識別的準確率與效率的目的。
DETR (Detection Transformer)目標檢測算法,是Facebook AI的研究者提出的Transformer視覺版本,通常應用在目標檢測與全景分割領域。與Faster-RCNN、YOLOv5等目標檢測算法相比,DETR不再需要諸多手工設計組件,例如非最大值抑制(Non-Maximum Suppression,NMS)、錨定(Anchor)生成等。DETR算法是一個端到端的架構,網(wǎng)絡結(jié)構相對簡單,其主要分為三個部分:傳統(tǒng)CNN的主干網(wǎng)絡(backbone)、Transformer結(jié)構的編碼器Encoder和解碼器Decoder(主要用于提取預測框Bounding box)、預測頭Feed Forward Network(簡稱FFN,使用二分圖最大匹配損失Bipartite matching loss來訓練網(wǎng)絡)。算法結(jié)構如圖1所示。
圖1 DETR算法整體結(jié)構圖
DETR的總體流程是:首先提取出圖片中目標的特定特征,將3通道圖片輸入到以CNN為主體的主干網(wǎng)絡中,然后結(jié)合圖片分塊后各部分的位置編碼信息,輸入到Transformer模型的編碼器和解碼器中,得到Transformer的檢測結(jié)果,再輸入到預測頭中,經(jīng)過兩個全連接層,分別進行分類和預測框坐標的回歸,輸出結(jié)果就是一系列預測框,其中每個框表示一個元組,包含物體的類別和檢測框位置。
Transformer編碼器Encoder與解碼器Decoder的網(wǎng)絡結(jié)構如圖2所示。
圖2 Transformer編碼器與解碼器的網(wǎng)絡結(jié)構圖
1)Transformer編碼器:首先,使用一個1×1的卷積層將一個高層特征圖f∈C×H×W的通道數(shù)由C降維到d,變成一個新的特征圖z0∈d×H×W。由于編碼器需要一個序列作為輸入的特性,因此這里將z0的空間維度壓縮為一維,從而得到d×HW的特征映射。每個編碼器層都有一個標準的結(jié)構,由一個多頭自注意力模塊(multihead self-attention)和一個前饋網(wǎng)絡(FFN)組成。由于Transformer體系結(jié)構是固定不變的,用固定位置編碼對其進行補充,并將其添加到每層的輸入中。利用0作為擴充值對圖像進行填充以確保所有輸入圖像具有相同的尺寸,其中(H0,W0)是批處理中最大的圖像尺寸。
2)Transformer解碼器:結(jié)構如圖2右側(cè)部分所示,它有兩個輸入,一個是編碼器得到的特征,另一個是對象查詢向量(Object queries)。Object queries是一個可以訓練的嵌入向量,為了向不同的真實框(ground truth)進行優(yōu)化,使用匈牙利匹配算法匹配Object queries和ground truth。
預測頭FFN是一個3層的感知機,激活函數(shù)使用的是ReLU函數(shù),隱層節(jié)點數(shù)為d。每個Object queries通過預測頭來預測目標的預測框和類別,其中預測框有三個值,分別是目標的中心點以及寬和高。此模型的解碼器輸出N個預測框,本文目標檢測任務檢測的感興趣物體數(shù)目2遠小于N,因此一定會有預測框內(nèi)未檢測到目標的情況,這類按照背景類來處理,用標簽?來表示。
本實驗首先搭建DETR算法運行環(huán)境,采集圖像構建數(shù)據(jù)集,使用LabelImg工具標注圖片生成VOC格式的.xml文件,再通過腳本轉(zhuǎn)換為COCO格式的.json標簽文件。并對做好的數(shù)據(jù)集實施數(shù)據(jù)增強策略生成新的數(shù)據(jù)集。最后將兩數(shù)據(jù)集在DETR模型上進行訓練、測試,對比分析實驗結(jié)果,得出結(jié)論。
本實驗在Windows10系統(tǒng)服務器的Pycharm中配置DETR運行環(huán)境,具體使用CUDA Toolkit 10.1版本,深度學習框架Pytorch 1.7.1版本,torchvision 0.8.2版本,Python 3.8版本。
采用固定式相機對充滿氣狀態(tài)下的醫(yī)用外科手套進行拍攝,背景不變,結(jié)合實際生產(chǎn)過程中手套氣密性檢測場景,從正下方拍攝,通過平移、俯仰、旋轉(zhuǎn)手套,采集不同姿態(tài)下的圖片,因?qū)嶒灄l件限制,相機在同一時刻采集多張圖像,共采集了1019張圖像,初步構建一個數(shù)據(jù)集,按照DETR模型所用COCO2017數(shù)據(jù)集的格式劃分為訓練集和驗證集,比例為3:1。使用LabelImg對每張圖片框選標注,標注范例如圖3所示。
圖3 標注范例
標注標簽有l(wèi)eft和right兩類,生成對應的VOC格式的.xml標簽文件,并轉(zhuǎn)換為COCO格式的.json標簽文件,這樣就構建了原始數(shù)據(jù)集。由于實驗條件的限制,采集到的圖像中手套位置姿態(tài)較為單一,而且數(shù)據(jù)量較少,不足以模擬實際生產(chǎn)環(huán)境。為此基于Python中imgaug庫函數(shù)實施一種數(shù)據(jù)增強策略。Imgaug是一個封裝好的專用于圖像數(shù)據(jù)增強的Python庫,功能全面多樣,使用多種方式進行數(shù)據(jù)增強,可用于分類、分割、檢測等任務,能實現(xiàn)關鍵點(key point)和預測框(bounding box)同時變換,根據(jù)本文原數(shù)據(jù)集的特征采取對應的圖像變換:翻轉(zhuǎn)、鏡像、隨機方向旋轉(zhuǎn)、改變明亮度以及添加高斯噪聲等,保持圖像和標注框同步改變,從而實現(xiàn)了圖像和對應標注文件同時增強,不需要再行標注圖像。通過特定的圖像變換增加了手套位姿多樣性,而且每張圖像與對應標注文件增強的數(shù)量可以根據(jù)需求指定,這樣就能靈活地擴充數(shù)據(jù),構建出相對完善的數(shù)據(jù)集。
本數(shù)據(jù)集需要檢測的目標類別有兩個:l e f t 和right,因此修改類別數(shù)num_classes為2,初始化模型參數(shù),根據(jù)目標檢測任務修改運行配置參數(shù):模型訓練輪數(shù)epochs設置為80,批大小batch_size指一次訓練輸入的樣本圖片數(shù),將影響到模型的優(yōu)化程度和速度,為了達到內(nèi)存效率和內(nèi)存容量間的最佳平衡,批大小設置為2。在相同條件下訓練原數(shù)據(jù)集與增強后的數(shù)據(jù)集,并可視化訓練過程中各參數(shù)變化趨勢,分析模型目標檢測性能。使用得到的最終模型對驗證集圖片隨機測試,并可視化預測結(jié)果,在圖像上顯示出預測框、對應的類別信息及置信度值。
本實驗使用DETR算法框架對訓練集數(shù)據(jù)進行訓練,得到訓練模型,然后使用驗證集數(shù)據(jù)對模型進行測試,結(jié)果分別如圖4、圖5所示。訓練后的模型進行部分預測的結(jié)果如圖6所示。兩個數(shù)據(jù)集的目標檢測結(jié)果參數(shù)如表1所示。比較測試模型時每一次迭代所用時間,原數(shù)據(jù)集是0.2503s,增強后的數(shù)據(jù)集是0.1636s,說明經(jīng)過數(shù)據(jù)增強后訓練出的模型檢測速度更快,對數(shù)據(jù)的敏感性更高。但結(jié)合訓練過程數(shù)據(jù)可知,相較于傳統(tǒng)目標檢測算法,DETR算法訓練時間較長。
圖6 部分預測結(jié)果圖
表1 原數(shù)據(jù)集評估參數(shù)表
圖4 原數(shù)據(jù)集訓練結(jié)果
圖5 進行數(shù)據(jù)增強后的數(shù)據(jù)集訓練結(jié)果
本實驗的原數(shù)據(jù)集是使用固定式相機在相同背景下同一時刻,采集多張手套圖像構建而成,相當于將數(shù)據(jù)復制多份,這樣數(shù)據(jù)太為單一,會導致在模型上出現(xiàn)過擬合現(xiàn)象。從圖4(a)的精確率-召回率(簡稱P-R)曲線可看出,精確率始終為1,不隨召回率而變化,而且模型開始迭代、迭代50次、最終迭代的P-R曲線始終未變,說明訓練出的模型已過擬合,因為根據(jù)其定義,精確率和召回率是一對相悖的指數(shù),兩者不可能同時高。經(jīng)過數(shù)據(jù)增強,過擬合的程度減輕。從圖5(a)可看出,隨著召回率增大到1,精確率最終逐漸下降。對比3條P-R曲線:開始迭代的P-R曲線緩慢下降,而迭代50次、最終迭代后的P-R曲線在召回率接近1時,精確率大幅下降。后兩條曲線將前者包圍,這表明多輪訓練迭代后,模型的性能得到提升。
表2 經(jīng)過數(shù)據(jù)增強后的數(shù)據(jù)集評估參數(shù)表
使用mAP@50(IoU閾值取50%情況下的均值平均精度Mean Average Precision)、score(綜合評分值)與f1(評價指標值)來評估模型目標檢測性能。對比表1中的評估參數(shù)值,原數(shù)據(jù)集的mAP@50與f1值都達到最高值的理想化狀態(tài),本實驗訓練了80個epochs,模型還遠沒有收斂,這也說明其完全處于過擬合狀態(tài),綜合評分值score此時不具有參考價值;增強后的數(shù)據(jù)集各參數(shù)變化趨勢正常,經(jīng)過迭代50次后模型接近過擬合狀態(tài),從圖5(a)的綜合評分-召回率(Scores-Recall)曲線可看出,當?shù)?0次時,隨著召回率接近1,綜合評分值score在1.0附近略微下降;當最終迭代時,隨著召回率接近1,score值會從1.0大幅下降到0.5左右,說明從開始迭代到迭代50次的過程中,模型極有可能出現(xiàn)過擬合狀態(tài)。但是最終迭代得到的模型各參數(shù)都有提升且處于正常狀態(tài),其目標檢測性能更優(yōu)。從圖4(b)、圖5(b)可看出,隨著模型迭代次數(shù)增加,類別錯誤數(shù)class_error、去規(guī)?;A測框損失loss_bbox_unscaled、均值平均精度mAP三個指標值上下波動明顯,曲線極不平滑,最終也無穩(wěn)定趨勢,所以依據(jù)最后的訓練結(jié)果判斷模型性能好壞是不全面的,這也說明DETR模型還未達到收斂,可能需要增加訓練輪數(shù)epochs到500左右才會收斂,反映出DETR模型收斂速度較慢的問題。
如圖6所示,對部分訓練圖片進行預測,得到預測框的位置和目標類別都是正確的,但是置信度過高甚至達到理想值1(正常在0.95左右),這也是過擬合的體現(xiàn)。采集不同背景、不同分辨率的醫(yī)用外科手套圖像進行預測,有的得不到預測框,有的得到了預測框和正確的目標類別但是置信度低于0.8,識別準確率太低,說明模型目前僅適用于相同背景、相同分辨率的圖像數(shù)據(jù)集,其泛化能力還有待提升。
本文使用一種基于Transformer的端到端目標檢測(DETR)算法,針對反射對稱關系物體的檢測識別問題,以醫(yī)用外科手套左右手分類為例,使用自制數(shù)據(jù)集進行訓練。由于實驗條件有限,采集的圖像數(shù)量較少,只有1000多張,而且是相同背景下的數(shù)據(jù),類型單一,導致訓練過程出現(xiàn)過擬合現(xiàn)象。因此基于Python中imgaug庫函數(shù)實施了一種數(shù)據(jù)增強策略,將圖像和對應的標注文件同時增強,并進行對比實驗,驗證了數(shù)據(jù)增強后的數(shù)據(jù)集在訓練模型過擬合問題上有一定緩解,模型的泛化性能與準確性有所提高,這對于提升反射對稱關系物體檢測識別的準確率與效率有很好的意義。
但是DETR模型存在訓練時間較長、收斂較慢的問題。由于實驗條件限制,本文在兩個數(shù)據(jù)集上各自訓練了80個epochs,非常耗時而且得到的訓練模型并未完全收斂,魯棒性較差,預計達到500個epochs模型才能完全收斂。后續(xù)研究應著眼于如何從數(shù)據(jù)角度解決訓練模型的過擬合問題,如何提升模型的泛化性能即實現(xiàn)對不同背景下反射對稱關系物體的檢測識別,以及如何從算法原理、模型結(jié)構入手提升訓練速度,加快模型收斂。