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