胡立華,王敏敏,2,劉愛(ài)琴,張素蘭
(1.太原科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山西 太原 030024;2.佛山市科自智能系統(tǒng)技術(shù)有限公司,廣東 佛山 528010)
物體檢測(cè)[1]是計(jì)算機(jī)視覺(jué)中的經(jīng)典問(wèn)題,主要任務(wù)是在靜態(tài)圖像或動(dòng)態(tài)視頻流中快速、精確地識(shí)別及定位出其中感興趣的目標(biāo)。目前物體檢測(cè)已廣泛應(yīng)用于行人檢測(cè)[2]、流量檢測(cè)[3]、智能手機(jī)[4]等領(lǐng)域。物體檢測(cè)方法主要分為基于傳統(tǒng)的檢測(cè)方法和基于深度學(xué)習(xí)的檢測(cè)方法。傳統(tǒng)檢測(cè)方法主要依賴(lài)于圖像處理技術(shù)或人工設(shè)計(jì)特征,由于該方法提取的特征是人為設(shè)計(jì)的,因此具有相對(duì)簡(jiǎn)單,無(wú)需學(xué)習(xí)與訓(xùn)練,僅需計(jì)算與統(tǒng)計(jì)的優(yōu)點(diǎn),但同時(shí)存在工作量大、不具備普適性和穩(wěn)定性差等缺點(diǎn)。而基于深度學(xué)習(xí)的方法有較強(qiáng)的特征表達(dá)能力,具有檢測(cè)精度高、檢測(cè)結(jié)果穩(wěn)定等優(yōu)點(diǎn),因此,基于深度學(xué)習(xí)的物體檢測(cè)方法成為計(jì)算機(jī)視覺(jué)中研究熱點(diǎn)之一。YOLOv3[5]作為一種基于深度學(xué)習(xí)的物體檢測(cè)方法,首先采用k-means方法獲取先驗(yàn)框(anchor),然后將先驗(yàn)框運(yùn)用于YOLOv3模型的訓(xùn)練過(guò)程,最后輸出檢測(cè)結(jié)果。YOLOv3具有檢測(cè)精度高、小物體識(shí)別能力強(qiáng)的優(yōu)點(diǎn)。
古建筑是人類(lèi)寶貴的文化遺產(chǎn),是人類(lèi)精神文明的載體,是人類(lèi)歷史長(zhǎng)河中的里程碑。隨著網(wǎng)絡(luò)的發(fā)展,網(wǎng)絡(luò)上的圖片數(shù)量急劇增加,基于圖像的古建筑檢測(cè)方法具有重要的研究意義和應(yīng)用價(jià)值,可進(jìn)一步應(yīng)用于古建筑的圖像標(biāo)注和智慧旅游等方面。因此,古建筑圖像的物體檢測(cè)具有重要的意義。而中國(guó)古建筑具有結(jié)構(gòu)復(fù)雜、紋理重復(fù)嚴(yán)重等特點(diǎn),基于k-means方法的聚類(lèi)結(jié)果受聚類(lèi)初始點(diǎn)選擇的影響較大,因此基于YOLOv3的古建筑檢測(cè)結(jié)果受聚類(lèi)結(jié)果的影響,檢測(cè)結(jié)果存在偶然性、不穩(wěn)定性、檢測(cè)精度差和定位不準(zhǔn)等問(wèn)題。
針對(duì)上述問(wèn)題,以中國(guó)古建筑圖像為對(duì)象,結(jié)合影響空間的思想,提出了一種基于影響空間和YOLOv3的古建筑圖像檢測(cè)方法。該方法首先結(jié)合密度聚類(lèi)思想,采用RNN-DBSCAN方法對(duì)已標(biāo)注圖像聚類(lèi),利用差異性函數(shù)作為聚類(lèi)度量函數(shù),從而有效地解決了k-means算法使用歐氏距離方法聚類(lèi)得到不穩(wěn)定聚類(lèi)結(jié)果(古建筑圖像寬高比例)的問(wèn)題;其次從聚類(lèi)結(jié)果中選取k個(gè)結(jié)果作為初始聚類(lèi)中心;并采用k-means聚類(lèi)方法獲得聚類(lèi)結(jié)果,作為YOLOv3網(wǎng)絡(luò)的先驗(yàn)框,有效解決了基于k-means算法的初始類(lèi)中心的選擇問(wèn)題;然后依據(jù)先驗(yàn)框信息,訓(xùn)練YOLOv3網(wǎng)絡(luò);最后采用voc[6](20類(lèi))和中國(guó)古建筑數(shù)據(jù)集為對(duì)象,進(jìn)一步驗(yàn)證了算法的有效性。
該文創(chuàng)新點(diǎn)如下:
(1)針對(duì)k-means方法聚類(lèi)結(jié)果不穩(wěn)定的問(wèn)題,結(jié)合基于密度的方法,采用了差異性函數(shù),設(shè)計(jì)了一種RNN-DBSCAN+k-means聚類(lèi)方法。
(2)以古建筑圖像為對(duì)象,設(shè)計(jì)了一種基于影響空間與YOLOv3的古建筑檢測(cè)方法。
物體檢測(cè)是計(jì)算機(jī)視覺(jué)的基本任務(wù)之一,過(guò)程為對(duì)于給定任意一幅圖像,圖像中的目標(biāo)能夠被正確地識(shí)別出它的類(lèi)標(biāo)簽,且能準(zhǔn)確地被定位出來(lái)。目前,物體檢測(cè)方法主要分為兩類(lèi):一類(lèi)是傳統(tǒng)的物體檢測(cè)方法,另一類(lèi)是基于深度學(xué)習(xí)的物體檢測(cè)方法。
傳統(tǒng)的物體檢測(cè)主要是基于圖像處理或特征的算法[7],此類(lèi)算法主要采用傳統(tǒng)的人工設(shè)計(jì)特征+淺層分類(lèi)器的框架。典型方法包括:2001年,Paul Viola和Michael Jones在ICCV上提出了VJ算法[8]。該方法主要采用了滑動(dòng)窗口檢測(cè)第一次實(shí)現(xiàn)實(shí)時(shí)檢測(cè)。2008年,F(xiàn)elzenszwalb提出了基于組件的DPM算法[9],該方法采用改進(jìn)后的HOG[10]特征、SVM[11]分類(lèi)器和滑動(dòng)窗口檢測(cè)思想實(shí)現(xiàn)物體檢測(cè)。此類(lèi)方法具有算法簡(jiǎn)單、速度快和適應(yīng)變形的優(yōu)點(diǎn);但由于特征是人為設(shè)計(jì),存在工作量大、無(wú)普適性和穩(wěn)定性差等缺點(diǎn)。
與傳統(tǒng)方法相比,深度學(xué)習(xí)具有比較強(qiáng)的特征表達(dá)能力。基于深度學(xué)習(xí)的檢測(cè)方法主要包括兩類(lèi):無(wú)錨框的檢測(cè)方法和基于錨框的檢測(cè)方法。無(wú)錨框檢測(cè)方法的基本思想為去掉錨框,運(yùn)用關(guān)鍵點(diǎn)或鋪設(shè)錨點(diǎn)來(lái)檢測(cè)物體。無(wú)錨框檢測(cè)方法可為兩類(lèi):一類(lèi)是基于關(guān)鍵點(diǎn)的檢測(cè)方法;另一類(lèi)是基于中心域的檢測(cè)方法?;陉P(guān)鍵點(diǎn)檢測(cè)的典型方法有:2018年,Law H等人提出基于關(guān)鍵點(diǎn)為角點(diǎn)的無(wú)錨框檢測(cè)算法CornerNet[12]。該算法運(yùn)用一對(duì)角點(diǎn)表示目標(biāo),通過(guò)角點(diǎn)池化、嵌入量等方法提高檢測(cè)精度[13]。2019年,Zhou等人提出了基于關(guān)鍵點(diǎn)為4個(gè)極值點(diǎn)+1個(gè)中心點(diǎn)的無(wú)錨框檢測(cè)算法ExtremeNet[14]。與CornerNet相比,ExtremeNet關(guān)鍵點(diǎn)的標(biāo)注成本更低,由于極值點(diǎn)在目標(biāo)上,標(biāo)注4個(gè)極值點(diǎn)相對(duì)比較容易,但是缺點(diǎn)為速度慢,在實(shí)時(shí)中無(wú)法使用。基于中心域深度學(xué)習(xí)檢測(cè)的典型方法有:2019年,Tian等提出一種基于全卷積的單級(jí)物體檢測(cè)器FCOS[15]。該方法采用點(diǎn)+點(diǎn)到框的四個(gè)距離來(lái)表示目標(biāo),憑借NMS[16]后處理提高了檢測(cè)精度,缺點(diǎn)為召回率低和缺乏理論的可解釋性。
基于錨框的檢測(cè)方法的基本思想是從已標(biāo)注數(shù)據(jù)集中獲取錨框,并以錨框?yàn)槠瘘c(diǎn),對(duì)錨框的類(lèi)別和位置進(jìn)行矯正?;阱^框的檢測(cè)方法分為兩類(lèi):二階段法和單階段法。二階段法也稱(chēng)為基于候選區(qū)域的檢測(cè)算法。該方法分兩個(gè)步驟實(shí)現(xiàn),首先使用帶有候選區(qū)域的CNN[17]網(wǎng)絡(luò)產(chǎn)生候選區(qū)域,再在候選區(qū)域上做分類(lèi)與回歸。常見(jiàn)的二階段法:2007年,Lou X等人提出R-CNN[18]算法。該算法采用選擇性搜索算法[19]生成類(lèi)別獨(dú)立的候選區(qū)域,并運(yùn)用SVM[11]和邊界框回歸來(lái)做物體分類(lèi)和定位。2015年,Ross Girshick在R-CNN上采用SPP-net[20],提出Fast R-CNN算法[21],解決了R-CNN訓(xùn)練步驟繁瑣的問(wèn)題,在檢測(cè)速度和精度上都有很大提升。2016年,Ross B. Girshick在Fast R-CNN上采用區(qū)域建議網(wǎng)絡(luò)提取候選區(qū)域,將特征抽取、候選區(qū)域提取、邊界框回歸和分類(lèi)都整合在一個(gè)網(wǎng)絡(luò),提出了Faster R-CNN算法[22],解決了Fast R-CNN不能實(shí)現(xiàn)端到端物體檢測(cè)的問(wèn)題。但該算法的計(jì)算量大,無(wú)法達(dá)到實(shí)時(shí)檢測(cè)目標(biāo)的目的。單階段法將物體檢測(cè)問(wèn)題看作對(duì)物體位置和類(lèi)別的回歸分析問(wèn)題,主要通過(guò)一個(gè)網(wǎng)絡(luò)直接輸出檢測(cè)結(jié)果。常見(jiàn)的單階段法:2017年,Joseph Redmon和Ali Farhadi在YOLOv1算法[23]的基礎(chǔ)上采用批量歸一化[24]、Darknet-19[25]網(wǎng)絡(luò)結(jié)構(gòu)和錨框卷積[26]等方法進(jìn)行改進(jìn),提出YOLOv2[27]和YOLO9000[28],解決了YOLOv1只能檢測(cè)單個(gè)物體和位置檢測(cè)不準(zhǔn)確的問(wèn)題。2018年,Redmon在YOLOv2算法上將Darknet-19網(wǎng)絡(luò)結(jié)構(gòu)改進(jìn)為Darknet-53[29],并采用softmax[30]函數(shù)分類(lèi)方法,提出YOLOv3算法。該算法實(shí)現(xiàn)了多尺度檢測(cè),在兼顧實(shí)時(shí)性的同時(shí)保證了物體檢測(cè)的準(zhǔn)確性。
上述檢測(cè)方法中,YOLOv3中采用的先驗(yàn)框,使得未訓(xùn)練前就具備目標(biāo)的部分特征,可以在后續(xù)訓(xùn)練中降低網(wǎng)絡(luò)迭代次數(shù),加快網(wǎng)絡(luò)訓(xùn)練速度,達(dá)到更好的檢測(cè)性能。因此該網(wǎng)絡(luò)具有檢測(cè)精度高、檢測(cè)速度快、端到端等優(yōu)勢(shì)。
聚類(lèi)作為一種無(wú)監(jiān)督模式識(shí)別方法,在圖像分析、遙感、生物信息學(xué)和文本分析[31]等多個(gè)領(lǐng)域有廣泛應(yīng)用。聚類(lèi)方法可分為基于劃分、基于層次[32]、基于密度[33]、基于網(wǎng)格[34]和基于模型[35]的方法。
劃分聚類(lèi)中最具有代表性的是k-means算法。該算法思想簡(jiǎn)單、容易實(shí)現(xiàn)、運(yùn)算速度快、空間復(fù)雜度和時(shí)間復(fù)雜度低,但也存在聚類(lèi)結(jié)果依賴(lài)聚類(lèi)數(shù)目k值及初始聚類(lèi)中心[36]等問(wèn)題。
在基于密度的聚類(lèi)中,具有代表性的是DBSCAN[37]算法和RNN-DBSCAN[31]算法。DBSCAN算法的核心思想是用一個(gè)點(diǎn)ε鄰域內(nèi)的相鄰點(diǎn)數(shù)目來(lái)衡量該點(diǎn)所在空間的密度。該算法可以找出形狀不規(guī)則的類(lèi),具有不需要預(yù)先制定聚類(lèi)數(shù)目、距離和規(guī)則相似度容易定義、限制少的優(yōu)點(diǎn)。但也存在計(jì)算復(fù)雜度高、奇異值影響大的問(wèn)題。與DBSCAN相比,RNN-DBSCAN算法有兩大優(yōu)勢(shì)。首先,降低問(wèn)題復(fù)雜性。因?yàn)镽NN-DBSCAN算法只需要使用單個(gè)參數(shù)k,而DBSCAN需要兩個(gè)參數(shù)minpts(閾值)和eps(鄰域半徑)。其次,DBSCAN在一定條件下使用基于距離的eps,導(dǎo)致該算法無(wú)法區(qū)分密度變化較大的簇。此外,DBSCAN聚類(lèi)結(jié)果具有隨機(jī)性,為了確保結(jié)果的確定性,必須使用對(duì)稱(chēng)距離度量,而RNN-DBSCAN算法沒(méi)有這樣的限制。
中國(guó)古建筑具有的結(jié)構(gòu)復(fù)雜、紋理重復(fù)嚴(yán)重等特點(diǎn)和k-means聚類(lèi)選取初始類(lèi)中心的隨機(jī)性導(dǎo)致聚類(lèi)的效果時(shí)好時(shí)壞,不具有穩(wěn)定性,從而在古建筑物體檢測(cè)過(guò)程中存在古建筑圖像特征提取不準(zhǔn)確、定位目標(biāo)不準(zhǔn)確等問(wèn)題?;趉-means的YOLOv3網(wǎng)絡(luò)的檢測(cè)結(jié)果會(huì)因此受到影響,檢測(cè)精度低,效果差。因此,該文采用RNN-DBSCAN+k-means方法選取聚類(lèi)初始中心,有效解決k-means聚類(lèi)結(jié)果不穩(wěn)定的問(wèn)題。
設(shè)給定圖像集I={I1,I2,…,In},n為圖像數(shù)量。首先需對(duì)圖像進(jìn)行標(biāo)注,在圖像標(biāo)注過(guò)程中會(huì)產(chǎn)生相應(yīng)目標(biāo)的真實(shí)框Xi=(Xup,Xdown),1≤i≤m。其中Xup、Xdown分別表示左上角的坐標(biāo)和右下角的坐標(biāo),即Xup=(ai1,bi1),Xdown=(ai2,bi2)。a、b分別表示X的橫坐標(biāo)和縱坐標(biāo),此時(shí):
Xi=(ai1,bi1,ai2,bi2),1≤i≤m。
設(shè)給定樣本集X={X1,X2,…,Xm},m=|X|,?Xi∈X:?Xi=(ai1,bi1,ai2,bi2)。
定義1:歐氏距離d(Xi,Xj)。
?Xi,Xj∈X:Xi=(ai1,bi1,ai2,bi2),Xj=(aj1,bj1,aj2,bj2)且i≠j,Xi和Xj的歐氏距離d(Xi,Xj)可定義為:
定義2:交并比(intersection over union,iou)iou(Xi,Xj)。
?Xi,Xj∈X:Xi=(ai1,bi1,ai2,bi2),Xj=(aj1,bj1,aj2,bj2)且i≠j,Xi和Xj的交并比iou(Xi,Xj)可定義為:
wij=min(aj2-aj1,ai2-ai1)
hij=min(bj2-bj1,bi2-bi1)
in_sectionij=wij×hij
xi_area=(ai2-ai1)×(bi2-bi1)
xj_area=(aj2-aj1)×(bj2-bj1)
定義3:差異性函數(shù)diff(Xi,Xj)。
在X中,?Xi,Xj∈X:Xi=(ai1,bi1,ai2,bi2),Xj=(aj1,bj1,aj2,bj2),且i≠j,已知iou(Xi,Xj),Xi和Xj的差異性函數(shù)diff(Xi,Xj)可定義為:
diff(Xi,Xj)=1-iou(Xi,Xj)
定義4:檢出率avg_iou。
在X中,設(shè)e為聚類(lèi)算法得出的k個(gè)先驗(yàn)框,iou(Xi,e)為第i個(gè)真實(shí)框和先驗(yàn)框的交并比,則X和e的檢出率avg_iou可定義為:
定義5:X的k近鄰。
?Xi∈X,Xi的k近鄰由函數(shù)Nk(Xi)=N定義,其中N滿(mǎn)足以下條件:
(1)N?X/{Xi};
(2)|N|=k;
(3)?Xi∈N,Xz∈X/(N+{Xi}):diff(Xi,Xj)≤diff(Xi,Xz)。
定義6:X的逆k近鄰。
?Xi∈X,Xi的逆k近鄰由函數(shù)Rk(Xi)=R定義,其中R滿(mǎn)足以下條件:
(1)R?X/{Xi};
(2)?Xj∈R:Xi∈Nk(Xj)。
定義7:直接密度可達(dá)。
如果Xi和Xj滿(mǎn)足下列兩個(gè)條件時(shí),Xi是Xj可以直接達(dá)到的密度:
(1)Xi∈Nk(Xj);
(2)|Rk(Xj)|≥k。
定義8:密度可達(dá)。
如果有一個(gè)鏈X1,X2,…,Xm,X1=y,Xm=x,且滿(mǎn)足|Rk(x)|≥k。如果滿(mǎn)足如下條件的話(huà),則x是y的密度可達(dá)。
(1)?1≤i≤m-1:當(dāng)|Rk(x)| (2)?1≤i≤m-2:觀(guān)測(cè)點(diǎn)Xi+1從觀(guān)測(cè)點(diǎn)Xi直接可達(dá)的,或者說(shuō),觀(guān)測(cè)點(diǎn)Xi從觀(guān)測(cè)點(diǎn)Xi+1直接可達(dá)的。 定義9:類(lèi)。 一個(gè)類(lèi)別C是X的一個(gè)非空子集(?≠C?X),滿(mǎn)足下列條件: (1)?Xi,Xj∈X:如果Xi∈C且Xj是Xi的密度可達(dá),則Xj∈C(極大性); (2)?Xi,Xj∈C:Xi和Xj密度相連(連接性)。 定義10:類(lèi)的密度。 給定類(lèi)別C,設(shè)C的密度為C中核心觀(guān)測(cè)之間的直接密度可達(dá)距離的最大值。類(lèi)別C的密度由函數(shù)den(C)定義: 其中,y是x直接到達(dá)的密度。 基于YOLOv3的物體檢測(cè)方法首先需對(duì)已標(biāo)注古建筑圖像真實(shí)框進(jìn)行聚類(lèi),采用k-means聚類(lèi)算法。然而針對(duì)古建筑圖像,k-means算法聚類(lèi)結(jié)果存在以下問(wèn)題:(1)k-means算法的k個(gè)初始聚類(lèi)中心是隨機(jī)選取的,從不同初始聚類(lèi)中心出發(fā),得到的聚類(lèi)結(jié)果也各不相同,因此聚類(lèi)結(jié)果容易陷入局部最優(yōu)解。(2)標(biāo)注的古建筑圖像真實(shí)框具有寬高差距大、寬高比例不一的特點(diǎn),若k-means算法選取的k個(gè)初始聚類(lèi)中心處于真實(shí)框的k個(gè)高密度分布的區(qū)域,則聚類(lèi)效果極佳,用時(shí)短;若k-means算法選取的k個(gè)初始聚類(lèi)中心處于真實(shí)框的k個(gè)低密度分布的區(qū)域,則聚類(lèi)效果極差。因此,基于k-means算法的初始聚類(lèi)中心的選擇會(huì)對(duì)聚類(lèi)結(jié)果產(chǎn)生很大的影響。而古建筑圖像真實(shí)框具有寬高信息差距大、比例不一的特點(diǎn),依據(jù)古建筑的這些特點(diǎn)容易形成高密度區(qū)域。所以,結(jié)合密度聚類(lèi)方法可有效提高聚類(lèi)結(jié)果。在所有的密度聚類(lèi)方法中,RNN-DBSCAN具有參數(shù)少、可應(yīng)用于各種形狀的優(yōu)點(diǎn),具體聚類(lèi)過(guò)程為:首先輸入數(shù)據(jù)集和參數(shù)k,接下來(lái)計(jì)算它的k近鄰和逆近鄰,k近鄰和逆近鄰的并集組成了影響空間,然后以影響空間為聚類(lèi)擴(kuò)展條件,依賴(lài)密度可達(dá)等概念進(jìn)行聚類(lèi)拓展。影響空間的引入進(jìn)一步確保RNN-DBSCAN的聚類(lèi)中心來(lái)自于聚類(lèi)高密度區(qū)域,從而得到最佳的聚類(lèi)結(jié)果。 基于上述思想,該文設(shè)計(jì)了一種RNN-DBSCAN+k-means方法,該方法分兩個(gè)步驟進(jìn)行。首先運(yùn)用RNN-DBSCAN算法對(duì)已標(biāo)注古建筑圖像的真實(shí)框聚類(lèi),得出多組迭代的聚類(lèi)結(jié)果;再?gòu)倪@些聚類(lèi)結(jié)果中選出檢出率最高的一組;然后將RNN-DBSCAN算法得出的聚類(lèi)結(jié)果作為k-means聚類(lèi)算法的初始聚類(lèi)中心,進(jìn)行二次聚類(lèi);最后k-means聚類(lèi)得出的結(jié)果則為最終結(jié)果,作為YOLOv3網(wǎng)絡(luò)訓(xùn)練的先驗(yàn)框。 RNN-DBSCAN算法作為基于密度的聚類(lèi)算法,具有能準(zhǔn)確識(shí)別噪聲點(diǎn)、處理任意形狀和大小的簇的優(yōu)點(diǎn),因此,基于RNN-DBSCAN的聚類(lèi)結(jié)果可有效確定聚類(lèi)高密度區(qū)域,進(jìn)而準(zhǔn)確定位聚類(lèi)中心,從而解決k-means方法聚類(lèi)結(jié)果波動(dòng)性大、不穩(wěn)定的問(wèn)題。然而,RNN-DBSCAN得到的聚類(lèi)結(jié)果受輸入k值的影響較大,而YOLOv3網(wǎng)絡(luò)進(jìn)行物體檢測(cè)的過(guò)程中需要9個(gè)先驗(yàn)框。因此,要想確保最終的聚類(lèi)中心為9個(gè)先驗(yàn)框,基于YOLOv3的物體檢測(cè)方法需要將經(jīng)過(guò)預(yù)處理的所有真實(shí)框進(jìn)行RNN-DBSCAN聚類(lèi),從得到的多組結(jié)果中挑出9個(gè)先驗(yàn)框。 基于上述思想,初始聚類(lèi)步驟如下: (1)數(shù)據(jù)預(yù)處理。 a.輸入n幅已標(biāo)注古建筑圖像,構(gòu)建古建筑數(shù)據(jù)集I={I1,I2,…,In},從I中提取已標(biāo)注真實(shí)框左上角和右下角的坐標(biāo)信息Xi=(ai1,bi1,ai2,bi2),1≤i≤m。由于一幅古建筑圖片中可能包含多個(gè)古建筑真實(shí)框,因此m和n的關(guān)系為m≥n。 b.依據(jù)下式: 將Xi轉(zhuǎn)化為真實(shí)框的寬高信息為Mi=(wi,hi),1≤i≤m; c.構(gòu)建真實(shí)框的類(lèi)別列表classList,如第i、j、k幅圖像的真實(shí)框?qū)捀咝畔⒎謩e為Mi=(wi,hi),Mj=(wj,hj),Mk=(wk,hk),若滿(mǎn)足wi=wj≠wk,hi=hj≠hk,則Mi和Mj表示相同的真實(shí)框,相應(yīng)地,Mi、Mj是一類(lèi),Mk是一類(lèi),因此,真實(shí)框類(lèi)別列表classList=[1,1,2]; d.將M中寬高信息完全相同的真實(shí)框去掉,形成N,記N的長(zhǎng)度為N',即所有真實(shí)框初始為N'類(lèi); e.依據(jù)classList構(gòu)建數(shù)據(jù)詞典classDict,如上述第i、j、k幅圖像的真實(shí)框所形成的數(shù)據(jù)詞典classList=[[[Mi,Mj],1],[[Mk],2]]。 (2)計(jì)算差異性矩陣。 a.依據(jù)數(shù)據(jù)預(yù)處理獲得的X,確定真實(shí)框總個(gè)數(shù)m,建立初始值為-1的m×m矩陣W,W即為差異性矩陣; b.?Xi,Xj∈X,依據(jù)定義2和定義3,計(jì)算差異性函數(shù)值diff(Xi,Xj)=1-iou(Xi,Xj); c.依據(jù)差異性函數(shù)值更新差異性矩陣W,計(jì)算方法為:Wij=Wji=diff(Xi,Xj)。 (3)聚類(lèi)過(guò)程。 a.數(shù)據(jù)信息整合: ①依據(jù)k(選取真實(shí)框Xi周?chē)町愋院瘮?shù)值最小的真實(shí)框的數(shù)目)、M、classList和W,根據(jù)定義5,在差異性矩陣W中尋找與真實(shí)框Mi的差異性函數(shù)值最小的k個(gè)真實(shí)框,若這k個(gè)真實(shí)框?yàn)镸1,M2,…,Mk,并標(biāo)記為kMatrix[i]=(1,2,…,k),依據(jù)上述過(guò)程c個(gè)類(lèi)別可生成kMatrix[m,m]; ②創(chuàng)建矩陣rMatrix[m,m],依據(jù)定義6,在kMatrix中找到每一個(gè)對(duì)象的逆k近鄰rMatrix[i]=(1,2,…,k); ③構(gòu)建數(shù)據(jù)信息整合矩陣IM,其中IM[i]=[M[i],rMatrix[i],kMatrix[i],W[i],i,classList[i]],1≤i≤m。 b.聚類(lèi)擴(kuò)展: ①創(chuàng)建長(zhǎng)度為m、初始值為-1的數(shù)組assign,assign即為類(lèi)別矩陣,其中-1表示未分類(lèi); ②創(chuàng)建類(lèi)別cluster并賦值為1; ③依據(jù)定義7和定義8,依次遍歷數(shù)據(jù)整合矩陣IM中的每個(gè)真實(shí)框Mi。以Mj為例,Mj是以Mi為中心的簇中的一個(gè)真實(shí)框,若rMatrix[j]的長(zhǎng)度小于k,則assign[j]=-2,此時(shí)Mj被認(rèn)為是噪聲;若rMatrix[j]的長(zhǎng)度不小于k,則認(rèn)為密度可達(dá),此時(shí)assign[j]=assign[i],依據(jù)定義9,Mj和Mi屬于同一類(lèi); ④依據(jù)定義10,計(jì)算類(lèi)的密度den(C),輸出類(lèi)別矩陣assign。 以10個(gè)數(shù)據(jù)點(diǎn)為例,數(shù)據(jù)集構(gòu)造及聚類(lèi)過(guò)程如表1所示。 表1 數(shù)據(jù)集構(gòu)造及聚類(lèi)過(guò)程 續(xù)表1 (4)獲得聚類(lèi)中心。 a.當(dāng)m<3 000時(shí),k=1,且每次迭代k值加1; 在上述迭代過(guò)程中,若聚類(lèi)結(jié)果小于9,則終止迭代。從聚類(lèi)數(shù)目不小于9個(gè)的聚類(lèi)結(jié)果中挑出聚類(lèi)數(shù)目最接近9的一組結(jié)果,并計(jì)算其檢出率,其中,最接近9的聚類(lèi)數(shù)目范圍為(9,22)。最后,選出檢出率最高的一個(gè)組合作為RNN-DBSCAN聚類(lèi)的最終結(jié)果。 圖1 RNN-DBSCAN聚類(lèi)過(guò)程 為了提高聚類(lèi)穩(wěn)定性,減少噪聲對(duì)聚類(lèi)結(jié)果的影響,該文在采用RNN-DBSCAN方法得到檢出率最高的一組聚類(lèi)中心后,將這組聚類(lèi)中心作為k-means算法的初始聚類(lèi)中心,并運(yùn)用差異性函數(shù)作為聚類(lèi)相似性度量方法,采用中位數(shù)法(將簇中所有真實(shí)框的中位數(shù)的寬高信息作為更新后的聚類(lèi)中心點(diǎn)更新聚類(lèi)中心)進(jìn)行k-means聚類(lèi)。獲得的最終聚類(lèi)結(jié)果即為YOLOv3模型所需的先驗(yàn)框。 以Windows7操作系統(tǒng)為平臺(tái),AMD A8-5550M APU with Radeon(TM) HD Graphics處理器,12 GB內(nèi)存為開(kāi)發(fā)環(huán)境,以及開(kāi)放源碼工具箱python3.6、Tensorflow1.14.0、Keras2.2.5和opencv4.5.5為工具,實(shí)現(xiàn)了基于RNN-DBSCAN+k-means,結(jié)合影響空間與YOLOv3的古建筑檢測(cè)算法。該算法共包括兩部分,分別為古建筑數(shù)據(jù)集構(gòu)建及網(wǎng)絡(luò)訓(xùn)練、測(cè)試結(jié)果。 古建筑數(shù)據(jù)集共有12 660幅圖像,包括4類(lèi)古建筑類(lèi)型:五臺(tái)山龍泉寺、九華山旃檀寺、普陀山法雨寺和峨眉金頂寺。依照3.1節(jié)方法構(gòu)建古建筑數(shù)據(jù)集,以數(shù)據(jù)集中的一幅圖像為例(如圖2所示),它所提取的真實(shí)框信息如表2所示。 圖2 已標(biāo)記的圖像825 表2 圖像825生成的真實(shí)框信息 voc數(shù)據(jù)集共有9 963幅圖像,包括20種類(lèi)型,分別為飛機(jī)、自行車(chē)、鳥(niǎo)、船、公共汽車(chē)、小汽車(chē)、貓、椅子、牛、餐桌、狗、馬、摩托車(chē)、人、盆栽植物、羊、沙發(fā)、火車(chē)和電視監(jiān)視器。 好的聚類(lèi)算法產(chǎn)生良好的先驗(yàn)框,使得先驗(yàn)框在未訓(xùn)練前就具備目標(biāo)的部分特征。在后續(xù)的網(wǎng)絡(luò)訓(xùn)練中能夠降低網(wǎng)絡(luò)迭代次數(shù),加快網(wǎng)絡(luò)訓(xùn)練速度,更快取得最佳訓(xùn)練效果。 古建筑數(shù)據(jù)集可劃分為訓(xùn)練集和測(cè)試集,如表3所示。其中,訓(xùn)練集占80%,測(cè)試集占20%。 表3 訓(xùn)練集和測(cè)試集的劃分 該文采用YOLOv3網(wǎng)絡(luò)對(duì)古建筑進(jìn)行訓(xùn)練和測(cè)試。模型訓(xùn)練分為預(yù)訓(xùn)練和全訓(xùn)練。設(shè)置epoches為100,其中3epoch為預(yù)訓(xùn)練,其余為全訓(xùn)練。訓(xùn)練過(guò)程中每三次迭代保存為一個(gè)權(quán)重文件,方便后續(xù)確定最佳訓(xùn)練效果的迭代范圍。訓(xùn)練完成后,用訓(xùn)練得到的權(quán)重文件對(duì)測(cè)試集進(jìn)行測(cè)試,輸入待檢測(cè)圖片,得到測(cè)試結(jié)果。 評(píng)價(jià)指標(biāo)為檢出率和檢測(cè)概率。其中,檢出率應(yīng)用于先驗(yàn)框中,在RNN-DBSCAN+k-means算法得出先驗(yàn)框后,采用檢出率驗(yàn)證先驗(yàn)框的有效性,用百分比表示。檢測(cè)概率應(yīng)用于YOLOv3模型的測(cè)試中,用來(lái)檢測(cè)古建筑圖像中成功識(shí)別古建筑的概率,也用百分比來(lái)表示。 以古建筑數(shù)據(jù)集和voc數(shù)據(jù)集為對(duì)象,驗(yàn)證算法檢測(cè)結(jié)果的有效性,分別采用k-means算法和RNN-DBSCAN+k-means算法進(jìn)行聚類(lèi),計(jì)算其檢出率,具體結(jié)果如表4所示。 從表4可以看出: 表4 k-means方法和RNN-DBSCAN+k-means方法在兩種數(shù)據(jù)集上的檢出率 % ·針對(duì)古建筑數(shù)據(jù)集,采用iou的k-means物體檢測(cè)結(jié)果相較于基于歐氏距離的k-means物體檢測(cè)結(jié)果,檢出率有所提升。主要原因是:將差異性函數(shù)(1-iou)作為聚類(lèi)相似性度量,能將所有真實(shí)框中寬高比例相同或相近的真實(shí)框聚為一類(lèi),進(jìn)而提高檢出率;若依據(jù)定義1的歐氏距離,聚類(lèi)結(jié)果是將寬相同、高相差較大或高相同、寬相差較大的真實(shí)框聚成一類(lèi),檢出率較低。 ·在voc數(shù)據(jù)集和古建筑數(shù)據(jù)集中,RNN-DBSCAN+k-means算法與采用iou的k-means算法相比,除voc數(shù)據(jù)集的類(lèi)別9、11、12、16和20因目標(biāo)形態(tài)各異和樣本數(shù)不足,導(dǎo)致檢出率略低于iou k-means的檢出率外,其余類(lèi)別的檢出率提升范圍為0.1%~0.9%,在古建筑數(shù)據(jù)集中平均提高了0.33%;在voc數(shù)據(jù)集單類(lèi)檢測(cè)中,檢出率提升最高為voc數(shù)據(jù)集類(lèi)別1,檢出率為0.84%。原因?yàn)椋号ck-means算法隨機(jī)選取初始聚類(lèi)中心相比,RNN-DBSCAN算法的聚類(lèi)結(jié)果已具備目標(biāo)的部分特征,將其作為k-means算法的初始聚類(lèi)中心,聚類(lèi)結(jié)果更加穩(wěn)定,從而提高了檢出率。 在古建筑數(shù)據(jù)集中運(yùn)用YOLOv3模型檢測(cè)的結(jié)果如下:以訓(xùn)練集中圖像1為例,檢測(cè)結(jié)果如圖3左所示,檢測(cè)概率為98%。以測(cè)試集中圖像2為例,檢測(cè)結(jié)果如圖3右所示,檢測(cè)概率為77%。訓(xùn)練集和測(cè)試集均取得了很好的結(jié)果。 (a)圖像1(左) (b)圖像2(右) 針對(duì)基于YOLOv3的古建筑檢測(cè)結(jié)果不穩(wěn)定的問(wèn)題,結(jié)合影響空間思想,提出了一種基于RNN-DBSCAN+k-means的古建筑檢測(cè)算法。該算法主要采用RNN-DBSCAN獲得初始聚類(lèi)中心,并以上述聚類(lèi)中心為初始值,結(jié)合差異性函數(shù)與k-means獲得聚類(lèi)結(jié)果,并進(jìn)一步得到先驗(yàn)框。將先驗(yàn)框用于YOLOv3網(wǎng)絡(luò)對(duì)古建筑的訓(xùn)練中,得到更穩(wěn)定的權(quán)重。檢測(cè)結(jié)果在古建筑數(shù)據(jù)集上取得了很好的效果。同時(shí),在非古建筑數(shù)據(jù)集(voc)上,RNN-DBSCAN+k-means方法獲取先驗(yàn)框的檢出率也有所提高,驗(yàn)證了采用RNN-DBSCAN+k-means方法獲取先驗(yàn)框的有效性。 但RNN-DBSCAN+k-means算法也存在弊端,由于該算法是兩種算法的組合,所以時(shí)間復(fù)雜度略高于k-means,有待進(jìn)一步改進(jìn)。該算法從整體上來(lái)說(shuō),獲取的先驗(yàn)框更加穩(wěn)定,有利于YOLOv3模型的訓(xùn)練和測(cè)試,檢測(cè)精度有所提高。3 文中方法
3.1 初始聚類(lèi)中心的確定
3.2 +k-means算法
4 實(shí)驗(yàn)結(jié)果
4.1 數(shù)據(jù)集及預(yù)處理
4.2 測(cè)試結(jié)果
5 結(jié)束語(yǔ)