李 彥,朱凌云
(1.東華大學信息科學與技術學院,上海 201620;2.數(shù)字化紡織服裝技術教育部工程研究中心,上海 201620)
對生產線的紐扣進行計數(shù)是紐扣生產流程中非常重要的步驟,而現(xiàn)在依然有許多紐扣生產廠采用人工計數(shù)的方法。即便是自動計數(shù),一般也是采用機械計數(shù)、定位計量、光學計數(shù)等方法,由排隊裝置排列出一個個紐扣,在傳送帶上進行計數(shù)。姚暢[1]設計了一種采用3路傳輸?shù)拇笈考~扣排隊與分揀設備,分揀速度較高但結構較為復雜。楊海洋[2]提出了一種粗略人群計數(shù)方法,能夠實現(xiàn)流量預測。王杰[3]采用改進的Vibe目標檢測算法實現(xiàn)鉆桿計數(shù)。
近年來,卷積神經網(wǎng)絡(convolutional neural network,CNN)得到了很大程度的發(fā)展[4-6]。你只看一次(you only look once,YOLO)是一種端到端的目標檢測算法,其在檢測速度與效率上都有不錯的表現(xiàn)[7-10]。強恩超等[11]提出基于YOLOv3的闖紅燈行人數(shù)統(tǒng)計系統(tǒng)設計,驗證了在計數(shù)方面的可實現(xiàn)性,但計數(shù)算法不適用于目標太密集的情況。
為了保證基于YOLOv3檢測后紐扣計數(shù)的高適應性和準確性,本文提出了基于YOLOv3算法的多通道紐扣計數(shù),通過類似軟件防抖的方式消除由YOLOv3算法帶來的定位誤差影響。采用多通道計數(shù),提高計數(shù)效率。采用K-means++算法對紐扣標簽進行聚類分析,以確定最優(yōu)的檢測框寬高值。
YOLOv3采用端到端的檢測方法,并將圖像劃分為S×S的網(wǎng)格,判斷目標中心點是否位于該網(wǎng)格內,從而實現(xiàn)多目標檢測。該算法在檢測速度上具有很大的優(yōu)勢,同時可滿足較高的檢測準確度。
針對紐扣數(shù)據(jù)集單一以及制作大量數(shù)據(jù)集標簽困難的問題,對數(shù)據(jù)集進行擴增,有利于提高檢測效率并減少不必要的時間開支。因為紐扣自身是較為對稱的結構,本文對紐扣進行旋轉操作,可以避免不必要的信息損失。對已打標簽的紐扣圖像以及標簽作旋轉操作(60°、90°、120°、150°、210°、240°以及300°旋轉,即數(shù)據(jù)集變?yōu)樵瓉淼?倍),并對旋轉后的空白處作填零處理。不同角度的旋轉圖像如圖1所示。
圖1 不同角度的旋轉圖像Fig.1 Rotated images at different angles
目前,紐扣自動計數(shù)依然主要采用光學設備。隨著機器視覺技術的發(fā)展,將有更多的工業(yè)產品采用機器視覺的方法計數(shù)。本文設計了基于YOLOv3的多行紐扣計數(shù)方法,可以準確地實現(xiàn)多行密集紐扣計數(shù)。
對于傳送帶上單行傳輸?shù)募~扣,因為紐扣穿過圖像上任意一條豎線的次數(shù)為1,可以借此來判斷傳送帶上跑過紐扣的數(shù)量。但使用YOLOv3算法來進行定位,存在一定的定位誤差,極易造成計數(shù)誤差。因此,本文對此進行改變,并且使用了如圖2所示的單通道計數(shù)矩形框。
圖2 單通道計數(shù)矩形框Fig.2 Single channel counting rectangle
單通道紐扣計數(shù)的步驟如下。
①將采集到的圖像送入YOLOv3網(wǎng)絡,對紐扣進行檢測與定位。
②獲取檢測到的紐扣矩形框中心點坐標,并判斷其是否位于矩形框內。當連續(xù)3次以上檢測到紐扣中心坐標位于矩形框,置紐扣標志位為1;當連續(xù)2次及以上未檢測到中心點位于矩形框的紐扣,置該標志位為0。
③當標志位為下降沿,即標志位由1變?yōu)?時,紐扣數(shù)目加1。
基于軟件消抖的思想,通過多次檢測box中心點位于矩形框的紐扣,能夠降低由于YOLOv3算法漏檢造成的錯誤計數(shù)風險。
對于傳送帶上密集多行傳輸?shù)募~扣,使用YOLOv3算法對其定位,并提出了一種多通道的紐扣計數(shù)方法。其實現(xiàn)步驟如下。
①設定K值(K值為可同時檢測的通道數(shù)),初始化K條橫向通道為封閉并設定寬度,初始化豎向通道為開啟并設定寬度。
②設定所有橫向通道的mask位(用于判斷是否檢測到紐扣)為0。
③獲取YOLOv3檢測到的預測框及其對應的中心點。
④得到所有中心點位于豎向通道內的預測框,判斷這些預測框是否位于已開放的橫向通道內。若是,則該通道m(xù)ask位置為1;否則,置一封閉橫向通道為開放,其mask位為1,設該通道位置為該中心點。
⑤根據(jù)mask位,對所有已開放的橫向通道采用單通道計數(shù)方法,連續(xù)兩次橫向通道m(xù)ask為0,則置該橫向通道為封閉。
⑥回到步驟②,處理下一張圖像。
紐扣數(shù)據(jù)集制作的效果,會在一定程度上影響算法檢測的效果。為了與實際的檢測情形保持一致,使用運動的紐扣圖片作為數(shù)據(jù)集。同時,因為紐扣矩形框標簽制作的效率問題,采用單行紐扣圖片作為訓練集,以LabelImg軟件制作標簽。試驗表明,采用該方法檢測多行紐扣,也能達到很高的檢測效率。
本文采用的試驗設備CPU與顯卡分別為i5 9400F與GTX 1060 6g,操作系統(tǒng)為Ubuntu 18.04。模型訓練結果如圖3所示。由LOSS曲線可以看出,在模型進行2 000次的batches迭代后,模型LOSS基本穩(wěn)定,并且維持在0.1以下,說明已基本擬合。由IOU曲線可以看出,模型IOU基本接近于1,說明矩形框擬合得很好。
圖3 模型訓練結果Fig.3 Model training results
由IOU曲線與LOSS曲線可以得出,YOLOv3算法模型已基本擬合。而在對該檢測系統(tǒng)的測試過程中,該算法對一幀圖片的運行時間約為0.07s,能夠實現(xiàn)紐扣的快速檢測。
本文針對紐扣進行實時計數(shù)檢測。該算法完成了紐扣計數(shù),能夠檢測傳送帶上是否有紐扣,以及傳送帶是否處于正常速度運行狀態(tài)。試驗結果表明,該算法能夠實現(xiàn)對紐扣的定位以及準確計數(shù),并能夠進行實時故障監(jiān)測,說明該算法具有可行性與實用性,性能也能達到要求。
本文基于YOLOv3算法,結合多通道計數(shù)與類似軟件消抖的方法,提出了一種多通道紐扣計數(shù)方法。在數(shù)據(jù)集方面,對紐扣圖像集進行擴增,提高了檢測效率和減少了不必要的時間開支。在試驗方面,該算法能夠實現(xiàn)紐扣的準確計數(shù)與簡單的故障檢測,并且能夠達到較好的實時性。該檢測系統(tǒng)能夠運用于生產線,提高了檢測效率與正確率,減輕了工人的勞動強度。下一步工作是在計數(shù)的同時,實現(xiàn)紐扣的表面瑕疵檢測,以進一步提高工作效率。