張欣宇,張 楠,王希彥,吳 玉,劉 鵬,謝 斌,張文碩,王延忠
(1.北京航空航天大學 機械工程與自動化學院,北京 100191;2.中國兵器工業新技術推廣研究所,北京 100089;3.重慶鐵馬變速箱有限公司,重慶 400050)
隨著智能制造技術的逐漸發展,裝配產線自動化程度越來越高,但仍然有部分檢測工作無法使用自動化設備替代,依舊需要采用人工檢測的方式,不但會造成裝配效率的降低,而且檢測過程易產生錯誤。以減速器中制動器裝配為例,裝配過程需交替裝配摩擦片和鋼片兩種零件,且裝配順序和數量唯一,操作不當會造成錯裝、漏裝等錯誤,進而導致售后問題,影響制動器的使用性能,產生經濟損失,甚至造成不必要的后果。制動器裝配后由于其結構緊湊、密封性好等特點,人工檢測裝配不方便,需要花費大量的時間,而且存在錯誤的風險。針對這些問題,本文提出了一種在裝配過程中實時檢測零件裝配情況的檢測方法,幫助提高裝配的準確性。
計算機視覺是賦予計算機類似于人的特征,通過對獲取的圖片、視頻等圖像數據進行分析處理,產生一定自主判斷能力[1]。目前,計算機視覺已經可以代替人力,進行一些檢測、識別、判斷等工作任務[2-3]。本文使用的是計算機視覺中的目標檢測技術[4],目標檢測是計算機視覺中重要的研究方向之一,應用范圍廣泛,目前已經可以應用于機器人、工業檢測、視頻監控等領域[5]。2016年后,目標檢測算法發展迅速,國內外學者相繼提出算法SDD[6](Single Shot Multi-Box Detector)系列和YOLO[7-9](You Only Look Once)系列。2021年,Ultralytics公司推出了YOLOv5算法,YOLOv5是基于原有YOLOv4架構的基礎上進行各方面的優化改進[10]。相比其他目標檢測算法,YOLOv5因其高速和高精度而受到廣泛關注,YOLOv5網絡具備快速推理、高準確率和小尺寸等優點,非常適合應用在制動器裝配檢測中。
YOLOv5算法依據網絡模型寬度和深度的不同,按照從小到大依次遞增排序,有4種版本:YOLOv5s、YOLOv5m、YOLOv5l以及YOLOv5x。在這些算法中,YOLOv5s模型小、實時性好、具有最快的識別速度。因此,本文選取YOLOv5s算法作為制動器裝配檢測的訓練模型。YOLOv5s算法主要包括輸入端、主干網絡、Neck模塊和輸出端4個部分。
輸入端主要包括3個部分:Mosaci數據增強、圖片尺寸縮放和自適應錨框計算。Mosaci數據增強隨機從數據集中選取4張照片,經過隨機的縮放、裁剪等處理后,將圖像拼接為一張包含4張不同圖像的大圖像,此操作增強了數據集的多樣性,豐富了數據集素材;圖片尺寸縮放是在圖像中添加最少的黑邊,以提高模型的計算速度,減少訓練計算量;自適應錨框計算通過對初始錨框的計算,將其與實際框架進行比較,并將二者之差進行逆向更新,通過多次迭代,獲得最佳錨框架參數,減少樣本影響,提高檢測準確率。
主干網絡包含Focus和CSP結構[11]。Focus結構包括切片與卷積,將具有高分辨率圖片中的像素點加到低分辨率的圖片中,堆疊形成新圖片,對新圖片進行卷積運算,從中提取出圖像中的關鍵信息。CSP結構是將輸入的特征圖分為兩部分處理,一部分輸入到下一層做卷積處理,另一部分通過子網絡處理,最后將兩部分結合起來作為下一層的輸入。使用不同類型的特征抽取模塊抽取檢測目標零件,產生目標檢測零件的語義信息,提高神經網絡在訓練集合中的學習與推理的速度。
Neck模塊使用FPN(Feature Pyramid Network)+PAN(Path Aggregation Network)結構[12]。FPN結構通過從上到下的方式,對各特征進行上層到下層的融合。PAN是在FPN基礎上進行的,通過自下而上的方式,可以很好地把下層的位置信息傳遞給上層,從而增強對目標的探測。FPN+PAN結構如圖1所示。

