陳文帥 任志剛 吳宗澤 付敏躍
電子元器件是電子設(shè)備的重要基礎(chǔ)組成部分,在其生產(chǎn)、回收、焊接與檢測中,首先需要對元器件進行正確分類.此外,在焊接和檢測元器件的過程中,還需要對極性電子元器件的方向進行準確識別.因此,對電子元器件正確分類的同時能夠?qū)O性電子元器件的方向進行識別具有重要的研究意義[1].但隨著電子元器件制造工藝的提高與需求的多樣化,電子元器件變得更加微型化、多樣化,這為電子元器件的分類與檢測方向等問題帶來了更嚴峻的挑戰(zhàn).
2012 年之前,圖像分類和目標檢測一度進入瓶頸期,發(fā)展相對停滯.隨著計算機視覺的快速發(fā)展,深度學習在目標檢測方面也取得了巨大的成功.得益于此,深度學習在計算機視覺方向的算法不斷更新迭代,在文字識別[2]、醫(yī)學圖像識別[3?4]等方面得到了廣泛運用.2012 年,Krizhevsky 等[5]提出了一個稱為AlexNet 的深度卷積神經(jīng)網(wǎng)絡(luò)(Deep convolutional neural network,DCNN),其在大規(guī)模的視覺識別挑戰(zhàn)(ImageNet large-scale visual recognition challenge,ILSVRC) 中實現(xiàn)了破紀錄的圖像分類精度,成為深度學習發(fā)展的一個重要里程碑.從此,深度學習進入高速發(fā)展階段,許多計算機視覺應(yīng)用領(lǐng)域的研究也都集中在深度學習方法上[6],其中包括目標檢測及圖片背景消減技術(shù)[7].
深度學習在目標檢測領(lǐng)域的目標檢測方法[8]可分為基于候選區(qū)域的目標檢測方法和基于回歸的目標檢測算法.基于候選區(qū)域的檢測方法采用了卷積神經(jīng)網(wǎng)絡(luò)代替人工特征的提取[9],常用的候選區(qū)域提取辦法有SelectiveSearch[10]和Edge Boxes[11].常用來提取特征圖的網(wǎng)絡(luò)結(jié)構(gòu)有VGG(Visual geometry group)[12]、ResNet[13]等.Faster RCNN(Region convolutional neural network)[14]是最具有代表性的算法之一,Faster RCNN 為了減少SelectiveSearch和EdgeBoxes 提取候選區(qū)域的時間,結(jié)合全卷積設(shè)計的候選區(qū)域思想[15],提出了用區(qū)域侯選網(wǎng)絡(luò)(Region proposal networks,RPN)計算候選框,不僅提高了候選區(qū)域的質(zhì)量與準確率,還將檢測時間減少為原來的1/10.基于候選區(qū)域的目標檢測方法需要分兩步去分別訓練兩個復雜的卷積結(jié)構(gòu),雖然檢測精確,但其有在訓練與檢測速度上緩慢的缺點.基于回歸的目標檢測算法為了解決這個缺點,不通過生成區(qū)域建議的方式,直接將目標檢測的相關(guān)問題轉(zhuǎn)化為回歸問題[16],其結(jié)構(gòu)相對簡單,實時性更好,最具有代表性的算法有SSD(Single shotmultibax dctector)[17]和YOLO(You only look once) 系列算法[18?20].YOLO 算法簡單地將圖像均勻分為7×7 個部分,再利用卷積神經(jīng)網(wǎng)絡(luò)檢測每一個部分是否有目標,最后對目標類別與位置進行預測.YOLO 就是通過節(jié)省生成區(qū)域建議的時間來大幅提高檢測速度,但這也會對其精度帶來一定的影響.
目前對于電子元器件分類研究的算法,主要分為兩大類,如圖1 所示,一類是基于傳統(tǒng)的圖像分類的方法,首先輸入圖像、然后經(jīng)過復雜的程序提取圖像的特征,再根據(jù)提取出來的特征進行分類.如杜思思等采取將最小二乘法和Hough 變換相結(jié)合[21],得到一種改進的直線段精確檢測算法.另外一類是基于深度學習的分類方法,首先輸入圖像、然后經(jīng)過卷積神經(jīng)網(wǎng)絡(luò)自動提取特征生成特征圖、再根據(jù)特征圖進行目標的定位與分類.如陳翔等[22]提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)(AlexNet) 的電子元器件分類方法,其可以直接在輸人圖像上進行自動特征學習和分類,彌補了傳統(tǒng)元件分類方法存在部分缺陷,但只能對圖片進行分類,不能運用到單幅有多目標的場景并對目標進行定位.第1 類傳統(tǒng)的圖像分類方法需要提取圖像的多種特征,要對每一種類別的元器件找出其表示的特征,如蜂鳴器的特征用圓表示等.其有以下缺點:1) 傳統(tǒng)圖像分類方法對于圖像的對比度要求很高,模糊、灰度化不明顯、灰度不均勻等情況都會增加識別的誤差;2) 對特征相似的目標識別效果不佳,比如同樣類別的不同型號的元器件分辨準確率低;3) 需要人工提取特征,無法對包含上百種海量數(shù)據(jù)進行分類,每多一種分類,計算復雜度就上升一個等級.第2 類基于深度學習的分類算法,雖然有隨著深度學習網(wǎng)絡(luò)的加深計算量不斷加大的缺點,但融入了反向傳播[23]、權(quán)值共享、稀疏連接、池化、Dropout[24]等思想,簡化了操作,并且大大降低了神經(jīng)網(wǎng)絡(luò)參數(shù)的量級,一定程度上減輕了計算量,使其更易于訓練,而且深度學習算法能夠自動的提取圖像特征,自動學習各種各樣的表征特征紋理,甚至能夠表達完整的目標物,比人工提取的特征更具有描述力,其對于目標的理解的概念分布在神經(jīng)網(wǎng)絡(luò)不同的層中,最后形成了對不通目標物體的整體感知,并根據(jù)感知同時對目標進行分類與定位.
圖1 基于傳統(tǒng)和深度學習圖像分類方法模型Fig.1 Traditional and deep learning image classification method based on model
本文的主要貢獻主要有以下三個方面:1) 首次提出基于深度學習極性電子元器件類別與方向識別方法.通過把方向識別問題轉(zhuǎn)化為分類問題,利用先進的目標檢測算法進行分類,平均準確率(Mean average precision,mAP) 最優(yōu)高達99.44%.2) 提出一種基于數(shù)據(jù)集設(shè)計遍歷框(Anchor boxes) 的方法.根據(jù)訓練集目標框長寬的分布結(jié)合算法提供的框來選取Anchor boxes 的個數(shù)與大小.3) 提出YOLOv3-BigObject 算法模型.對于大目標的數(shù)據(jù)集,通過對Anchor boxes 大小與個數(shù)的分析,壓縮YOLOv3 的算法框架,減少了訓練復雜度與時間,大幅減少對單張圖片的檢測時間.
本文組織架構(gòu)如下:首先,在第1 節(jié)對數(shù)據(jù)集的構(gòu)建與內(nèi)容進行了詳細介紹.在第2 節(jié)利用K-means 算法,基于數(shù)據(jù)集和目標檢測算法設(shè)計了Anchor boxes 的大小與個數(shù).在第3 節(jié)提出用于大目標檢測的YOLOv3-BigObject 網(wǎng)絡(luò)模型.在第4 節(jié),我們通過進一步實驗分析,驗證了深度學習在該場景下的極性元器件方向識別的效果,分析了用K-means 算法設(shè)計Anchor boxes 的效果以及YOLOv3-BigObject 模型在檢測時間上的提升效果,并用焊接有元器件電路板視頻檢測算法實際效果,最后,對全文工作進行了總結(jié)和展望.
深度學習的算法模型需要大量的數(shù)據(jù)進行訓練,但目前還沒有公開的、帶類別標簽的電子元器件的數(shù)據(jù)集,為了能夠?qū)崿F(xiàn)本文所提出的基于深度學習的極性電子元器件類別與方向識別,實驗采取人工拍攝的方式采集數(shù)據(jù)集.采集設(shè)備為??低昅VCE013-50 GM 130 萬像素的CCD 工業(yè)相機,數(shù)據(jù)集1 一共采集2 000 幅大小為1 280×960 像素、包含3 種型號的二極管圖片,如圖2 所示.數(shù)據(jù)集2一共采集813 幅大小為1 280×960 像素、包含2 種型號且?guī)в幸_的二極管圖片,如圖3 所示.目前深度學習算法還沒有能夠識別目標的具體傾斜角度,但可以通過把方向問題轉(zhuǎn)換為分類問題達到粗略的方向識別的效果.根據(jù)二極管正極的朝向?qū)⑵浞譃?類:上、下、左、右,每類角度范圍為90?,具體分類細節(jié)如圖4 所示.為了訓練出分類效果比較好的算法模型,首先對原始數(shù)據(jù)集進行數(shù)據(jù)增強的預處理,經(jīng)過對圖片分別逆時針旋轉(zhuǎn)90?、180?、270?與水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)、水平垂直翻轉(zhuǎn)等6 種方式將數(shù)據(jù)集擴增到原數(shù)據(jù)集的7 倍,其中,數(shù)據(jù)集1 具體分布如表1 所示,數(shù)據(jù)集2 具體分布如表2 所示,括號外的數(shù)字表示數(shù)據(jù)集包含該類的圖片數(shù)量,括號內(nèi)的數(shù)字表示數(shù)據(jù)集包含該類別的目標數(shù)量.
圖2 數(shù)據(jù)集1 圖片示例Fig.2 Image examples of the dataset 1
圖3 數(shù)據(jù)集2 圖片示例Fig.3 Image examples of the dataset 2
表1 數(shù)據(jù)集1 包含各類的圖片數(shù)量和目標數(shù)量Table 1 The dataset 1 contains the number of images and targets of targets in each category
表2 數(shù)據(jù)集2 包含各類的圖片數(shù)量和目標數(shù)量Table 2 The dataset 2 contains the number of images and targets of targets in each category
圖4 方向識別轉(zhuǎn)化為分類Fig.4 Direction recognition change to classification
在目標檢測的深度學習算法中,每種算法都有基于某些數(shù)據(jù)集給出Anchor boxes 的大小與個數(shù),如在FasterRCNN給出的9 個Anchorboxes[14],YOLOv2 提供的5個Anchorboxes[19],YOLOv3給出的9 個在不同大小特征圖(Feature map) 的Anchor boxes[20],但默認算法提供的Anchor boxes不一定適用在某些特定場景下的數(shù)據(jù)集,如果過多,會造成訓練時間過長、檢測速度過慢、資源浪費等問題.因此,選取適合特定數(shù)據(jù)集的Anchor boxes至關(guān)重要.因此,本文結(jié)合具體應(yīng)用背景,提出一種基于K-means 算法設(shè)計Anchor box 的方法,并且在Faster RCNN 與YOLOv3 上取得良好的效果.具體步驟如下:1) 計算訓練集中每個目標框(Ground truth boxes,GT boxes) 與算法給出的Anchor boxes 的交并比(Intersection over union,IoU);2) 每個GT Boxes 選擇與其IoU 最大的Anchor box 并統(tǒng)計每個Anchor box 被選到的個數(shù),剔除計數(shù)為0 的Anchor boxes,選擇計數(shù)不為0 的n個Anchor boxes 為初始化的聚類中心;3) 用Kmeans 算法進行聚類迭代計算,最終得到n個適合該數(shù)據(jù)集的Anchor boxes.
Faster RCNN 算法[14]是根據(jù)設(shè)定的3 個長寬比例和3 種面積生成9 個Anchor boxes,這樣設(shè)置難于直觀調(diào)節(jié)大小,而且部分Anchor boxes 之間有關(guān)聯(lián),在特定數(shù)據(jù)集下,幾乎得不到與訓練集平均IoU 最大的Anchor boxes.相對來說,以長寬設(shè)置Anchor box 大小更為直觀,這樣能得到與訓練集平均IoU 最大的Anchor box.在極性電子元器件的數(shù)據(jù)集1 和數(shù)據(jù)集2 中,其訓練集需檢測的目標長寬的分布如圖5 所示,圖中橫坐標、縱坐標分別表示GT boxes 的寬度和高度,訓練集所有GT boxes 用圓表示,星號為Faster RCNN 提供的9 個Anchor boxes,根據(jù)上述計算步驟,最遠離原坐標的3 個Anchor boxes 計數(shù)為0,說明相比較其他Anchor box,這3 個距離GT boxes 比較遠,訓練集與其IoU 沒有比其他6 個Anchor boxes 大.所以,對于該數(shù)據(jù)集,Faster RCNN 只要6 個Anchor boxes 足以滿足數(shù)據(jù)集目標的大小.故選取算法提供的其他6 個Anchor boxes 作為K-means 算法初始聚類的點,經(jīng)過多次迭代,最終得到適用于該數(shù)據(jù)集的Anchor boxes,即圖5 中正方形的點.通過計算,算法提供的9 個Anchor boxes 與訓練集的平均IoU 為0.6294,IoU 的均方差為0.08289.經(jīng)過K-means 算法得到的6 個Anchor boxes 與訓練集的平均IoU 為0.8,IoU 的均方差為0.0555.
圖5 基于Faster RCNN 的Anchor boxes 和訓練集的分布Fig.5 Distribution of training set and anchors boxes based on Faster RCNN
YOLOv3 算法[20]采用多個Scale 融合的方式,利用3 種大小不一樣的特征圖分別檢測大、中、小的目標,并在每個特征圖上選擇3 個Anchor boxes進行遍歷,在對GT boxes 分布比較廣的、目標比較小的數(shù)據(jù)集上效果比較好,但在特定數(shù)據(jù)集不一定需要3 種尺度的特征圖.YOLOv3 雖然提出用Kmeans 算法根據(jù)數(shù)據(jù)集目標的長寬來選取Anchor box,但其初始化K-means 算法的聚類中心一般是在訓練集中隨機選取,而且聚類中心的個數(shù)需要自己設(shè)定.這樣選取的Anchor box 隨機性比較大,不一定是最佳選擇,而且個數(shù)難于設(shè)定.在有極性電子元器件的數(shù)據(jù)集1 和數(shù)據(jù)集2 中,其訓練集的GT boxes 轉(zhuǎn)化后的分布如圖6 所示.圖中橫坐標、縱坐標分別為GT boxes 的寬度和高度,訓練集所有GT boxes 用圓表示,星號為YOLOv3 提供的9 個Anchor boxes 的分布,根據(jù)上述計算步驟,只有3 個Anchor boxes 的計數(shù)不為0.所以,對于該數(shù)據(jù)集,YOLOv3 只要3 個Anchor boxes 足以滿足該數(shù)據(jù)集.故選取這3 個Anchor boxes 作為K-means 算法初始聚類的點.經(jīng)過多次迭代,最終得到適用于該數(shù)據(jù)集的Anchor boxes,即圖6 中正方形的點.通過計算,算法提供的9 個Anchor boxes 與訓練集的平均IoU 為0.44768,IoU 的均方差為0.1136.經(jīng)過K-means 算法得到的3 個Anchor boxes 與訓練集的平均IoU 為0.6645,IoU 的均方差為0.0870.
圖6 基于YOLOv3 的Anchor boxes 和訓練集的分布Fig.6 Distribution of training set and anchor boxes based on YOLOv3
YOLOv3 算法的網(wǎng)絡(luò)結(jié)構(gòu)以Darknet-53 為基礎(chǔ),在第36,61,79 層分別形成大小為52×52,26×26,13×13 的特征圖,如圖7 所示,3 種特征圖對應(yīng)的Anchor boxes 大小分別為((10,13),(16,30),(33,26)),((30,61),(62,45),(59,119)),((116,90),(156,198),(373,326)).結(jié)合特征金字塔網(wǎng)絡(luò)(Feature pyramidnetwork,FPN)[25]的思想,后面生成的特征圖融合前面生成的特征圖,可以提高對中小物體檢測的準確率,最終在82,94,106 層分別經(jīng)過輸出對大,中,小目標的檢測結(jié)果.根據(jù)前面YOLOv3 在極性電子元器件的數(shù)據(jù)集上得到適用于該數(shù)據(jù)集的3 個Anchor boxes:((118,175),(190,102),(185,154)).顯而易見,該數(shù)據(jù)集都是大目標,這3 個Anchor boxes 與算法在13×13 特征圖對應(yīng)的Anchor boxes ((116,90),(156,198),(373,326)) 最為接近,在13×13 特征圖上進行遍歷能有最好的結(jié)果.其他兩種特征圖在該數(shù)據(jù)集上明顯多余,基于此,我們對YOLOv3 結(jié)構(gòu)進行改進,刪減生成52×52,26×26 特征圖的結(jié)構(gòu),保留中間的下采樣結(jié)構(gòu),把原來106 層的結(jié)構(gòu)縮減為46 層的結(jié)構(gòu),如圖8 所示.
圖7 YOLOv3 的網(wǎng)絡(luò)結(jié)構(gòu)Fig.7 YOLOv3 network structure
圖8 YOLOv3-BigObject 的網(wǎng)絡(luò)結(jié)構(gòu)Fig.8 YOLOv3-BigObject network structure
YOLOv3-BigObject 具體的網(wǎng)絡(luò)結(jié)構(gòu)如圖9 所示,由YOLOV3 的Darknet-53 結(jié)構(gòu)改進得到,它主要由5 個下采樣層、11 個殘差塊、1 個平均池化層、1個全連接層組成.下采樣層、殘差塊中的卷積層依次包含有二維卷積(Conv2d)、批歸一化(Batch normalization,BN)、LeakyReLU.其中,BN 的目的是為了防止梯度消失,在不破壞特征分布的情況下將輸入控制在一個穩(wěn)定的范圍內(nèi),使網(wǎng)絡(luò)中每層輸入數(shù)據(jù)分布比較穩(wěn)定,并且可以加速模型的學習速率,式(1) 為其計算公式,其中y為經(jīng)過BN 后的輸出,x為BN 的輸入,γ,β分別為可學習的縮放參數(shù)與偏移參數(shù),ε是趨向于0 的參數(shù),預防式中分母為0.
圖9 YOLOv3-BigObject 的內(nèi)部網(wǎng)絡(luò)參數(shù)設(shè)置結(jié)構(gòu)Fig.9 The Internal network parameter setting structure of the YOLO v3-BigObject
在經(jīng)過BN 后,BN 所得的結(jié)果輸入激活函數(shù)中,在此算法結(jié)構(gòu)中的激活函數(shù)為LeakyReLU,如式(2) 所示,LeakyReLU 是一個非飽和激活函數(shù),而且給所有負值賦予一個非零斜率,以解決梯度消失、加快收斂速度、避免神經(jīng)元死亡等問題.
本文實驗的顯卡設(shè)備為NVIDIA GeForce GTX 1080 Ti.實驗分為三部分:實驗1 用于證明本文所選取Anchor boxes 的方式在準確率上有一定的提升,我們分別用Faster RCNN 和YOLOv3算法對其進行驗證,并在測試集中進行測試.在Faster RCNN 的實驗中,設(shè)置的Batch size 為1,訓練步數(shù)為140 000;在YOLOv3 的實驗中,設(shè)置的Batch size 為64,訓練步數(shù)為50 000.實驗2 用于證明YOLOv3-BigObject 網(wǎng)絡(luò)結(jié)構(gòu)有顯著的提升效果,我們分別用YOLOv3 的網(wǎng)絡(luò)結(jié)構(gòu)和YOLOv3-BigObject 進行訓練和測試,訓練方式和實驗1 相同,然后對比兩者的訓練與測試情況.實驗3 用于驗證算法的性能,檢驗增加類別后算法的魯棒性,在數(shù)據(jù)集1 的基礎(chǔ)上增加數(shù)據(jù)集2 作為該實驗的數(shù)據(jù)集.
在實驗1 中,用數(shù)據(jù)集1 進行實驗,經(jīng)過調(diào)節(jié)學習率、數(shù)據(jù)增強等步驟,我們設(shè)計的深度學習算法能夠很好地識別極性電子元器件的類別與方向,如圖10 所示,標簽第1 個數(shù)字是表示種類,后面的數(shù)字表示方向.在Faster RCNN 算法中,我們用算法提供的9 個Anchor boxes 與K-means算法設(shè)計的Anchor boxes 進行實驗對比,原Anchor boxes 與訓練集的平均IoU 為0.7037,Faster RCNN (VGG-16)、Faster RCNN (ResNet101) 在測試集中的mAP 分別為93.77% 和97.05%.經(jīng)過K-means 算法設(shè)計Anchor boxes 的大小與個數(shù),所設(shè)計的6 個Anchor boxes 與訓練集的平均IoU 為0.8577,Faster RCNN (VGG-16)、Faster RCNN(ResNet101) 在測試集中的mAP 分別為94.95%和97.36%,mAP 分別提高了1.18%、0.31%.在YOLOv3 算法中,用算法提供的9 個Anchor boxes進行訓練,Anchor boxes 與訓練集的平均IoU 為0.5728.在測試集中的mAP 為99.22%.經(jīng)過Kmeans 算法選取Anchor boxes 的大小與個數(shù),我們所選取的Anchor boxes 與訓練集的平均IoU 為0.7362,最終在測試集中的mAP 為99.31%.圖11和圖12 分別是Faster RCNN 和YOLOv3 訓練過程中損失函數(shù)(Loss) 的下降曲線.由上面的實驗結(jié)果可知,經(jīng)過K-means 算法對特定數(shù)據(jù)集提取Anchor boxes 的個數(shù)與大小在測試集上表現(xiàn)得更優(yōu)異,兩種算法都大大提高了與訓練集的平均IoU.這樣選取的方式使網(wǎng)絡(luò)在學習Anchor boxes 回歸時復雜度降低,進一步提高了檢測的精度.在Faster RCNN中,經(jīng)過K-means 算法選取的Anchor boxes 在訓練時的Loss 的收斂速度與收斂效果比9 個Anchor boxes 表現(xiàn)得更好.
圖10 測試集結(jié)果展示Fig.10 The display of test sets result
圖11 Faster RCNN (ResNet101) 的Loss 曲線Fig.11 The loss curves of Faster RCNN (ResNet101)
圖12 YOLOv3 和YOLOv3-BigObject 的Loss 曲線Fig.12 The loss curves of YOLOv3 and YOLOv3-BigObject
在實驗2 中,用數(shù)據(jù)集1 進行實驗,檢驗YOLOv3-BigObject 在極性元器件分類與方向識別的效果,通過對YOLOv3 和YOLOv3-BigObject網(wǎng)絡(luò)結(jié)構(gòu)的訓練和測試,結(jié)果如表3 所示.在經(jīng)過50 000 次迭代后,YOLOv3-BigObject 在測試集中的mAP 為99.44%.相比于YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu),mAP 提高0.13%,兩者mAP 相近.但YOLOv3-BigObject 的檢測速度幾乎是YOLOv3 的一半.YOLOv3-BigObject 在訓練過程的Loss 下降得比較緩慢,如圖10,其主要原因是,預訓練模型中每一層負責感知的特征已經(jīng)學習形成,改變結(jié)構(gòu)后,對目標物體的整體感知不全,相當于每層需重新學習感知對應(yīng)的特征,這是Loss 下降緩慢的最主要原因.綜上所述,YOLOv3-BigObject 網(wǎng)絡(luò)結(jié)構(gòu)在大目標檢測上有與原來網(wǎng)絡(luò)結(jié)構(gòu)相當?shù)臏蚀_率的基礎(chǔ)上,將檢測速度大約提高到原來的兩倍.
表3 數(shù)據(jù)集1 的實驗結(jié)果Table 3 Experimental result of dataset 1
我們在數(shù)據(jù)集1 的基礎(chǔ)上,進一步增加了數(shù)據(jù)集2 對算法進行實驗驗證,實驗結(jié)果如表4所示,結(jié)果顯示運用K-means 算法設(shè)計Anchor boxes 后,Faster RCNN 與YOLOv3 的算法性能依然得到了一定程度的提升,而且實驗效果比在FPN、SSD 等算法中表現(xiàn)得更好.在本實驗中,YOLOv3-BigObject 的mAP 高達0.9920,證明了YOLOv3-BigObject 即使在增加種類后的情況下,也具有比較好的性能.為了進一步更好地檢驗算法的性能,我們選用了一個焊接有數(shù)據(jù)集1 和數(shù)據(jù)集2中的5 種型號的元器件電路板,但不是用來拍攝制作數(shù)據(jù)集的元器件對焊有元器件的電路板進行視頻拍攝,并用YOLOv3-BigObject 生成的算法模型對視頻進行檢測,結(jié)果如圖13 所示.實驗結(jié)果顯示我們的算法能夠很好地檢測出電路板上元器件的類別與方向,進一步證明了我們的算法具有很好的魯棒性和實用性.
圖13 視頻檢測結(jié)果Fig.13 Video experimental result
表4 數(shù)據(jù)集1 和數(shù)據(jù)集2 的實驗結(jié)果Table 4 Experimental result of datasets 1 and 2
本文提出了一種基于深度學習的算法,實現(xiàn)了極性電子元器件的類別與方向檢測.實驗結(jié)果表明,我們所改進的深度學習算法在電子元器件的類別分類上比傳統(tǒng)算法和卷積網(wǎng)絡(luò)上表現(xiàn)得更好,而且還能進一步識別類別的方向.通過K-means 算法設(shè)計Anchor boxes 的方式提高了深度學習算法檢測的準確率和速度.本文也對YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)進行了壓縮改進,其在檢測大目標提高準確率的同時,將檢測時間幾乎縮小到一半,進一步達到實時檢測的效果,最后將算法模型運用到焊接有元器件的電路板上檢測,得到很好的效果.本文所提出的方法在極性電子元器件類別、方向識別、定位、焊接和檢測等方面也同樣有很大的應(yīng)用潛力.雖然本文在極性電子元器件目標檢測與方向識別上能夠得到很好的識別效果,但其仍然有很大的改進空間,主要有兩個方面:一是類別增多問題,二是方向識別提升精度問題.在第一個方面,類別增多使分類更加復雜,未來可以進行如下展望:1) 建立更加龐大規(guī)范的數(shù)據(jù)集;2) 在達到算法模型能夠高準確率分類的最大類別數(shù)時,對電路板進行劃區(qū)域或劃種類對模型進行訓練.在第二個方面,如何進一步將方向識別的精度提升到具體多少度,可以考慮下面幾個方面:1) 與其他回歸方法結(jié)合的方式得到具體角度;2) 借鑒文本檢測的思想,用帶角度(如:與水平線夾角每轉(zhuǎn)30?為一個Anchor) 的Anchor 加上回歸方法得到具體的角度;3) 用語義分割的方法識別出每個元器件的區(qū)域,再對元器件區(qū)域用傳統(tǒng)圖像處理的方法進行邊緣檢測等操作得到具體角度.