林耀海,趙洪璐,楊澤燦,林夢(mèng)婷
(1. 福建農(nóng)林大學(xué)計(jì)算機(jī)與信息學(xué)院,福州 350002; 2. 智慧農(nóng)林福建省高等學(xué)校重點(diǎn)實(shí)驗(yàn)室(福建農(nóng)林大學(xué)),福州 350002)
原木材積檢測(cè)是木材貿(mào)易、加工和流通中的重要環(huán)節(jié),材積檢測(cè)的效率和準(zhǔn)確率直接關(guān)系著原木行業(yè)的經(jīng)濟(jì)效益;因此,我國(guó)木材加工、流通、管理等多部門一直渴望得到一套有效的原木材積檢測(cè)系統(tǒng)。依據(jù)我國(guó)國(guó)家標(biāo)準(zhǔn)GB/T 4814—2013《原木材積表》,原木的材積計(jì)算由木材端面徑級(jí)和木材長(zhǎng)度兩個(gè)參數(shù)決定。原木貿(mào)易、流通行業(yè)中,同一批次木材的長(zhǎng)度相對(duì)固定,較容易獲得,相比之下,原木端面大小不一,難以快速獲得其徑級(jí)。如果采用人工檢測(cè)端面徑級(jí),存在主觀隨意性大、勞動(dòng)強(qiáng)度高和效率低的問(wèn)題。
國(guó)內(nèi)諸多學(xué)者提出了多種基于計(jì)算機(jī)視覺技術(shù)的原木材積檢測(cè)算法[1-5],采用計(jì)算機(jī)視覺技術(shù)進(jìn)行檢測(cè),不僅檢尺效率高、成本低,而且避免了主觀隨意性。學(xué)者們提出的端面檢測(cè)算法,如應(yīng)用Hough變換圓檢測(cè)[3,6]、圓弧檢測(cè)[2]、K-means聚類[3,5]、FCM聚類等算法,其主要利用的是原木端面為類圓的幾何特征,原木邊緣、紋理等特征進(jìn)行識(shí)別。這些算法在原木端面較為完整干凈的情況下能夠準(zhǔn)確實(shí)現(xiàn)原木材積檢測(cè)。但是,在原木背景環(huán)境復(fù)雜、色彩變化差異較大、邊緣模糊,或者原木端面存在明顯年輪、污漬的情況下,少有算法可以準(zhǔn)確識(shí)別定位原木,這就要求設(shè)計(jì)魯棒性更強(qiáng)的原木材積檢測(cè)系統(tǒng)。
本課題結(jié)合深度學(xué)習(xí)和Hough變換,搭建等長(zhǎng)原木材積檢測(cè)系統(tǒng),不僅能實(shí)現(xiàn)在復(fù)雜環(huán)境下的原木材積快速檢測(cè),而且提供了友好的圖形化用戶界面,方便原木材積檢測(cè)人員的使用。
本課題提出的木材材積檢測(cè)系統(tǒng)可分為硬件系統(tǒng)與軟件系統(tǒng)兩大部分,其中主要硬件系統(tǒng)如圖1所示。實(shí)驗(yàn)采用英特爾公司的NUC6i7KYK微型計(jì)算機(jī)作為個(gè)人電腦部分,搭載Intel四核八線程i7處理器,操作系統(tǒng)為ubuntu16.04。攝像機(jī)采用USB接口免驅(qū)動(dòng)攝像頭,工作電壓為5 V,視角為75°,分辨率為1 920×1 080,圖像輸出格式為MJPG。
軟件系統(tǒng)主要分為前端用戶界面和后端材積檢測(cè)算法兩大部分。前端用戶界面使用基于PyQt5核心庫(kù)開發(fā)的圖形化系統(tǒng)用戶界面設(shè)計(jì)并實(shí)現(xiàn),為原木材積檢測(cè)人員提供一個(gè)友好的用戶界面,方便非計(jì)算機(jī)專業(yè)人員的使用。后端材積檢測(cè)算法結(jié)合了深度學(xué)習(xí)和Hough變換圓檢測(cè)技術(shù)。
a. 個(gè)人電腦; b. USB攝像頭; c. 原木。圖1 等長(zhǎng)原木材積檢測(cè)系統(tǒng)Fig. 1 An equal length log volume inspection system
YOLO (you only look once)系列卷積神經(jīng)網(wǎng)絡(luò)[7-10]自從2016年被提出后在工業(yè)界得到廣泛應(yīng)用,并獲得一致好評(píng)。與當(dāng)前其他目標(biāo)檢測(cè)神經(jīng)網(wǎng)絡(luò)相比,如Fast R-CNN[11]、Faster R-CNN[12]、SPP-Net[13],YOLO系列卷積神經(jīng)網(wǎng)絡(luò)采用整張圖像作為網(wǎng)絡(luò)的輸入,其網(wǎng)絡(luò)結(jié)構(gòu)能更好地學(xué)習(xí)到圖像中的上下文信息。同時(shí),網(wǎng)絡(luò)模型的泛化性能、網(wǎng)絡(luò)訓(xùn)練和檢測(cè)效率等都得到了提高。該網(wǎng)絡(luò)屬于典型的one-stage結(jié)構(gòu)的目標(biāo)檢測(cè)網(wǎng)絡(luò),即端到端的訓(xùn)練方式,有著訓(xùn)練、檢測(cè)速度快等優(yōu)點(diǎn)。
YOLOv1[7]網(wǎng)絡(luò)把輸入的圖像分割為S×S網(wǎng)格。每一個(gè)網(wǎng)格負(fù)責(zé)檢測(cè)物體中心位于當(dāng)前網(wǎng)格的待檢測(cè)目標(biāo),并預(yù)測(cè)B個(gè)候選框(bounding boxes),然后計(jì)算其預(yù)測(cè)物體的置信度(confidence scores),以便表達(dá)YOLO檢測(cè)系統(tǒng)中該物體在該位置的可信度。
YOLOv2[9]網(wǎng)絡(luò)在YOLOv1的基礎(chǔ)上改進(jìn),并提出檢測(cè)與分類聯(lián)合訓(xùn)練,可以檢測(cè)9 000多類物體,故也被稱為YOLO9000。YOLOv2在保持檢測(cè)速度的前提下加入BN[14](batch normalization)加速網(wǎng)絡(luò)的收斂,同時(shí)提出了Anchor Boxes來(lái)提升模型的召回率。YOLOv3算法[10]在YOLOv1和YOLOv2基礎(chǔ)上改進(jìn),引入了殘差模型Darknet-53和FPN架構(gòu)。YOLOv3通過(guò)提取最后3層特征圖,在每個(gè)特征圖上分別做獨(dú)立預(yù)測(cè),實(shí)現(xiàn)了多尺度特征檢測(cè),較大地提升了性能。YOLOv3-tiny在YOLOv3的基礎(chǔ)上去掉了一些特征層,保留2個(gè)獨(dú)立預(yù)測(cè)分支,即兩個(gè)尺度的輸出,這使得檢測(cè)速度得到進(jìn)一步提高。YOLOv3-tiny卷積神經(jīng)網(wǎng)絡(luò)兩個(gè)尺度的輸出分別為13×13和26×26,多尺度的輸出有效地避免YOLOv3-tiny中出現(xiàn)對(duì)小目標(biāo)物體難以檢測(cè)的問(wèn)題。在YOLOv3-tiny網(wǎng)絡(luò)中,網(wǎng)絡(luò)輸入圖片大小為416×416,其中共有13層卷積層和6層池化層,網(wǎng)絡(luò)具體結(jié)構(gòu)如圖2所示。在YOLOv3-tiny網(wǎng)絡(luò)中,26×26尺度輸出中融合了Conv_5卷積層和Conv_11層上采樣的信息,采樣后的結(jié)果采用Concat操作,其不僅保存原有網(wǎng)絡(luò)層的數(shù)值信息,還保留了空間位置信息。
YOLOv3-tiny網(wǎng)絡(luò)的輸出模型可以抽象表示為一個(gè)S×S×B×(5+C)的張量。由于等長(zhǎng)原木徑級(jí)檢測(cè)系統(tǒng)中待檢測(cè)目標(biāo)只有一個(gè)類別,即原木,故其C=1,采用的候選框個(gè)數(shù)為3,即B=3,網(wǎng)絡(luò)最后輸出張量深度為18。等長(zhǎng)原木材積檢測(cè)系統(tǒng)使用的卷積神經(jīng)網(wǎng)絡(luò)中,在Conv_10和Conv_13兩個(gè)卷積層采用的卷積核個(gè)數(shù)為18,這保證了網(wǎng)絡(luò)最后的輸出結(jié)構(gòu)深度為18。
圖2 YOLOv3-tiny原木檢測(cè)網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig. 2 YOLOv3-tiny detection of log network structure diagram
YOLOv3-tiny卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練后能對(duì)原木端面圖像中的原木進(jìn)行目標(biāo)檢測(cè),但是原木端面的徑級(jí)識(shí)別準(zhǔn)確度較低??紤]到Y(jié)OLOv3-tiny卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行目標(biāo)檢測(cè)后,可獲得原木端面所在圖像中的大體位置,本課題提出采用Hough變換圓檢測(cè)[15]進(jìn)行接下來(lái)的原木端面徑級(jí)識(shí)別。
Hough變換圓檢測(cè)方法采用圖像空間與參數(shù)空間中的對(duì)偶關(guān)系來(lái)檢測(cè)圓。對(duì)于一個(gè)半徑為r、圓心為(a,b)的圓,在圖像空間中圓上的點(diǎn)表示為(x0,y0),其對(duì)應(yīng)的參數(shù)空間為三維(a,b,r)。圖像空間上的一點(diǎn)(x0,y0)對(duì)應(yīng)著參數(shù)空間中的一個(gè)錐面,圖像空間的一個(gè)圓對(duì)應(yīng)著一簇錐面相交的一個(gè)點(diǎn)。由于Hough變換圓檢測(cè)的參數(shù)空間為三維,當(dāng)待檢測(cè)圖像中干擾邊緣多,或存在多個(gè)檢測(cè)圓時(shí),其檢測(cè)效果十分不理想。而本課題中的原木端面圓檢測(cè)可以利用YOLOv3-tiny卷積神經(jīng)網(wǎng)絡(luò)對(duì)原木端面進(jìn)行目標(biāo)檢測(cè)后的輸出位置信息(x,y,w,h),從而能有效避免上述問(wèn)題。
YOLOv3-tiny對(duì)原木端面進(jìn)行目標(biāo)檢測(cè)后的輸出結(jié)果為原木端面在圖像中的位置信息(x,y,w,h),其中(x,y)代表原木端面外包矩形框左上角坐標(biāo),(w,h)代表原木端面外包矩形的寬度和高度。YOLOv3-tiny模型目標(biāo)檢測(cè)后,根據(jù)原木端面的位置信息,截取該區(qū)域圖像,提取邊緣并去除中心的噪聲點(diǎn),最后運(yùn)行Hough變換圓檢測(cè)。由于YOLOv3-tiny模型截取的區(qū)域僅存在一根原木,所以Hough參數(shù)空間中僅需選取1個(gè)峰值點(diǎn),對(duì)應(yīng)到圖像空間,即為檢測(cè)原木端面中心和徑級(jí)。
本系統(tǒng)搭建過(guò)程中訓(xùn)練YOLOv3-tiny卷積神經(jīng)網(wǎng)絡(luò)的圖片包括:完好端面、霉變端面、伐痕端面、輪廓形狀不規(guī)則端面等各類復(fù)雜端面原木,共計(jì)336張?jiān)紙D片。其中82張拍攝于福建省永安市某林場(chǎng),另一部分來(lái)自互聯(lián)網(wǎng)。采用276張圖片作為訓(xùn)練集,余下的60張為測(cè)試集。每張圖片中的原木從3~100棵不等。數(shù)據(jù)集采用Pascal VOC2007標(biāo)準(zhǔn)格式,制作工具為L(zhǎng)abelImage,帶標(biāo)注(空心小圓點(diǎn))的原木端面圖像,如圖3所示。識(shí)別結(jié)果為原木,標(biāo)志為log。表1列出了完好端面、霉變端面、伐痕端面、輪廓形狀不規(guī)則端面的原木圖片數(shù)量(注:霉變、劃痕和輪廓形狀不規(guī)則端面可能同時(shí)存在一張圖片中)。
為了提高模型的魯棒性和泛化能力,在訓(xùn)練模型前,本實(shí)驗(yàn)對(duì)訓(xùn)練集中每一張圖像進(jìn)行了擴(kuò)充數(shù)據(jù)集處理。其中包括:1)圖片旋轉(zhuǎn);2)調(diào)整曝光度、色調(diào)、飽和度;3)添加高斯噪聲。
圖3 數(shù)據(jù)集樣本標(biāo)注Fig. 3 Labelled images in dataset
表1 各類原木端面圖像Table 1 Log face images 張
在訓(xùn)練階段,首先把數(shù)據(jù)集中圖像全部轉(zhuǎn)為416×416,以方便網(wǎng)絡(luò)進(jìn)行輸入訓(xùn)練。本課題實(shí)驗(yàn)中網(wǎng)絡(luò)訓(xùn)練以32張圖像為一個(gè)批次進(jìn)行小批量訓(xùn)練,每次更新權(quán)重時(shí)采用BN進(jìn)行正則化處理,動(dòng)量值設(shè)置為0.9,網(wǎng)絡(luò)初始訓(xùn)練學(xué)習(xí)率為0.001,權(quán)值衰減值為0.000 5。模型訓(xùn)練與測(cè)試硬件平臺(tái)同為英偉達(dá)公司的嵌入式開發(fā)深度學(xué)習(xí)平臺(tái)Jeston TX2,操作系統(tǒng)為ubuntu16.04,共計(jì)為YOLOv3-tiny模型進(jìn)行了13萬(wàn)次迭代。
為了獲取合適的候選框,使得YOLOv3-tiny網(wǎng)絡(luò)的預(yù)測(cè)框能更加貼合實(shí)際標(biāo)記框,采用K-means聚類計(jì)算出合適的候選框大小,其中K-means使用的為歐式空間距離。得到的6個(gè)錨定框?yàn)?12×12)、(25×25)、(46×48)、(78×82)、(170×172)、(332×320),在網(wǎng)絡(luò)的26×26的輸出上使用前3個(gè)錨定框,13×13的輸出上使用后3個(gè)錨定框。
在對(duì)YOLOv3-tiny模型進(jìn)行13萬(wàn)次迭代后,模型對(duì)原木端面具有良好的檢測(cè)效果如圖4所示。針對(duì)原木所在背景復(fù)雜,端面存在裂變、霉變,以及端面不整潔等復(fù)雜情況都有很好的檢測(cè)效果。值得一提的是,由于在模型訓(xùn)練過(guò)程中,采用數(shù)據(jù)集增強(qiáng)方式,模型能適應(yīng)光線強(qiáng)弱變化大的應(yīng)用場(chǎng)景。
a)原木端面整潔;b)背景復(fù)雜;c、d)端面不整潔且存在裂變。圖4 YOLOv3-tiny在復(fù)雜情況下識(shí)別結(jié)果Fig. 4 YOLOv3-tiny results in complex situations
原木端面徑級(jí)檢測(cè)主要流程如圖5所示。首先對(duì)原木端面圖像采用Canny算子進(jìn)行邊緣提取。根據(jù)YOLOv3-tiny卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)的位置信息(x,y,w,h),考慮到Y(jié)OLOv3-tiny輸出的預(yù)測(cè)框可能沒有包括原木端面的完整輪廓,故對(duì)YOLOv3-tiny的輸出區(qū)域進(jìn)行拓展,其拓展大小為5個(gè)像素點(diǎn),如圖5步驟①所示;再根據(jù)YOLOv3-tiny輸出的位置信息計(jì)算待檢測(cè)目標(biāo)(原木)的中心位置,以該中心位置為圓心,半徑為R的圓區(qū)域去除噪聲邊緣點(diǎn),如圖5步驟②所示;最后使用Hough變換圓檢測(cè)對(duì)原木端面的圓心和徑級(jí)進(jìn)行計(jì)算。其中,邊緣去除處理部分的半徑R計(jì)算如公式1所示;在本系統(tǒng)的框架中,R值的設(shè)置主要會(huì)影響Hough參數(shù)空間峰值的計(jì)算速度。
(1)
原木端面檢測(cè)結(jié)果見圖6。如圖6所示,對(duì)比直接采用Hough變換圓檢測(cè)算法和“一種漸進(jìn)式圓心定位的原木端面輪廓識(shí)別方法”[16],本課題算法對(duì)端面檢測(cè)具有更加顯著的實(shí)驗(yàn)結(jié)果。
① 區(qū)域截?。虎?中心區(qū)域邊緣去除;③ Hough變換圓檢測(cè)。圖5 原木端面檢測(cè)步驟示意圖Fig. 5 Log face inspection procedure
圖6 原木端面檢測(cè)結(jié)果Fig. 6 Comparision of log face detection results
各類原木端面特征的實(shí)驗(yàn)圖像上的實(shí)驗(yàn)結(jié)果統(tǒng)計(jì)對(duì)比見表2。由表2可見,本課題提出的算法對(duì)比直接采用Hough變換圓檢測(cè)算法和漸進(jìn)式圓心定位法在提升真檢率、降低誤檢率方面優(yōu)勢(shì)十分明顯。Hough變換圓檢測(cè)在端面圖像復(fù)雜、待檢測(cè)類圓目標(biāo)較多時(shí),性能迅速下降;漸進(jìn)式圓心定位法在端面色彩變化大、端面情況臟亂時(shí),性能迅速下降。本課題提出的算法在上述各類情況下,性能穩(wěn)定,顯示了較好的魯棒性。
表2展現(xiàn)了本課題算法的真檢率和誤檢率相較其他兩種方法具有明顯的優(yōu)勢(shì)。Hough變換圓檢測(cè)算法的真檢率為25.86%,誤檢率為1.20%,漸進(jìn)式圓心定位[16]算法的真檢率為64.45%,誤檢率為21.08%,而本課題算法的真檢率為98.79%,誤檢率為0.602%,相較于其他兩種方法,本課題算法在提升真檢率的同時(shí)降低了誤檢率。
表2 各類原木端面檢測(cè)結(jié)果統(tǒng)計(jì)對(duì)比Table 2 Numerical comparision of log face detection results
考慮等長(zhǎng)原木材積檢測(cè)系統(tǒng)的使用人員一般為非計(jì)算機(jī)專業(yè)人員,本課題提出采用基于PyQt5核心庫(kù)開發(fā)出友好的系統(tǒng)用戶界面,方便工作人員使用,同時(shí)提供動(dòng)態(tài)參數(shù)調(diào)整(算法已經(jīng)設(shè)置了默認(rèn)值),使得檢測(cè)人員在有需要的情況下可以進(jìn)行一定的調(diào)整,以提高等長(zhǎng)原木材積檢測(cè)的準(zhǔn)確率。
等長(zhǎng)原木材積檢測(cè)系統(tǒng)主界面如圖7所示。圖7中,左上角區(qū)域?yàn)橛脩艨刂茀^(qū)域,右上角為通過(guò)USB攝像頭獲取的原圖信息,左下角為采用YOLOv3-tiny卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行目標(biāo)檢測(cè)后的結(jié)果圖,右下角為本系統(tǒng)檢測(cè)的結(jié)果。在圖7右下角圖中,本課題提出的材積檢測(cè)系統(tǒng)較為醒目地圈出了原木的圓形輪廓,并將原木直徑直觀地顯示在圓形中間。
圖7 等長(zhǎng)原木材積檢測(cè)系統(tǒng)主界面Fig. 7 The main interface for an equal length log volume inspection system
圖8 系統(tǒng)使用基本流程Fig. 8 Basic process used by the system
本系統(tǒng)用戶使用基本流程如圖8所示。首先用戶開啟等長(zhǎng)原木材積檢測(cè)系統(tǒng)并導(dǎo)入待檢測(cè)圖片;再次點(diǎn)擊RUN YOLO按鈕,使用YOLOv3-tiny對(duì)圖片進(jìn)行目標(biāo)檢測(cè),其檢測(cè)結(jié)果能實(shí)時(shí)顯示給用戶;最后使用默認(rèn)參數(shù)或用戶自定義參數(shù)進(jìn)行端面徑級(jí)檢測(cè),并根據(jù)用戶輸入的原木長(zhǎng)度和校準(zhǔn)端面徑級(jí)信息進(jìn)行材積計(jì)算。其中,端面徑級(jí)校準(zhǔn)如圖9所示。系統(tǒng)提示用戶手工測(cè)量圖片中紅色原木端面徑級(jí),通過(guò)用戶輸入,校準(zhǔn)材積檢測(cè)結(jié)果。
圖9 校準(zhǔn)端面徑級(jí)Fig. 9 Calibrated the log face diameter
本課題提出的檢測(cè)系統(tǒng)中原木徑級(jí)會(huì)直接顯示在最后檢測(cè)結(jié)果圖中,同時(shí)系統(tǒng)檢測(cè)過(guò)程的步驟圖片(如:邊緣圖、中心區(qū)域去除邊緣圖、YOLOv3-tiny目標(biāo)檢測(cè)結(jié)果圖等)和檢測(cè)結(jié)果信息都會(huì)保存于系統(tǒng)文件中,方便用戶后續(xù)查看。倘若用戶調(diào)整Canny算子參數(shù),信息后重新檢測(cè)的邊緣會(huì)以彈窗形式展現(xiàn),提高系統(tǒng)與用戶的交互性。
本課題提出的等長(zhǎng)原木材積檢測(cè)系統(tǒng)結(jié)合了深度學(xué)習(xí)和Hough變換圓檢測(cè)兩種算法的優(yōu)勢(shì),在面對(duì)背景復(fù)雜、端面裂紋、端面有污漬霉變等情況下,對(duì)于成捆堆放的原木仍能展現(xiàn)出很好的檢測(cè)效果,其真檢率達(dá)到了98.79%,這說(shuō)明了本系統(tǒng)對(duì)復(fù)雜原木端面圖像有很好的魯棒性。除了引入的深度學(xué)習(xí)算法保證了系統(tǒng)的魯棒性外,系統(tǒng)的Hough算法模塊則保證了直徑大小的準(zhǔn)確性。
在系統(tǒng)軟件方面,為了兼容深度學(xué)習(xí)算法和用戶界面設(shè)計(jì),采用PyQt5核心庫(kù)作為系統(tǒng)前端開發(fā),從而使得本系統(tǒng)既能很好地連接后臺(tái)核心算法,又可以給用戶提供一個(gè)簡(jiǎn)潔友好的使用界面。多種木材的原木端面圖像的材積檢測(cè)結(jié)果表明,本系統(tǒng)具有很好的推廣應(yīng)用價(jià)值。