圖1 FPN+PAN結構圖
輸出端用來檢測大、中、小物體的網格,以CIOU Loss[13]為損失函數,在進行多輪操作的同時,使用NMS(Non-max Suppression)方法對相應的參數進行持續的調整,使得計算出的錨框和實際錨框之間的誤差值達到最小,最后獲得最佳的模型。
本文檢測系統搭配攝像頭可用于制動器零件檢測,以摩擦片和鋼片檢測為例,具體流程如圖2所示。將攝像頭安裝在制動器裝配工位,用于實時檢測制動器的裝配過程,另一端連接檢測計算機,將拍攝的圖像反饋給計算機;調用檢測程序,使檢測系統處于等待檢測的狀態;攝像頭在裝配過程中每隔10 ms保存一張視頻幀圖片,傳輸給計算機分析是否檢測已經開始;當檢測到裝配工作進行,檢測識別系統開始工作,調用YOLOv5s算法程序對圖片進行計算,自動識別裝配零件的類型,根據檢測到的結果進行分析對比,輸出檢測結果的標注框信息,并存貯到記錄中;若裝配過程為摩擦片和鋼片各交替安裝5個,且總數為10個,則證明裝配正確,檢測系統提示裝配正確并輸出裝配順序;若檢測到裝配相鄰兩零件為同一類型的零件,則跳出檢測系統,輸出裝配順序并發出警告,提示存在錯裝;若裝配順序正確但裝配總數沒達到要求,檢測系統將在最近零件裝配后等待30 s,超時沒檢測到下一零件裝配,則跳出檢測系統,輸出裝配順序并發出警告,提示存在漏裝。

圖2 裝配檢測流程圖
環境的搭建依賴NVIDIA驅動安裝與更新,根據電腦的顯卡版本登錄官網下載對應的驅動更新,安裝完成后在命令框輸入:nvidia-smi,用于查看最高支持的CUDA版本,并根據此版本安裝深度學習環境。
虛擬環境的搭建需要Anaconda軟件完成,在Anaconda的終端上輸入命令:conda create-n pytorch python=3.8,即建立一個名為pytorch的虛擬環境,python的版本是3.8,執行命令:conda activate pytorch,用于激活環境;進入Pytorch的官方網站,按照顯卡的型號、CUDA的最大支持版本,將方塊中的命令語句(見圖3)拷貝到命令窗口中,即可下載該環境所需的相關軟件包;最后,下載Pycharm程序并在其上建立一個與之前所建立的虛擬環境,可確認是否已經完成了配置。

圖3 虛擬環境軟件包下載
為方便數據集素材和處理結果的存儲,創建一個名為“VOC2007”的文件夾,在其中建立一個“JPEGImages”文件夾,用來存儲需要標記的圖像文件;建立一個標簽文件,命名為“Annotations”來存儲注釋;建立一個名為“predefined_classes”的txt文件,用來存儲標注的分類名。
將要標注的圖片放在“JPEGImages”文件夾中,素材越多,準確度也會越高,本次數據集包含每種零件在不同光照強度、位置、角度等因素的照片500~600張,總數超過1 000張(見圖4a)。圖像處理應用labelimg軟件,命令控制臺輸入:pip install labelimg,自動下載軟件相關的數據包。在命令行鍵入:labelimg JPEGImages predefined_classes.txt,打開labelimg,選擇每個圖片中的目標對象,并標記分類,處理過程如圖4b所示,結果存儲到“Annotations”文件中(見圖4c),處理后的文件格式為xml文件,為方便深度學習環境訓練,編寫python程序將其轉為txt文件,并按照比例將數據集劃分為80%的訓練集和20%的驗證集。

