梁銘炬
(廣東順德工業(yè)設(shè)計研究院(廣東順德創(chuàng)新設(shè)計研究院),廣東 佛山 528300)
在現(xiàn)存的初中物理電路實驗教學(xué)中,由于存在單個老師無法同時對多個學(xué)生的實驗操作進行評分的問題,因此需要開發(fā)基于嵌入式設(shè)備的智能電路實驗評分系統(tǒng),利用該系統(tǒng)對人工智能進行評分,基于目標檢測算法的電路元器件檢測是該系統(tǒng)的的關(guān)鍵之一。
目前,應(yīng)用較為廣泛的基于深度學(xué)習(xí)的目標檢測算法可分為2 類:1) 基于候選區(qū)域的目標檢測算法。具有代表性的算法有R-CNN、Fast R-CNN 和Faster R-CNN 等[1]。2) 基于回歸的目標檢測。具有代表性的算法有SSD、YOLOv2 和YOLOv3 等[2]。與第一類算法相比,它們具有檢測速度高、檢測精準率低的特點。
針對嵌入式設(shè)備存在計算能力不足的問題,該文以YOLOv3-Tiny 算法為基礎(chǔ)提出了OP_YOLOv3 Tiny 算法。首先,采用5 層MAX Pooling 對特征矩陣進行OP 降維操作,削弱池化的特征弱化現(xiàn)象。其次,優(yōu)化調(diào)整圖像尺寸,豐富小目標的淺、深層語義信息,提高檢測小目標的精準率;同時,在訓(xùn)練算法模型前,使用K-means聚類算法獲得訓(xùn)練集最佳Anchor box 參數(shù)。最后,在采集到的電路實驗器材數(shù)據(jù)集上進行訓(xùn)練和測試。
在網(wǎng)絡(luò)結(jié)構(gòu)上,YOLOv3-Tiny 算法使用卷積層、批歸一化層及激活函數(shù)層融合的結(jié)構(gòu)提取輸入圖像的特征,并采用非重疊最大池化操作對特征矩陣進行降采樣,同時,使用2 個不同尺度的特征圖(feature map)進行目標預(yù)測。YOLOv3-Tiny 算法的模型結(jié)構(gòu)如圖1 所示。
圖1 YOLOv3_Tiny 算法網(wǎng)絡(luò)結(jié)構(gòu)圖
YOLOv3-Tiny 算法可以接受任意尺寸的圖像數(shù)據(jù),輸入數(shù)據(jù)在送入卷積神經(jīng)網(wǎng)絡(luò)之前被調(diào)整為固定尺寸。輸入圖像經(jīng)過卷積神經(jīng)網(wǎng)絡(luò)后被劃分為S×S個網(wǎng)格,每個網(wǎng)格單元分別預(yù)測3 個錨框,每個錨框都有5 個基本參數(shù):(x、y、w、h和confidence),分別代表檢測框的中心點坐標(x,y)、寬高(w,h)和置信度評分(confidence),置信度評分Cobj如式(1)所示。
YOLOv3-Tiny 算法采用最大池化模型對輸入特征圖進行非重疊池化降維。最大池化模型則是取池化區(qū)域中的最大值作為該區(qū)域池化降采樣后的特征值。假設(shè)某最大池化層池化域為C×C、步長為C且偏置為B,輸入特征圖矩陣F通過該層非重疊池化操作后得到的降采樣特征圖為S,那么最大池化層如公式(3)所示。
在實際檢測物理電路實驗器材的過程中,為了最大程度地減小檢測攝像頭對學(xué)生操作的影響,需要使攝像頭與實驗臺保持一定的距離(通常大約為1 m)。這個距離會導(dǎo)致一些尺寸較小的實驗器材(例如小燈泡、單刀開關(guān)等)在YOLOv3-Tiny 算法的13×13、26×26 尺寸的feature map 下并不能取得令人滿意的檢測效果[4]。該文在YOLOv3-Tiny 算法的基礎(chǔ)上提出OP_YOLOv3 Tiny 算法,其特征提取主干網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。
圖2 優(yōu)化YOLOv3-Tiny 算法特征提取主干網(wǎng)絡(luò)
首先,在YOLOv3-Tiny 算法特征提取主干網(wǎng)絡(luò)的前五層MAX Pooling 層中引入重疊池化降維操作,選取重疊池化域中的最大值作為該區(qū)域降維后的特征值。假設(shè)MAX Pooling層輸入特征圖大小為M×M,經(jīng)過重疊池化操作后輸出特征圖大小為N×N,池化域尺寸為K、步長為S,則其滿足公式(4)。該文在試驗過程中認真權(quán)衡算法模型的檢測精準率和計算復(fù)雜度,最終選取池化域尺寸K為3、步長S為2 的MAX Pooling 層對特征矩陣進行降維。其次,刪除YOLOv3-Tiny 算法中第六層池化域尺寸K為1、步長S為1 的MAX Pooling 層,減少模型訓(xùn)練測試過程中的冗余計算量;同時,重新定義網(wǎng)絡(luò)結(jié)構(gòu)的初始輸入圖像尺寸,以639×639×3 的像素作為初始輸入圖像的大小,經(jīng)過5 層融合的歸一化及激活函數(shù)層結(jié)構(gòu)提取特征以及4 層池化域尺寸K為3、步長S為2 的MAX Pooling 層降采樣后,得到尺寸為39×39×256的淺層語義信息輸出特征矩陣;再經(jīng)過3 層DBL 結(jié)構(gòu)及1層池化域尺寸K為3、步長S為2 的MAX Pooling 層再次提取該輸出特征矩陣的特征并進行及降采樣,得到尺寸為19×19×256 的深層語義信息輸出特征矩陣。最后,通過特征融合的方式進行目標檢測。
針對初中物理電路實驗器材數(shù)據(jù)集的特點,該文采用K-means 聚類算法對訓(xùn)練集邊界框進行聚類分析,從而得到錨框[5]。但是在實際的聚類分析中,分析誤差會隨著邊界框尺寸的變大而變大。為解決這一問題并保證聚類分析誤差與邊界框尺寸無關(guān),該文重新定義了K-means 聚類算法中的距離公式,如公式(5)所示。
該文采用重新定義距離公式的K-means 聚類算法對采集到的電路實驗器材訓(xùn)練集邊界框進行聚類分析。在聚類過程中,將聚類中心的數(shù)值設(shè)置為K=6,得到得新的Anchor box參數(shù)分別為(37,63)、(69,74)、(51,125)、(131,87)、(87,161)以及(157,254)。
訓(xùn)練數(shù)據(jù)集制作是基于深度學(xué)習(xí)的目標檢測算法的基礎(chǔ)。該文使用的初中物理電路實驗器材數(shù)據(jù)集來源分為2 個部分:自行拍攝采集和互聯(lián)網(wǎng)數(shù)據(jù)搜集。其中,自行拍攝采集為該文使用數(shù)據(jù)集的主要來源,互聯(lián)網(wǎng)數(shù)據(jù)搜集為次要來源。
為了使采集到的數(shù)據(jù)集具有較高的質(zhì)量且可以訓(xùn)練出具有較強的多場景、復(fù)雜場景檢測能力的模型,在數(shù)據(jù)采集過程中,需要不斷改變拍攝角度、背景以及光照等外界因素,從而初步增強數(shù)據(jù)集的魯棒性。在數(shù)據(jù)集采集完畢之后,對數(shù)據(jù)集進行質(zhì)量篩選,剔除存在模糊、失真以及特征不明顯等問題的樣本,同時兼顧不同角度、不同背景以及不同光照下的樣本數(shù)量,使樣本數(shù)量在整體上達到均衡。經(jīng)過篩選的數(shù)據(jù)集的類別名稱及數(shù)量見表1。
表1 數(shù)據(jù)集類別及數(shù)量
該文使用MRLabeler 標注軟件并參照Pascal VOC 和COCO 數(shù)據(jù)集的圖像標注格式對獲得的數(shù)據(jù)集進行標注,生成訓(xùn)練所需要的xml 格式文件。
該文使用Python 語言在Darknet 深度學(xué)習(xí)框架下進行實驗。PC 端搭載了i7-9700k 處理器、GTX 2080Ti 11G 顯卡、64 GB 運行內(nèi)存以及Ubuntu18.04 操作系統(tǒng)。
在訓(xùn)練模型的過程中,根據(jù)訓(xùn)練過程中的損失(loss)值和IOU值對網(wǎng)絡(luò)參數(shù)進行微調(diào)。部分超參數(shù)設(shè)置見表2。
表2 部分超參數(shù)值
該文從以下2 個方面評測OP_YOLOv3 Tiny 算法的網(wǎng)絡(luò)模型性能。
精確率(AP)。精確度如公式(7)所示。
式中:Tp為真正標簽;Fp為假正標簽。
每秒處理幀數(shù)(fps)。在PC 端上通過USB 接口掛載嵌入式開發(fā)板RK3399Pro,模擬開發(fā)板的硬件性能,并通過終端打印OP_YOLOv3 Tiny 算法模型的每秒處理幀數(shù)。
該文使用SSD300、SSD512[6]、YOLOv3、YOLOv3-Tiny和OP_YOLOv3 Tiny 算法在相同的條件下對采集到的電路實驗器材數(shù)據(jù)集進行訓(xùn)練與測試,并通過在PC 端掛載嵌入式開發(fā)板RK3399Pro,模擬開發(fā)板硬件性能,得到AP、fps等技術(shù)指標(見表3)。由表3 可知,該文提出的OP_YOLOv3 Tiny 算法在實驗器材數(shù)據(jù)集上的檢測精準率達到88.1%,在嵌入式RK3399Pro 開發(fā)板上的檢測幀率達到33.8 f/s,完全可以達到實時檢測的效果。
表3 不同算法的技術(shù)指標
SSD300 與SSD512 均為基于回歸及特征金字塔的目標檢測算法,該系列算法使用與Anchor box 機制相似的預(yù)選框(Prior box)。從表3 中可以看出,SSD300 算法在電路實驗器材數(shù)據(jù)集上的檢測精準率達到75.6%,在嵌入式RK3399Pro開發(fā)板上的檢測幀率達到37.6 f/s。SSD512 算法在SSD300 的基礎(chǔ)上改變了算法網(wǎng)絡(luò)結(jié)構(gòu)輸入圖像尺寸的大小,在顯著提高檢測精確率的同時大幅增加了模型的計算量,其檢測精準率與SSD300 算法相比提高了5.6%,檢測幀率下降了12.3 f/s。綜上所述,SSD300 算法在檢測幀率上可以達到實時檢測的效果,但其檢測精確率較低;SSD512算法的檢測精準率有所提升,檢測幀率僅出現(xiàn)小幅度下降,但這2 種算法與該文提出的OP_YOLOv3 Tiny 算法相比都沒有優(yōu)勢。
YOLOv3 算法與YOLOv3-Tiny 不同,其采用結(jié)構(gòu)更為復(fù)雜的darknet-53 特征提取主干網(wǎng)絡(luò)提取輸入圖像的特征,并在前向傳播的過程中,放棄使用MAX Pooling 層,通過改變卷積核的步長來改變特征矩陣的尺寸,同時在輸出方面采用3 種尺度的feature map 進行目標預(yù)測,因此該算法在電路實驗器材數(shù)據(jù)集上的檢測精準率達到了95.6%,但由于其權(quán)重模型計算復(fù)雜度過高,導(dǎo)致該算法在嵌入式RK3399Pro 開發(fā)板上的檢測幀率僅有14.9 f/s,無法達到實時檢測的效果。
該文提出的OP_YOLOv3 Tiny 算法在嵌入式RK3399Pro 開發(fā)板上檢測幀率達到33.8 f/s,比YOLOv3-Tiny 算法低2.3 f/s,其檢測精準率比YOLOv3-Tiny 算法高4.7%,可以滿足實時檢測的要求。因此,在實際的應(yīng)用中,該文提出的OP_YOLOv3 Tiny 算法更具優(yōu)勢。
該文以YOLOv3-Tiny 算法為基礎(chǔ)提出OP_YOLOv3 Tiny算法。首先,在算法特征提取主干網(wǎng)絡(luò)中采用5 層MAX Pooling 對特征矩陣進行重疊池化降維,削弱池化的特征弱化現(xiàn)象。其次,優(yōu)化調(diào)整算法輸入圖像的尺寸,豐富小目標的淺層語義信息、深層語義信息,提高算法檢測小目標的精準率。最后,使用K-means 聚類算法聚類獲得契合電路實驗器材數(shù)據(jù)集最佳Anchor 的個數(shù)與大小,改進算法參數(shù)。在該文采集的電路實驗器材數(shù)據(jù)集上測試得出,OP_YOLOv3 Tiny 算法的檢測精準率(AP)達到88.1%,在嵌入式開發(fā)板RK3399Pro 上的檢測幀率(fps)高達33.8 f/s,滿足實時檢測的要求。