張敬峰,蔡 暢,林靖宇
(廣西大學(xué) 電氣工程學(xué)院,南寧 530004)
圓檢測(cè)作為圖像處理研究中的一項(xiàng)基礎(chǔ)任務(wù),它在工業(yè)檢測(cè)、輔助駕駛、生物識(shí)別等領(lǐng)域有著廣泛的應(yīng)用.例如,工業(yè)上采用圓檢測(cè)方法對(duì)工業(yè)產(chǎn)品進(jìn)行定位[1]或者圓形缺陷檢測(cè)[2].在導(dǎo)航領(lǐng)域,智能駕駛系統(tǒng)通過識(shí)別圓形交通標(biāo)識(shí)牌來輔助駕駛[3].類似的還有,一些生物驗(yàn)證設(shè)備通過檢測(cè)圓形瞳孔定位人眼[4].當(dāng)前已經(jīng)存在大量?jī)?yōu)秀的圓檢測(cè)方法[5-7],這些方法首先需要利用邊緣檢測(cè)器從圖像中提取邊緣,然后根據(jù)后續(xù)計(jì)算原理的不同,可以將現(xiàn)有的圓檢測(cè)方法分為3類:基于Hough變換的方法,基于隨機(jī)圓的方法和基于圓弧邊緣的方法.
基于Hough變換的圓檢測(cè)方法利用圖像空間到參數(shù)空間的映射來進(jìn)行圓檢測(cè),標(biāo)準(zhǔn)的Hough變換方法[8]具有計(jì)算量大,內(nèi)存需求大和檢測(cè)精度較低等缺點(diǎn).Yao和Yi[6]為了改善標(biāo)準(zhǔn)Hough變換方法的不足,通過估計(jì)曲率來查找圓心與半徑.曲率信息既能避免所有邊緣點(diǎn)的累加運(yùn)算,又能避免不同尺度間的干擾,從而實(shí)現(xiàn)更快更精確的圓檢測(cè).但該算法對(duì)于邊緣密度較高的圖像會(huì)得到大量錯(cuò)誤結(jié)果.另一類是基于隨機(jī)圓的圓檢測(cè)方法,Chun等人[9]在邊緣圖上隨機(jī)選擇4個(gè)非線性的像素點(diǎn),檢查它們是否形成候選圓,最后通過投票策略驗(yàn)證每一個(gè)候選圓.該方法基于邊緣圖上的隨機(jī)點(diǎn),因此檢測(cè)效率容易受到邊緣圖的噪聲點(diǎn)影響.基于圓弧邊緣的圓檢測(cè)方法,該類方法的代表有EDCircles算法[5].EDCircles算法的計(jì)算步驟為:先將邊緣圖上的邊緣段轉(zhuǎn)化為線段,線段轉(zhuǎn)化為圓弧,再將圓弧組合生成候選圓,最后采用Helmholtz原理驗(yàn)證候選圓.該算法具有快速檢測(cè)和無調(diào)節(jié)參數(shù)的優(yōu)點(diǎn).但是,該算法在很大程度上依賴于邊緣梯度方向的精度,當(dāng)圖像邊緣梯度一致性較差時(shí),將會(huì)錯(cuò)過一些有效圓.Lu等人[7]認(rèn)為相對(duì)于直線段,圓弧線段攜帶了梯度方向和極性等信息,直接提取圓弧線段更有利于圓檢測(cè).因此他們提出了一種基于圓弧線段配對(duì)的圓檢測(cè)算法.該算法能有效應(yīng)對(duì)復(fù)雜的直線段干擾,但易受局部的圓弧線段影響,導(dǎo)致檢測(cè)結(jié)果精確度降低.
基于上述分析,發(fā)現(xiàn)現(xiàn)有方法大都依賴于梯度特征和低水平邊緣信息(基于邊緣圖)進(jìn)行檢測(cè).邊緣檢測(cè)器提取的邊緣圖中,往往包含著大量非目標(biāo)圓的邊緣信息(常見有各類干擾物體檢測(cè)到的長(zhǎng)線段和細(xì)小紋理檢測(cè)到的短線段),而且檢測(cè)到的多圓邊緣無法個(gè)體化分離,只能作為整體提供給后續(xù)算法計(jì)算.尤其當(dāng)輸入圖像背景復(fù)雜且紋理較多時(shí),將檢測(cè)到大量的無效邊緣信息,嚴(yán)重干擾現(xiàn)有算法的檢測(cè)精度.
當(dāng)前,卷積神經(jīng)網(wǎng)絡(luò)不僅在目標(biāo)檢測(cè)領(lǐng)域[10,12]和語義分割領(lǐng)域[13,14]獲得了成功,而且在關(guān)于基礎(chǔ)視覺特征(邊緣特征[15,16],點(diǎn)特征和直線特征[17,18])的檢測(cè)中也取得了重要成果.例如,Huang等人[17]為了獲得房屋的框架(wireframe)結(jié)構(gòu),設(shè)計(jì)了兩個(gè)卷積網(wǎng)絡(luò)分別檢測(cè)點(diǎn)特征和直線特征.卷積神經(jīng)網(wǎng)絡(luò)通過多層的特征處理,挖掘到多尺度的高級(jí)特征,能很好地完成邊緣提取工作.此外,神經(jīng)網(wǎng)絡(luò)能通過學(xué)習(xí)期望結(jié)果(特定圓對(duì)象的圓弧),從而抑制非期望的圓弧邊緣,達(dá)到有效應(yīng)對(duì)遮擋和紋理干擾的效果.受到卷積神經(jīng)網(wǎng)絡(luò)優(yōu)秀性能的鼓舞,本文提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的圓檢測(cè)方法.該方法首先利用目標(biāo)檢測(cè)技術(shù)定位圖像中各個(gè)圓所在區(qū)域,將多圓檢測(cè)任務(wù)劃分為多個(gè)單圓檢測(cè)任務(wù),然后應(yīng)用語義分割技術(shù)準(zhǔn)確地提取圓的邊緣信息(不包含背景和紋理的邊緣),最后進(jìn)行圓參數(shù)計(jì)算獲得檢測(cè)圓.
現(xiàn)在,基于視覺引導(dǎo)的分揀平臺(tái)越來越受到人們的歡迎.硬幣檢測(cè)作為硬幣分揀平臺(tái)的視覺引導(dǎo)方法,是進(jìn)行分揀任務(wù)首要且重要的部分.硬幣檢測(cè)負(fù)責(zé)識(shí)別與定位二維圖像中的硬幣[19].本文將圓檢測(cè)方法應(yīng)用于硬幣檢測(cè),從而驗(yàn)證該方法的有效性.綜上所述,本文主要有以下3個(gè)貢獻(xiàn):
1)設(shè)計(jì)了一種基于卷積神經(jīng)網(wǎng)絡(luò)的圓檢測(cè)方法,在檢測(cè)硬幣的實(shí)驗(yàn)中具有滿足工業(yè)要求的高檢測(cè)精度,可作為分揀平臺(tái)的視覺引導(dǎo)方法.
2)設(shè)計(jì)了一種根據(jù)圓的邊緣點(diǎn)計(jì)算圓參數(shù)的方法,包括基于聚類的像素點(diǎn)篩選策略,基于圓割線計(jì)算圓心和半徑的策略和基于計(jì)算結(jié)果頻次的選擇策略.
3)為了訓(xùn)練本文的圓檢測(cè)模型并驗(yàn)證其檢測(cè)性能,本文模擬了分揀平臺(tái)的檢測(cè)環(huán)境并從中收集了810張關(guān)于硬幣的圖片.該環(huán)境包含了遮擋干擾,紋理干擾和陰影干擾這3種困難的檢測(cè)情形.通過對(duì)硬幣圖片制作關(guān)于硬幣對(duì)象的目標(biāo)檢測(cè)標(biāo)注和關(guān)于硬幣邊緣的語義分割標(biāo)注,得到了本文實(shí)驗(yàn)使用的硬幣數(shù)據(jù)集.
本文方法的整體框架(如圖1所示)由3個(gè)部分組成:粗檢測(cè),細(xì)檢測(cè)和圓參數(shù)計(jì)算.首先,粗檢測(cè)任務(wù)進(jìn)行特定圓(特定圓指訓(xùn)練集中標(biāo)注為真實(shí)值的圓形對(duì)象,例如本文硬幣數(shù)據(jù)集中的硬幣)的目標(biāo)檢測(cè),獲取每一個(gè)特定圓在圖像中的區(qū)域信息.其次,細(xì)檢測(cè)任務(wù)將上述每一個(gè)區(qū)域提取為裁剪圖,并分割出裁剪圖中特定圓的邊緣.最后,圓參數(shù)計(jì)算的任務(wù)是基于圓的邊緣信息計(jì)算圓心與半徑,并結(jié)合裁剪圖在原圖上的區(qū)域信息,將檢測(cè)結(jié)果映射到原圖上.在該方案中,粗檢測(cè)任務(wù)實(shí)現(xiàn)將多目標(biāo)邊緣分割工作劃分為單目標(biāo)邊緣分割工作.因此,細(xì)檢測(cè)任務(wù)在裁剪圖中只需要分割單個(gè)圓的邊緣.粗檢測(cè)網(wǎng)絡(luò)采用300×300的輸入圖像(將尺寸約2400×2400的原圖縮小為300×300),細(xì)檢測(cè)網(wǎng)絡(luò)的輸入圖像為原圖的裁剪圖(尺寸為250×250至500×500).該設(shè)計(jì)方案通過調(diào)整兩個(gè)檢測(cè)網(wǎng)絡(luò)的輸入圖像大小,進(jìn)而有效控制網(wǎng)絡(luò)計(jì)算量和輸入圖像質(zhì)量.綜上所述,本文方法的設(shè)計(jì)方案不僅能很好地檢測(cè)多目標(biāo)對(duì)象,還可以根據(jù)任務(wù)的需求合理平衡檢測(cè)精度和計(jì)算量.
圖1 本文方法整體框架Fig.1 Overall architecture of our proposed method
在本文研究中,粗檢測(cè)任務(wù)旨在將多圓檢測(cè)劃分為多個(gè)單圓檢測(cè),實(shí)現(xiàn)方法是采用目標(biāo)檢測(cè)技術(shù)在輸入圖像中預(yù)測(cè)出每一個(gè)特定圓對(duì)應(yīng)的邊界框.本文采用SSD算法[11]作為整體框架中的目標(biāo)檢測(cè)方法.
SSD算法可以簡(jiǎn)單分為主干網(wǎng)絡(luò)和預(yù)測(cè)網(wǎng)絡(luò)兩部分,主干網(wǎng)絡(luò)提取有效特征,預(yù)測(cè)網(wǎng)絡(luò)預(yù)測(cè)目標(biāo)分類及定位.其中,將VGG16網(wǎng)絡(luò)[20]進(jìn)行改進(jìn)作為主干網(wǎng)絡(luò),具體改動(dòng)為:將VGG16網(wǎng)絡(luò)最后兩個(gè)全連接層改成卷積層,隨后增加4個(gè)卷積層.主干網(wǎng)絡(luò)中提取6層不同尺度的特征:38×38、19×19、10×10、5×5、3×3、1×1作為有效特征層進(jìn)行組合.SSD算法的預(yù)測(cè)網(wǎng)絡(luò)是兩個(gè)不同的卷積器,通過對(duì)有效特征的組合進(jìn)行卷積,一個(gè)輸出分類結(jié)果,一個(gè)輸出邊界框定位結(jié)果.多尺度特征組合等同于圖像特征金字塔,高層特征用于度量語義相似度,低層特征用于度量細(xì)粒度相似度.低層和高層特征的互補(bǔ)可以提高查詢目標(biāo)對(duì)象與其他候選對(duì)象之間的相似性度量.為了便于后續(xù)的語義分割任務(wù)開展,本文方法從矩形H×W的預(yù)測(cè)框中提取正方形L×L(L=min(H,W))的裁剪圖,作為細(xì)檢測(cè)任務(wù)的輸入圖片.
細(xì)檢測(cè)任務(wù)旨在從裁剪圖中分割特定圓的邊緣信息.本文采用改進(jìn)的堆疊沙漏網(wǎng)絡(luò)[21](HourglassNet)作為細(xì)檢測(cè)任務(wù)的語義分割模型.如圖2所示,該網(wǎng)絡(luò)以256×256×3(長(zhǎng)×寬×高)的RGB圖像作為輸入,首先通過3個(gè)金字塔殘差模塊(PRM)提取64×64×256的初級(jí)特征圖.然后,該特征圖經(jīng)過5個(gè)堆疊的沙漏模塊處理,獲得高級(jí)的語義特征.最后,網(wǎng)絡(luò)尾部設(shè)計(jì)兩個(gè)反卷積層(5×5×128和5×5×64)和ReLU層,并緊接1×1卷積層進(jìn)行特征融合,以輸出256×256×1像素級(jí)的熱力圖.詳細(xì)的殘差模塊和堆疊沙漏網(wǎng)絡(luò)介紹參考文獻(xiàn)[21].值得注意的是,堆疊沙漏網(wǎng)絡(luò)里的上采樣方法本文選擇最近鄰插值算法而不是反卷積,原因是為了避免多次使用反卷積層而造成棋盤格噪聲.
圖2 細(xì)檢測(cè)網(wǎng)絡(luò)模型Fig.2 Fine detection network model
本文采用的堆疊沙漏網(wǎng)絡(luò)在特征提取過程中經(jīng)過多次的多尺度整合和級(jí)聯(lián),挖掘到的特征包含整個(gè)圓的空間信息.因此該網(wǎng)絡(luò)能很好地檢測(cè)到具有全局語義信息的特征點(diǎn),適合分割特定圓的邊緣信息.
圓參數(shù)計(jì)算任務(wù)旨在根據(jù)圓邊緣的幾何屬性,利用邊緣像素點(diǎn)計(jì)算得到關(guān)于圓的參數(shù):圓心和半徑.整個(gè)計(jì)算過程包括:像素點(diǎn)篩選,圓心計(jì)算,半徑計(jì)算,結(jié)果映射回原圖.
針對(duì)細(xì)檢測(cè)模型輸出的熱力圖篩選出有效像素點(diǎn),是準(zhǔn)確計(jì)算圓心和半徑的保障.熱力圖中像素點(diǎn)的像素值代表了該點(diǎn)屬于圓邊緣點(diǎn)的置信度.然而實(shí)驗(yàn)過程中,發(fā)現(xiàn)熱力圖中存在像素值為255或者接近255的噪點(diǎn),它們基本位于非期望的位置(不屬于特定圓的邊緣).綜上所述,為了提取置信度高且不屬于噪點(diǎn)的像素點(diǎn),可以通過設(shè)置像素閾值篩選像素點(diǎn).已知,人為設(shè)定閾值往往是造成系統(tǒng)魯棒性差的原因,因此本文設(shè)計(jì)了利用K均值聚類實(shí)現(xiàn)的篩選方法.該篩選方法對(duì)熱力圖中的像素點(diǎn)按照像素值大小進(jìn)行K均值聚類(分類數(shù)為3),并過濾掉聚類結(jié)果中像素值最大的一類簇和像素值最小的一類簇.進(jìn)一步分析,經(jīng)閾值篩選得到的邊緣結(jié)果應(yīng)該是緊密連續(xù)的弧線段.為了過濾掉誤檢到的小弧線段,本文方法采用DBSCAN密度聚類[22]進(jìn)一步優(yōu)化熱力圖,最后篩選得到特定圓的邊緣像素點(diǎn)集合P.
基于篩選得到的像素點(diǎn)都屬于圓的邊緣點(diǎn)這一基礎(chǔ),本文方法從集合P中隨機(jī)選取直線距離大于一定閾值(裁剪圖邊長(zhǎng)的1/4)的兩點(diǎn)作為線段集合L的元素.為了計(jì)算圓心,隨機(jī)將集合L中的元素兩兩組合,并求中垂線的交點(diǎn)作為圓心的候選點(diǎn),得到候選圓心集合C.當(dāng)集合P中多數(shù)點(diǎn)為特定圓的有效邊緣點(diǎn)時(shí),某些候選圓心值將會(huì)多次計(jì)算得到.本文方法同時(shí)記錄下候選圓心值及其出現(xiàn)的次數(shù).為了精確確定最終的計(jì)算值,定義了基于計(jì)算結(jié)果頻次選擇最終值α的公式:
(1)
其中,α代表待確定值,αi代表出現(xiàn)頻次按降序排在第i位的候選值,fαi代表候選值αi的出現(xiàn)頻次.
按公式(1),對(duì)圓心候選值按頻次排序,確定最終圓心值.下一步計(jì)算半徑,將圓心與集合P中的元素求兩點(diǎn)間距離,得到候選半徑的集合R,并同時(shí)記錄各個(gè)半徑值的出現(xiàn)次數(shù),最后也按公式(1)確定最終半徑值.
上述內(nèi)容計(jì)算得到裁剪圖上的圓參數(shù)結(jié)果,本文方法為了將裁剪圖上的圓(xc,yc,r)映射回原圖得到圓(xc′,yc′,r′),定義了公式(2):
(2)
其中,ρ代表裁剪圖的尺寸h′與輸出熱力圖的尺寸(數(shù)值為256)之間的縮放比例,網(wǎng)絡(luò)輸出的檢測(cè)圓(xc,yc,r)乘上ρ再結(jié)合裁剪區(qū)域的對(duì)角點(diǎn)pn1=(xn1,yn1),求得映射回原圖的檢測(cè)圓(xc′,yc′,r′).
本文收集的硬幣數(shù)據(jù)集分為兩類:粗檢測(cè)數(shù)據(jù)集和細(xì)檢測(cè)數(shù)據(jù)集,如圖3所示.兩類數(shù)據(jù)集分別用于訓(xùn)練粗檢測(cè)模型和細(xì)檢測(cè)模型.粗檢測(cè)數(shù)據(jù)集共包含810張關(guān)于多枚硬幣的圖片,其中643張圖片作為粗檢測(cè)模型的訓(xùn)練集,其余167張圖片作為評(píng)估整體框架性能的測(cè)試集.細(xì)檢測(cè)數(shù)據(jù)集包含800張關(guān)于單枚硬幣的圖片,單枚硬幣圖片對(duì)應(yīng)粗檢測(cè)訓(xùn)練集上單枚硬幣的裁剪區(qū)域.
圖3 硬幣數(shù)據(jù)集(左:粗檢測(cè)數(shù)據(jù)集,右:細(xì)檢測(cè)數(shù)據(jù)集)Fig.3 Coin dataset(left:rough detection dataset,right:fine detection dataset)
硬幣數(shù)據(jù)集中包含兩個(gè)對(duì)象:圓形硬幣和方形號(hào)碼牌.硬幣作為實(shí)驗(yàn)檢測(cè)對(duì)象,號(hào)碼牌作為實(shí)驗(yàn)檢測(cè)干擾項(xiàng).號(hào)碼牌一面刻印阿拉伯?dāng)?shù)字,一面刻印飛鏢盤圖案,其作為干擾項(xiàng)將會(huì)增加檢測(cè)難度.在硬幣的拍攝環(huán)境中,將黃色的牛皮卡紙作為背景,添設(shè)可調(diào)節(jié)光照強(qiáng)度和照射角度的照明燈進(jìn)行打光.受光照影響,硬幣周圍產(chǎn)生月牙形斜影,且硬幣表面也會(huì)出現(xiàn)反光或者暗淡的現(xiàn)象.
硬幣數(shù)據(jù)集區(qū)別于圓檢測(cè)論文中常見的實(shí)驗(yàn)圖片,例如Akinlar等人[5]所采用的實(shí)驗(yàn)圖片.這些實(shí)驗(yàn)圖片主要包括簡(jiǎn)單圓形圖案合成的圖片和清晰圓形對(duì)象組成的自然圖片.圖片中的圓形目標(biāo)大部分紋理清晰,擺放規(guī)整,并且沒有受到遮擋,反光或者陰影的干擾.然而,硬幣數(shù)據(jù)集中的圓形目標(biāo)受到較大程度的遮擋干擾,紋理干擾和月牙形陰影干擾.
本文在硬幣數(shù)據(jù)集的測(cè)試集上進(jìn)行實(shí)驗(yàn),為了驗(yàn)證本文方法的有效性,實(shí)驗(yàn)對(duì)比了3種優(yōu)秀的圓檢測(cè)算法:EDCircles算法[5],CACD算法[6]和Lu的算法[7].所有算法的實(shí)驗(yàn)在1臺(tái)配置有1.80GHz-2.00GHz的Intel(R)Core(TM)i7-8550U CPU的計(jì)算機(jī)上進(jìn)行.
實(shí)驗(yàn)采用的評(píng)價(jià)指標(biāo)與主流的圓檢測(cè)評(píng)價(jià)指標(biāo)一致,分別為:1)準(zhǔn)確率(precision),2)召回率(recall),3)F-measure(F1).評(píng)價(jià)指標(biāo)的計(jì)算方法參見公式(3)-公式(5),其中TPs,FPs和FNs分別代表真陽性檢測(cè)率,假陽性檢測(cè)率和假陰性檢測(cè)率.而F-measure則是準(zhǔn)確率和召回率的調(diào)和平均值.如果檢測(cè)到的圓與真實(shí)圓(ground-truth)的重疊比例大于閾值T-overlap則被視為真陽性檢測(cè)(TP).實(shí)驗(yàn)中,閾值T-overlap被設(shè)置為0.5,0.6,0.7和0.8這4個(gè)不同數(shù)值,用于觀察在不同閾值下算法的檢測(cè)結(jié)果.就檢測(cè)精度而言,將檢測(cè)結(jié)果與真實(shí)值(ground-truth)進(jìn)行像素單位的對(duì)比.
(3)
(4)
(5)
除了上述的評(píng)價(jià)指標(biāo)之外,本文定義了如下的誤差函數(shù):
(6)
其中,T-error代表誤差函數(shù)的誤差值,用于計(jì)算圓(x1,y1,r1)與圓(x2,y2,r2)的差值,本文實(shí)驗(yàn)中統(tǒng)一使權(quán)重μ=0.5,ν=0.5.
基于公式(6)所示的誤差函數(shù),實(shí)驗(yàn)計(jì)算滿足誤差函數(shù)的檢測(cè)圓與真實(shí)值(ground-truth)之間的半徑誤差Δr和圓心誤差(Δx,Δy).為了量化檢測(cè)結(jié)果,實(shí)驗(yàn)詳細(xì)記錄了硬幣測(cè)試集中4種錯(cuò)誤檢測(cè)情形下的數(shù)量,包括漏檢的硬幣數(shù)量,檢測(cè)到陰影的數(shù)量,檢測(cè)到硬幣紋理和干擾項(xiàng)紋理的數(shù)量.這些統(tǒng)計(jì)數(shù)據(jù)將體現(xiàn)算法在硬幣測(cè)試集中的抗干擾能力.
本文方法的網(wǎng)絡(luò)模型基于Python語言,由深度學(xué)習(xí)框架TensorFlow及Keras搭建完成.
粗檢測(cè)模型:模型基于隨機(jī)梯度下降優(yōu)化器,同時(shí)采用遷移學(xué)習(xí)的思想,將數(shù)據(jù)集Pascal VOC 2007訓(xùn)練好的權(quán)重模型(ssd_weights.h5)作為訓(xùn)練起點(diǎn).預(yù)訓(xùn)練模型的使用一方面有助于彌補(bǔ)小數(shù)量數(shù)據(jù)集數(shù)據(jù)不充分的缺陷,另一方面也能加快模型的訓(xùn)練速度.關(guān)于訓(xùn)練的細(xì)節(jié),模型采用的輸入圖像大小為300×300,訓(xùn)練批量大小(batch size)為4,初始學(xué)習(xí)率(learning rate)分批次設(shè)置為:1×10-4,1×10-5和1×10-6,對(duì)應(yīng)上述3個(gè)學(xué)習(xí)率的訓(xùn)練周期數(shù)(epoch)為:(0,30),(30,60)和(60,100).為了防止模型過擬合,設(shè)置提前終止模型學(xué)習(xí)的函數(shù)EarlyStopping,其參數(shù)patience為10,意味著當(dāng)連續(xù)10個(gè)驗(yàn)證集的正確率不再增長(zhǎng)時(shí)終止學(xué)習(xí).此外,模型訓(xùn)練采用了常規(guī)的數(shù)據(jù)增強(qiáng)手段,包括對(duì)圖像進(jìn)行縮放,隨機(jī)塊狀遮擋和左右翻轉(zhuǎn).
細(xì)檢測(cè)模型:模型基于隨機(jī)梯度下降優(yōu)化器,損失函數(shù)采用均方差函數(shù).訓(xùn)練細(xì)節(jié)如下:模型采用的輸入圖像大小為256×256,訓(xùn)練批量大小(batch size)為1,訓(xùn)練周期數(shù)(epoch)為100.采用動(dòng)態(tài)衰減的學(xué)習(xí)率,初始學(xué)習(xí)率(learning rate)為1×10-3,設(shè)置每學(xué)習(xí)2000輪之后學(xué)習(xí)率衰減為上一輪的90%.
實(shí)驗(yàn)選擇3種優(yōu)秀的圓檢測(cè)算法作為本文方法的對(duì)比算法,它們分別為:EDCircles算法[5],CACD算法[6]和Lu的算法[7].由于本實(shí)驗(yàn)的特定檢測(cè)目標(biāo)(硬幣)相對(duì)于檢測(cè)圖片大小而言屬于中小型號(hào)的檢測(cè)目標(biāo),因此對(duì)比算法的檢測(cè)結(jié)果可以結(jié)合以下先驗(yàn)知識(shí):正確檢測(cè)圓的半徑值大于100個(gè)像素點(diǎn)長(zhǎng)度.
EDCircles:EDCircles的C++實(shí)現(xiàn)代碼由原作者提供.EDCircles是一種快速且無調(diào)節(jié)參數(shù)的圓及橢圓檢測(cè)算法,它采用Helmholtz原理消除所有無效的候選圓.本文只提取該算法的圓檢測(cè)結(jié)果,并且結(jié)合先驗(yàn)知識(shí)優(yōu)化結(jié)果.
CACD:CACD的Matlab實(shí)現(xiàn)代碼由原作者提供.CACD算法無調(diào)節(jié)參數(shù),本文對(duì)檢測(cè)結(jié)果結(jié)合先驗(yàn)知識(shí)進(jìn)行優(yōu)化.
Lu的算法:Lu的算法的C++和Matlab實(shí)現(xiàn)代碼由原作者提供.該算法的代碼中主要包含兩個(gè)參數(shù)Tni和Tac,它們用于驗(yàn)證檢測(cè)圓.Tni代表支持圓上邊緣點(diǎn)的比率,Tac代表完整圓的角度.實(shí)驗(yàn)中設(shè)置Tni=0.5,Tac=165,并且結(jié)合先驗(yàn)知識(shí)優(yōu)化結(jié)果.
圖4展示了4種算法在硬幣數(shù)據(jù)集上的檢測(cè)性能.第一列展示的是原始圖,接下來的4列分別對(duì)應(yīng)EDCircles算法,CACD算法,Lu的算法和本文算法的檢測(cè)結(jié)果.EDCircles算法的檢測(cè)精度高且能較好地檢測(cè)到被遮擋的硬幣,但伴隨而來的問題是該算法檢測(cè)到的大量圓中只有一部分為有效圓,其余為冗余檢測(cè)(在十分相近的位置檢測(cè)出多個(gè)圓)結(jié)果.例如在第1,3,7張圖片中,一些檢測(cè)圓定位到硬幣的陰影,從而偏離硬幣邊緣.觀察CACD算法的檢測(cè)結(jié)果,可以發(fā)現(xiàn)該算法能成功找到大多數(shù)的硬幣,并且不同于EDCircles算法會(huì)產(chǎn)生較多的冗余檢測(cè).該算法缺點(diǎn)是,一定比例的檢測(cè)圓不能準(zhǔn)確地定位到硬幣的邊緣,而是誤檢到硬幣的紋理.并且當(dāng)硬幣處于被遮擋的情形時(shí)容易發(fā)生漏檢,例如第2張圖片和第9張圖片.在Lu的算法的檢測(cè)結(jié)果中,優(yōu)點(diǎn)在于檢測(cè)圓很少誤檢到硬幣的紋理,不足在于部分檢測(cè)圓受硬幣的陰影干擾,導(dǎo)致定位結(jié)果較差(如第7張圖片所示).此外,該算法存在不少漏檢.下面歸納本文方法的檢測(cè)結(jié)果.首先,根據(jù)檢測(cè)圓與硬幣邊緣的重合度觀察,可知本文方法的檢測(cè)精度優(yōu)于所有對(duì)比算法.其次,即使在硬幣被遮擋的情形下,本文方法的檢測(cè)結(jié)果也準(zhǔn)確地定位到硬幣的邊緣.最后,本文方法的檢測(cè)結(jié)果中,不存在定位到硬幣陰影或紋理的檢測(cè)圓,并且一個(gè)檢測(cè)圓對(duì)應(yīng)一枚硬幣無冗余檢測(cè)現(xiàn)象.
圖4 圓/硬幣檢測(cè)結(jié)果Fig.4 Circle/coin detection result
硬幣數(shù)據(jù)集上的圓檢測(cè)結(jié)果記錄在表1中.數(shù)據(jù)顯示,當(dāng)重合度閾值T-overlap從0.5增大到0.8過程中,本文方法都獲得了最高的精確度和召回率.本文方法取得最佳的F-measure分?jǐn)?shù)分別為96.48%,96.40%,96.20%和95.80%.對(duì)比其他3個(gè)算法,在重合度閾值T-overlap為0.8的最高標(biāo)準(zhǔn)下,本文方法仍取得F-measure為95.80%的高分值,而此時(shí)EDCircles算法,CACD算法和Lu的算法的F-measure分?jǐn)?shù)分別下降至重合度閾值為0.5標(biāo)準(zhǔn)時(shí)的60.20%,49.73%和55.38%.F-measure分?jǐn)?shù)的變化情況表明,在本文方法的檢測(cè)圓中定位精度高的結(jié)果占絕大部分.較高的精確度說明本文方法擁有很好的抑制假陽性檢測(cè)的能力,同時(shí)較高的召回率表明方法能很好地檢測(cè)出有效圓(硬幣邊緣).需要注意的是,3種對(duì)比算法是普適性檢測(cè)器(檢測(cè)所有圓形目標(biāo)),檢測(cè)到非真實(shí)值(ground-truth)的圓形也屬于正確結(jié)果.由于本文方法基于深度學(xué)習(xí),所以本文方法不同于3種對(duì)比方法,是一種特定圓檢測(cè)器(本實(shí)驗(yàn)中特定檢測(cè)硬幣).此時(shí),通過對(duì)比召回率,能評(píng)價(jià)各個(gè)算法僅針對(duì)硬幣的檢測(cè)結(jié)果.表1中,3種對(duì)比方法的召回率均大于準(zhǔn)確率,這符合了前文的表述.觀察召回率,3種對(duì)比算法中表現(xiàn)最好的EDCircles算法在T-overlap為0.5時(shí)僅有81.75%,比本文方法低13.83%.表明,即使只關(guān)注硬幣被檢測(cè)的情況,本文方法也明顯優(yōu)于3個(gè)對(duì)比算法.
表1 各個(gè)算法的準(zhǔn)確率,召回率和F-measure值(單位:%)Table 1 Accuracy,recall and F-measure of each algorithm(%)
為了進(jìn)一步探究算法的檢測(cè)精度,本文定義了誤差函數(shù)并設(shè)置了誤差閾值T-error(T-error=30,20,15,10,5,3).將滿足誤差閾值的檢測(cè)結(jié)果計(jì)算4個(gè)誤差指標(biāo)值:包括圓心誤差(Δx,Δy),圓心距離誤差Δc和半徑誤差Δr.誤差函數(shù)的定義如公式(6)所示,誤差統(tǒng)計(jì)結(jié)果如表2和表3所示.由表中數(shù)據(jù)可知,本文方法在T-error為30,15和10的情況下,4個(gè)誤差指標(biāo)都獲得了最小的誤差值,而在T-error為5和3的情況下,只略遜色于EDCircles算法.需要注意的是,在這6個(gè)誤差閾值下,本文方法的檢測(cè)圓數(shù)量都保持在500以上,而CACD算法和Lu的算法在T-error等于3時(shí)都僅有71個(gè)檢測(cè)圓.在尺寸為2431×2431的測(cè)試圖上,本文方法的絕大多數(shù)檢測(cè)誤差只有1至3個(gè)像素,表明本文方法具有較高的檢測(cè)精度.
表2 各項(xiàng)圓參數(shù)的平均誤差(T-error=30,20,15)Table 2 Average error of each circle parameter(T-error=30,20,15)
表3 各項(xiàng)圓參數(shù)的平均誤差(T-error=10,5,3)Table 3 Average error of each circle parameter(T-error=10,5,3)
為了具體量化檢測(cè)難點(diǎn)(陰影干擾,硬幣紋理干擾和干擾項(xiàng)紋理干擾,遮擋干擾)對(duì)算法的影響,本文根據(jù)錯(cuò)誤檢測(cè)結(jié)果統(tǒng)計(jì)了表4的數(shù)據(jù).表中只計(jì)數(shù)4種錯(cuò)誤情況的檢測(cè)數(shù)量,分別為:漏檢,誤檢到陰影,誤檢到硬幣紋理和誤檢到干擾項(xiàng)紋理.錯(cuò)誤計(jì)數(shù)標(biāo)準(zhǔn)參考圖5,實(shí)驗(yàn)中不統(tǒng)計(jì)不屬于表4中的錯(cuò)誤檢測(cè)情況.觀察本文方法的統(tǒng)計(jì)數(shù)據(jù):“誤檢陰影的檢測(cè)圓數(shù)量”為0,“誤檢硬幣紋理的檢測(cè)圓數(shù)量”為0,“誤檢干擾項(xiàng)紋理的檢測(cè)圓數(shù)量”為0.這些數(shù)據(jù)表明,本文方法作為一種特定圓檢測(cè)器,沒有檢測(cè)到非期望的圓對(duì)象.表中后兩列數(shù)據(jù)針對(duì)被遮擋的硬幣,統(tǒng)計(jì)其漏檢數(shù)量.本文按照遮擋程度將硬幣分兩類,一類為部分遮擋:遮擋面積為5%至40%,另一類為嚴(yán)重遮擋:遮擋面積近50%.從表中可以看到,CACD算法和Lu的算法在檢測(cè)被遮擋的硬幣時(shí),近半數(shù)的硬幣發(fā)生漏檢現(xiàn)象.同時(shí),漏檢的硬幣中來自被遮擋的硬幣的數(shù)量分別占總數(shù)的73.77%和67.18%.本文方法和EDCircles算法的少量漏檢圓中,大部分也屬于被遮擋的硬幣.綜上所述,在硬幣數(shù)據(jù)集中的檢測(cè)難點(diǎn)(陰影干擾,硬幣紋理干擾和干擾項(xiàng)紋理干擾,遮擋干擾)降低了3種對(duì)比算法的檢測(cè)精度,而本文方法受干擾少,檢測(cè)效果好.
表4 算法的4種錯(cuò)誤檢測(cè)情況Table 4 Four error detection situations of the algorithms
圖5 4種錯(cuò)誤檢測(cè)示例Fig.5 Four examples of error detection
本文提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的圓檢測(cè)方法,該方法通過在一個(gè)新的硬幣數(shù)據(jù)集上進(jìn)行訓(xùn)練,可以有效地檢測(cè)圓形硬幣.通過組合目標(biāo)檢測(cè)模型和語義分割模型,本文方法從多圓對(duì)象的圖像中有效提取多個(gè)單圓的邊緣信息,計(jì)算圓參數(shù).通過實(shí)驗(yàn),驗(yàn)證了本文方法能有效克服遮擋干擾,紋理干擾和陰影干擾,并且在硬幣數(shù)據(jù)集上獲得97.12%的高準(zhǔn)確率和94.51%的高召回率.需要注意的是,基于卷積神經(jīng)網(wǎng)絡(luò)的圓檢測(cè)方法依賴于數(shù)據(jù)集的學(xué)習(xí),由數(shù)據(jù)集監(jiān)督模型學(xué)習(xí)檢測(cè)特定圓對(duì)象.因此本文方法是一種特定圓檢測(cè)器,與以往圓檢測(cè)方法所開發(fā)的普適性圓形檢測(cè)器不同.本文方法作為一種特定圓對(duì)象檢測(cè)方法,擁有抑制檢測(cè)其他圓對(duì)象的性能,豐富了現(xiàn)有圓檢測(cè)方法的功能.實(shí)驗(yàn)證明,本文方法僅需少量的數(shù)據(jù)進(jìn)行訓(xùn)練,便可以完成對(duì)特定圓的高精度檢測(cè),具有很高的應(yīng)用價(jià)值.