a)數據集素材
本文利用YOLOV5算法訓練數據集,其代碼結構如下:data用于存放yaml文件,為數據集和驗證集提供配置信息,可以根據需求修改所檢測目標的類別數和對應的名稱;weights用于存放數據集訓練好權重;models包含4個不同的s、m、l、x的項目版本,按照如上順序檢測速度升高,準確度下降;算法的實現主要依賴于3個python程序,分別為train.py、detect.py、test.py,用于訓練數據集、目標檢測識別和測試結果;“requirements.txt”文本文件包含yolov5的依賴庫,可以根據需要安裝到環境中。
將2.2節制作好的數據集文件導入到工程文件中,按照本次檢測需求分別修改data文件夾和models文件夾的yaml配置文件。將data文件夾中的voc.yalm文件復制,填寫數據集中用于訓練和測試的圖片集路徑,填寫所需檢測目標零件的英文名,并按照所需檢測零件數量修改檢測類別數;找到models文件夾中yolov5s.yaml文件,復制并按需修改參數。在train.py中分別填入修改后data和models的yaml配置文件路徑,填寫weights路徑到對應權重參數,更改訓練輪次為300輪,啟動程序開始訓練,訓練時,可以使用tensorbord來查看實時參數。在訓練完成后,將產生一個best.py文件,可以使用此文件來識別目標。
本文采用Astra Pro攝像機與目標檢測程序相結合,將2.3節所述產生的best.py文件嵌入到檢測程序中,在生產線安裝檢測攝像機連接計算機,實時檢測制動器裝配過程,輸出所檢測零件的英文名字和置信度(即代表有多大概率可以確定是所要檢測的目標零件)。圖5和圖6所示分別為裝配過程中摩擦片和鋼片的實時檢測結果,以圖5a為例,方框中即表示為所要檢測的目標零件,標簽“steelPlate”表示其類別為鋼片,0.95為檢測結果的置信度,表示算法模型計算判斷該物體有95%的概率是鋼片,系統默認置信度超過0.5即可接受,本文將該參數設置為0.8,仍可順利完成目標檢測任務,提高了檢測精準性,降低了檢測失誤率。

a)置信度為0.95

a)置信度為0.97
根據實際生產線裝配實驗結果,檢測目標零件正確率可達到99%以上。本文檢測系統會自動將識別的裝配零件加入到裝配順序中,同時將同一裝配序列零件所檢測到的圖片儲存到一起,以便后續查到。針對裝配過程中易發生的錯裝和漏裝問題,分別作出相應處理,若檢測到相鄰裝配流程裝配的是同一裝配序列零件時,立刻跳出檢測系統,輸出裝配順序并發出警報,提示檢查是否錯裝,系統恢復等待檢測狀態;若從零件開始裝配,直到裝配停止,檢測系統檢測零件未達到數量要求,則同樣輸出裝配順序并發出警報,提示檢查是否漏裝,系統恢復等待檢測狀態。
本文設計了一種基于YOLOv5s算法的制動器防錯裝檢測系統,以制動器中摩擦片和鋼片為實驗對象,采用對生產線零件圖片收集的方式制作數據集,應用labelimg軟件對數據集進行標注處理,編寫代碼將文件格式轉化,并劃分為訓練集和驗證集,使用YOLOv5算法完成對數據集的訓練,最后將檢測程序與外接攝像頭相接,根據實際生產線裝配需求,完成制動器防錯裝檢測系統。
實驗結果表明,該檢測系統可以對生產線裝配進行實時監測,對裝配過程中存在的錯裝和漏裝問題進行警報提示,可代替人工檢測,減少成本,降低產品裝配失誤率,提高產品一次合格率,避免錯裝產品流入市場。