葛從兵,陳 劍,嚴(yán)吉皞
(南京水利科學(xué)研究院,江蘇 南京 210029)
水庫(kù)大壩是我國(guó)經(jīng)濟(jì)社會(huì)發(fā)展的重要基礎(chǔ)設(shè)施,其安全是國(guó)家水安全和公共安全的重要組成部分[1]。布設(shè)監(jiān)測(cè)設(shè)施進(jìn)行日常觀測(cè),可以反映大壩安全性態(tài)。但監(jiān)測(cè)設(shè)施僅能監(jiān)測(cè)到點(diǎn),不能全面覆蓋水庫(kù)大壩,存在漏檢和盲區(qū)。因此,《土石壩安全監(jiān)測(cè)技術(shù)規(guī)范》(SL 551-2012)和《混凝土壩安全監(jiān)測(cè)技術(shù)規(guī)范》(SL 601-2013)明確規(guī)定水庫(kù)大壩巡視檢查是大壩安全監(jiān)測(cè)工作的重要組成部分,它可以全面、直觀地對(duì)大壩安全性態(tài)進(jìn)行快速診斷。對(duì)于大部分沒(méi)有監(jiān)測(cè)設(shè)施或監(jiān)測(cè)設(shè)施損壞的中、小型水庫(kù),水庫(kù)大壩巡視檢查對(duì)保障水庫(kù)大壩安全運(yùn)行尤為重要。
隨著水管體制改革,水庫(kù)管理人員被精簡(jiǎn),許多水庫(kù)將巡視檢查工作委托給服務(wù)公司,巡檢人員為非專(zhuān)業(yè)人員,只能做到按規(guī)定路徑巡視,用巡檢儀拍照。大部分水庫(kù)在大壩上安裝了攝像機(jī),可以定期對(duì)大壩、庫(kù)面及其他重要區(qū)域拍照。未來(lái),應(yīng)用無(wú)人機(jī)對(duì)大壩進(jìn)行巡檢是必然趨勢(shì),它可以按規(guī)定路徑飛行,在巡視點(diǎn)上懸停,對(duì)巡視部位拍照。上述巡檢圖像如由專(zhuān)業(yè)人員逐一查看,工作量大、時(shí)效性差,因此,迫切需要一個(gè)能夠自動(dòng)識(shí)別巡檢圖像中大壩缺陷的系統(tǒng)。大壩缺陷識(shí)別系統(tǒng)主要采用目標(biāo)識(shí)別方法,目標(biāo)識(shí)別方法包括傳統(tǒng)目標(biāo)識(shí)別方法和深度學(xué)習(xí)目標(biāo)識(shí)別方法[2]。
傳統(tǒng)目標(biāo)識(shí)別方法基于顏色、紋理、邊緣輪廓等特征,其中模板匹配算法抗干擾能力差,因而局限性較大[3]。2003 年,F(xiàn)ortunato 等[4]將遺傳算法與模板匹配算法相結(jié)合,提高了目標(biāo)識(shí)別率。2006 年,Wang 等[5]將詞袋模型應(yīng)用到圖像識(shí)別分類(lèi)。2010 年,Belongie 等[6]提出基于圖像梯度的形狀匹配方法,提高了匹配率,但不能實(shí)時(shí)處理目標(biāo)圖像。近年來(lái),SVM 算法在識(shí)別分類(lèi)領(lǐng)域得到廣泛應(yīng)用,對(duì)于小樣本數(shù)據(jù)分類(lèi)效果較好[7]。
隨著卷積神經(jīng)網(wǎng)絡(luò)[8](Convolutional Neural Network,CNN)的出現(xiàn),深度學(xué)習(xí)[9]備受矚目。1998 年,Yann 等[10]首次提出LeNet,用于手寫(xiě)數(shù)字識(shí)別,卷積神經(jīng)網(wǎng)絡(luò)性能一直沒(méi)有明顯提升。直到2012年,Krizhevsky 等[11]提 出AlexNet,將Top5 錯(cuò)誤率從18.2%降低到15.4%,卷積神經(jīng)網(wǎng)絡(luò)重新煥發(fā)生機(jī)。2013 年,Zeiler 等[12]提出CNN 可視化方法。2014 年,Simonyan 等[13]設(shè)計(jì)VGG,將Top5 降低到7.3%。2015 年,Szegedy 等[14]提出GoogLeNet,采用Inception 結(jié)構(gòu),減少了參數(shù)量,提高了網(wǎng)絡(luò)性能。2016 年,He等[15]提出ResNet,允許層與層之間跳躍相連,網(wǎng)絡(luò)性能獲得很大提升。在目標(biāo)識(shí)別方面,2014 年,Girshick 等[16]提出基于區(qū)域(Region)的卷積神經(jīng)網(wǎng)絡(luò)R-CNN,以候選框與卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合的方式進(jìn)行目標(biāo)檢測(cè),取得了突破性進(jìn)展。2015 年,Girshick[17]提出Fast R-CNN,將分類(lèi)與檢測(cè)任務(wù)合并,采用多任務(wù)損失函數(shù),大幅縮短了網(wǎng)絡(luò)訓(xùn)練與檢測(cè)時(shí)間。同年,Ren 等[18]提出Faster R-CNN,采用RPN(Region Proposal Networks)與卷積層共享權(quán)值方式,進(jìn)一步提高了圖像分類(lèi)和檢測(cè)性能。2016 年,Redmon 等[19]提出采用單步(One-Stage)方法的YOLO(You Only Look Once),提高檢測(cè)速度,滿(mǎn)足實(shí)時(shí)性需求;同年,Liu 等[20]提出SSD(Single Shot MultiBox Detector),其速度比Faster RCNN 快,精度比YOLO 高。2017 年,He 等[21]提出Mask RCNN,用RoI Align 層替換RoI Pooling 層,增加目標(biāo)輪廓預(yù)測(cè)分割分支。
本文在研究目標(biāo)識(shí)別和遷移學(xué)習(xí)[22]基礎(chǔ)上,采用TensorFlow[23]深度學(xué)習(xí)框架,開(kāi)發(fā)了B/S 架構(gòu)的大壩缺陷識(shí)別系統(tǒng),實(shí)現(xiàn)了大壩缺陷識(shí)別模型訓(xùn)練和缺陷自動(dòng)識(shí)別。
大壩缺陷識(shí)別系統(tǒng)開(kāi)發(fā)基于深度學(xué)習(xí)框架Tensor-Flow,應(yīng)用TensorFlow Object Detection API 庫(kù),采用MySQL數(shù)據(jù)庫(kù)、Python 語(yǔ)言[24]和Django 框架[25],系統(tǒng)框架如圖1所示。TensorFlow 是采用Python 語(yǔ)言的主流學(xué)習(xí)框架,其核心功能是加速計(jì)算、自動(dòng)梯度、神經(jīng)網(wǎng)絡(luò);TensorFlow Object Detection API 用于多目標(biāo)檢測(cè),并在COCO、Kitti 和Open Images 等數(shù)據(jù)集上訓(xùn)練好模型,用于遷移學(xué)習(xí);Django 是一個(gè)開(kāi)源的、全棧式(full-stack)的Web 應(yīng)用框架,它采用MTV 設(shè)計(jì)模式,包含Web 開(kāi)發(fā)所用到的幾乎所有模塊。
大壩缺陷識(shí)別系統(tǒng)可根據(jù)需要選擇預(yù)訓(xùn)練模型,建立大壩缺陷識(shí)別模型;上傳缺陷樣本,對(duì)樣本進(jìn)行重構(gòu),標(biāo)注樣本中的缺陷,將樣本轉(zhuǎn)換為T(mén)FRecord 格式文件;采用訓(xùn)練樣本對(duì)模型進(jìn)行訓(xùn)練;采用評(píng)估樣本,對(duì)模型進(jìn)行評(píng)估,顯示評(píng)估結(jié)果;根據(jù)模型檢查點(diǎn)文件,生成模型凍結(jié)文件;上傳待識(shí)別圖像,識(shí)別圖像中的缺陷。系統(tǒng)主要流程如圖2所示。
大壩缺陷識(shí)別系統(tǒng)功能如圖3所示。
模型管理可添加、修改、刪除缺陷識(shí)別模型,添加或刪除模型相應(yīng)的目錄、預(yù)訓(xùn)練模型、標(biāo)簽映射文件和配置文件;根據(jù)模型檢查點(diǎn)文件,生成缺陷識(shí)別模型凍結(jié)文件,凍結(jié)文件存儲(chǔ)模型網(wǎng)絡(luò)結(jié)構(gòu)(計(jì)算圖)、模型變量及其取值;查詢(xún)模型的網(wǎng)絡(luò)節(jié)點(diǎn)和操作的屬性;下載模型壓縮包,包括配置文件、檢測(cè)點(diǎn)文件和凍結(jié)文件,供其他大壩缺陷識(shí)別的軟硬件使用。
樣本管理可將樣本的圖像文件和標(biāo)注文件上傳至樣本庫(kù);通過(guò)圖像水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)、旋轉(zhuǎn)進(jìn)行樣本重構(gòu),增加樣本數(shù)量;采用矩形或多邊形標(biāo)注樣本中的缺陷;對(duì)樣本是否已標(biāo)注、缺陷名稱(chēng)是否正確進(jìn)行合規(guī)性檢查,對(duì)缺陷標(biāo)注位置進(jìn)行準(zhǔn)確性檢查;將圖像文件和標(biāo)注文件轉(zhuǎn)換TFRecord 文件,提高模型輸入數(shù)據(jù)速度。
模型訓(xùn)練可修改配置文件中模型訓(xùn)練參數(shù);采用訓(xùn)練樣本TFRecord 文件對(duì)預(yù)訓(xùn)練模型進(jìn)行訓(xùn)練;顯示訓(xùn)練過(guò)程參數(shù),包括學(xué)習(xí)率、分類(lèi)損失、定位損失、總損失和單步訓(xùn)練時(shí)間等。
模型評(píng)估可采用評(píng)估樣本TFRecord 文件對(duì)模型進(jìn)行評(píng)估;顯示評(píng)估結(jié)果,包括分類(lèi)損失、定位損失、AP(Average Precision)、mAP(Mean Average Precision)和評(píng)估樣本圖像。
Fig.2 System process圖2 系統(tǒng)流程
Fig.3 System function圖3 系統(tǒng)功能
缺陷識(shí)別可上傳待識(shí)別圖像,并應(yīng)用模型凍結(jié)文件,對(duì)待識(shí)別圖像進(jìn)行缺陷識(shí)別,顯示圖像及其缺陷類(lèi)型、缺陷方框或缺陷淹膜。
2.1.1 Faster R-CNN
Fast R-CNN 將整張圖像輸入至CNN,得到圖像的特征層;利用Selective Search 方法得到原始圖像中的候選框,將這些候選框投影至特征層;針對(duì)特征層上每個(gè)大小不同的候選框,對(duì)其進(jìn)行池化,得到固定維度的特征表示;通過(guò)兩個(gè)全連接層,分別用Softmax 分類(lèi)、回歸模型進(jìn)行檢測(cè)。
Fast R-CNN 中Selective Search 方法的滑窗(anchor)選擇效率低,會(huì)產(chǎn)生大量無(wú)效候選框。針對(duì)這一問(wèn)題,F(xiàn)aster R-CNN 采用RPN 代替Selective search 方法產(chǎn)生候選框,如圖4 所示。RPN 是一個(gè)小的全卷積網(wǎng)格,對(duì)于任意大小的圖像,輸出候選框的具體位置以及候選框是否為目標(biāo)。
2.1.2 Mask R-CNN
Fig.4 Faster R-CNN framework圖4 Faster R-CNN框架
Mask R-CNN 是一個(gè)實(shí)例分割模型,由Faster R-CNN和FCN(Fully Convolution Nets)組合而成。前者負(fù)責(zé)物體檢測(cè)(分類(lèi)標(biāo)簽+方框),后者負(fù)責(zé)確定目標(biāo)輪廓。Mask RCNN 用RoI Align 層替換Faster R-CNN 的RoI Pooling 層,并添加一個(gè)含F(xiàn)CN 層的預(yù)測(cè)分割分支,如圖5 所示。與RoI Pooling 層不同,RoI Align 層使用插值算法得到輸出坐標(biāo),不再進(jìn)行量化;每個(gè)網(wǎng)格中的值也是使用差值算法得到,不再使用max 函數(shù)。FCN 是一種流行的語(yǔ)義分割算法,它通過(guò)卷積層和最大池化層,將輸入圖像壓縮到原始大小的1/32,在這個(gè)細(xì)粒度級(jí)別進(jìn)行分類(lèi)預(yù)測(cè);采用反卷積層對(duì)最后一個(gè)卷積層的特征圖進(jìn)行上采樣,將圖像還原成原始大小。
2.1.3 SSD
SSD 整合YOLO 的無(wú)顯式候選框提取和Faster R-CNN中的滑窗機(jī)制,在特征空間中融合不同卷積層的特征進(jìn)行預(yù)測(cè)。SSD 檢測(cè)速度較快,檢測(cè)精度也很高,可以與Faster R-CNN 相媲美,在實(shí)時(shí)目標(biāo)檢測(cè)方面有非常廣泛的應(yīng)用。
在Faster R-CNN 中,滑窗是在主干網(wǎng)的最后一個(gè)特征層上生成。而在SSD 中,其他幾個(gè)高層特征層也產(chǎn)生滑窗??壳暗奶卣鲗佑糜跈z測(cè)小目標(biāo),靠后的特征層用于檢測(cè)大目標(biāo)。特征層上每個(gè)方格是一個(gè)特征點(diǎn),每個(gè)特征點(diǎn)可以生成多個(gè)比例、多個(gè)尺度的滑窗?;敖?jīng)過(guò)正負(fù)樣本篩選,再進(jìn)行分類(lèi)和邊界框位置學(xué)習(xí)。
大壩缺陷識(shí)別系統(tǒng)從Github 平臺(tái)tensorflow 項(xiàng)目中下載采用上述3 種目標(biāo)檢測(cè)方法的預(yù)訓(xùn)練模型:faster_rcnn_inception_v2_coco、mask_rcnn_inception_v2_coco、ssd_inception_v2_coco,針對(duì)收集的大壩缺陷圖像,采用Object Detection API 的trainer.train 函數(shù)對(duì)預(yù)訓(xùn)練模型進(jìn)行再訓(xùn)練,得到缺陷識(shí)別模型。缺陷識(shí)別時(shí),加載缺陷識(shí)別模型,采用tensorflow.Session 會(huì)話(huà)的run 函數(shù)識(shí)別圖像中的大壩缺陷。
深度學(xué)習(xí)需要專(zhuān)業(yè)人員進(jìn)行大數(shù)據(jù)收集和清洗,深度學(xué)習(xí)的極高識(shí)別精度主要來(lái)自于對(duì)深度卷積神經(jīng)網(wǎng)絡(luò)百萬(wàn)乃至千萬(wàn)個(gè)參數(shù)的訓(xùn)練。要將如此多的參數(shù)訓(xùn)練出來(lái),除需要上萬(wàn),甚至十萬(wàn)、百萬(wàn)以上的大數(shù)據(jù)外,還要有與之相匹配的超強(qiáng)算力。因此,深度學(xué)習(xí)存在數(shù)據(jù)收集困難、數(shù)據(jù)標(biāo)注耗時(shí)、模型訓(xùn)練耗時(shí)等問(wèn)題,遷移學(xué)習(xí)是一個(gè)非常好的解決方法。
遷移學(xué)習(xí)是將一個(gè)已經(jīng)在大規(guī)模數(shù)據(jù)集上訓(xùn)練好的模型中的知識(shí)遷移到另一個(gè)模型,即保留特征提取器不變,在具有相似特征新的數(shù)據(jù)集上對(duì)分類(lèi)器進(jìn)行重新訓(xùn)練。由于特征提取器無(wú)需再訓(xùn)練,因而極大減少了需要訓(xùn)練的參數(shù),僅需少量數(shù)據(jù)即可。
收集上萬(wàn)個(gè)大壩缺陷樣本難度很大,因此大壩缺陷識(shí)別系統(tǒng)采用遷移學(xué)習(xí)方法,從Github 平臺(tái)Tensorflow 項(xiàng)目中下載預(yù)訓(xùn)練模型,然后遷移至大壩缺陷識(shí)別模型。預(yù)訓(xùn)練模型的訓(xùn)練數(shù)據(jù)集為COCO(Common Objects in Context)數(shù)據(jù)集,該數(shù)據(jù)集包括人、自行車(chē)、汽車(chē)、貓、狗等多種類(lèi)型的圖像。大壩缺陷識(shí)別系統(tǒng)的數(shù)據(jù)集為大壩缺陷數(shù)據(jù)集,大壩缺陷數(shù)據(jù)集需根據(jù)預(yù)訓(xùn)練模型的輸出類(lèi)型,采用矩形或多邊形在缺陷圖像上標(biāo)出大壩缺陷位置。
3.1.1 標(biāo)注文件轉(zhuǎn)換
系統(tǒng)中有2 種標(biāo)注形式:矩形標(biāo)簽和多邊形標(biāo)簽。矩形標(biāo)簽用于Faster R-CNN、SSD,一個(gè)樣本的所有矩形標(biāo)簽保存在一個(gè).xml 標(biāo)注文件里;多邊形標(biāo)簽用于Mask RCNN,一個(gè)樣本的所有多邊形標(biāo)簽保存在一個(gè).json 標(biāo)注文件里(見(jiàn)圖5)。
對(duì)于矩形標(biāo)簽,首先將所有.xml 標(biāo)注文件匯集成一個(gè).cvs文件,主要從各.xml標(biāo)注文件中讀取文件名、圖像寬度、圖像高度、圖像深度度、缺陷名稱(chēng)、缺陷框坐標(biāo)等信息,保存至.csv 文件;然后將.csv 文件和圖像文件轉(zhuǎn)換為.tfrecord 文件,主要是采用具名元組方式從.csv 文件中讀取樣本的所有標(biāo)簽信息,從對(duì)應(yīng)的圖像文件中讀取圖像數(shù)據(jù),采用tensorflow.train.Example 函數(shù)生成tensorflow 訓(xùn)練樣本,以記錄形式存入.tfrecord 文件,一個(gè)樣本一條記錄。
對(duì)于多邊形標(biāo)簽,首先將多個(gè).json 標(biāo)注文件匯集成一個(gè)COCO 數(shù)據(jù)集,主要從各.json 標(biāo)注文件中讀取文件名、圖像寬度、圖像高度、圖像深度、缺陷名稱(chēng)、缺陷形狀和多邊形各點(diǎn)坐標(biāo),根據(jù)預(yù)定義標(biāo)簽文件,將缺陷名稱(chēng)轉(zhuǎn)換為缺陷標(biāo)識(shí),保存至.json 文件;然后將COCO 數(shù)據(jù)集的.json文件和圖像文件轉(zhuǎn)換為.tfrecord 文件,主要從.json 文件中讀取每個(gè)樣本信息及其對(duì)應(yīng)的圖像數(shù)據(jù),針對(duì)每個(gè)樣本,讀取每個(gè)缺陷標(biāo)簽信息,計(jì)算每個(gè)缺陷標(biāo)簽坐標(biāo)范圍,采用tensorflow.train.Example 函數(shù)生成tensorflow 訓(xùn)練樣本,以記錄形式存入.tfrecord 文件。
Fig.5 Mask R-CNN framework圖5 Mask R-CNN框架
3.1.2 模型訓(xùn)練
模型訓(xùn)練采用訓(xùn)練樣本TFRecord 文件對(duì)預(yù)訓(xùn)練模型進(jìn)行訓(xùn)練,得到模型的檢查點(diǎn)文件。由于訓(xùn)練時(shí)間較長(zhǎng),因此在模型訓(xùn)練完成之前,系統(tǒng)將阻止啟動(dòng)新的模型訓(xùn)練。
模型配置文件主要包括以下5 部分參數(shù):①model:模型主要信息,包括模型架構(gòu)、特征提取器、圖像尺寸調(diào)整器等;②train_config:訓(xùn)練參數(shù),包括SGD 參數(shù)、輸入預(yù)處理和特征提取器初始值等;③eval_config:評(píng)估參數(shù);④train_input_reader:訓(xùn)練數(shù)據(jù)集位置;⑤eval_input_reader:評(píng)估數(shù)據(jù)集位置。
模型訓(xùn)練時(shí),先根據(jù)預(yù)訓(xùn)練模型文件建立網(wǎng)絡(luò)模型,再?gòu)腡FRecord 文件中讀取訓(xùn)練圖像數(shù)據(jù),采用Object Detection API 的trainer.train 函數(shù)對(duì)模型進(jìn)行訓(xùn)練。模型訓(xùn)練可以采用分布式,由多臺(tái)計(jì)算機(jī)共同完成模型訓(xùn)練,以縮短模型訓(xùn)練時(shí)間。系統(tǒng)測(cè)試時(shí)采用單機(jī)模式。
3.1.3 訓(xùn)練過(guò)程顯示
在模型訓(xùn)練過(guò)程中和訓(xùn)練結(jié)束時(shí),一般可用可視化工具TensorBoard 顯示模型計(jì)算圖的計(jì)算過(guò)程,以便有針對(duì)性地調(diào)整訓(xùn)練參數(shù)。由于TensorBoard 需另啟動(dòng)一個(gè)Web 服務(wù),故本系統(tǒng)采用TensorBoard 事件加速器(EventAccumulator)的scalars.Items 函數(shù)從模型訓(xùn)練記錄文件中讀取計(jì)算過(guò)程數(shù)據(jù),在頁(yè)面上顯示相關(guān)參數(shù)圖形,包括學(xué)習(xí)率、分類(lèi)損失、定位損失、總損失和單步訓(xùn)練時(shí)間等。主要代碼如下:
3.1.4 模型評(píng)估
模型評(píng)估采用評(píng)估樣本TFRecord 文件,對(duì)模型進(jìn)行評(píng)估。模型評(píng)估時(shí),先根據(jù)檢查點(diǎn)文件,建立網(wǎng)絡(luò)模型,再?gòu)腡FRecord 文件中讀取評(píng)估圖像數(shù)據(jù),采用Object Detection API的evaluator.evaluate 函數(shù),對(duì)模型進(jìn)行評(píng)估。
模型評(píng)估后,一般也可用可視化工具TensorBoard 查看評(píng)估結(jié)果。由于同樣原因,該系統(tǒng)采用TensorBoard 事件累加器(EventAccumulator)的scalars.Items 函數(shù)從模型評(píng)估記錄文件中讀取數(shù)據(jù),在頁(yè)面上顯示相關(guān)參數(shù)圖形,包括分類(lèi)損失、定位損失、AP、mAP 和評(píng)估樣本圖像,評(píng)估樣本圖像上將標(biāo)注模型識(shí)別出的缺陷類(lèi)型、缺陷方框或缺陷淹膜。
3.1.5 缺陷識(shí)別
缺陷識(shí)別根據(jù)模型凍結(jié)文件,對(duì)待識(shí)別圖像進(jìn)行缺陷識(shí)別。缺陷識(shí)別時(shí),首先根據(jù)模型凍結(jié)文件建立網(wǎng)絡(luò)模型,從預(yù)定義標(biāo)簽文件獲取缺陷分類(lèi);然后逐個(gè)從待識(shí)別圖像文件讀取圖像數(shù)據(jù),采用tensorflow.Session 會(huì)話(huà)的run函數(shù)進(jìn)行推理;最后顯示識(shí)別結(jié)果,即模型識(shí)別出的缺陷類(lèi)型、缺陷方框或缺陷淹膜的圖像。缺陷識(shí)別界面如圖6所示。
Fig.6 Defect recognition圖6 缺陷識(shí)別
從37 份大壩安全鑒定報(bào)告收集到120 張裂縫圖像和85 張破損圖像,用作訓(xùn)練樣本,其他類(lèi)型缺陷圖像較少;從196 份水庫(kù)日常巡視檢查報(bào)告收集到18 張裂縫圖像和5 張破損圖像,用作測(cè)試樣本。典型圖像如圖7所示。
典型圖像標(biāo)注數(shù)據(jù)如下,其中size 標(biāo)簽存儲(chǔ)圖像大小,name 標(biāo)簽存儲(chǔ)缺陷名稱(chēng),bndbox 標(biāo)簽存儲(chǔ)覆蓋缺陷的方框在圖像中位置:
Fig.7 Typical image圖7 典型圖像
從目標(biāo)檢測(cè)類(lèi)TersonFlow 預(yù)訓(xùn)練模型中選擇3 個(gè)典型預(yù)訓(xùn)練模型用于實(shí)驗(yàn),如表1 所示。根據(jù)收集到樣本和預(yù)訓(xùn)練模型,創(chuàng)建5 個(gè)缺陷識(shí)別模型,如表2 所示。將訓(xùn)練樣本上傳至系統(tǒng)后,對(duì)樣本進(jìn)行缺陷標(biāo)注和標(biāo)注文件轉(zhuǎn)換。標(biāo)注文件轉(zhuǎn)換時(shí),系統(tǒng)隨機(jī)抽取10%樣本,用于模型評(píng)估。
模型訓(xùn)練后,模型評(píng)估結(jié)果如表3 所示。從模型評(píng)估結(jié)果來(lái)看,采用mask_rcnn_inception_v2_coco 的性能優(yōu)于faster_rcnn_inception_v2_coco,采 用 faster_rcnn_inception_v2_coco的性能優(yōu)于ssd_inception_v2_coco。
將測(cè)試樣本上傳至系統(tǒng),缺陷識(shí)別結(jié)果如表4 所示。對(duì)于大壩安全而言,能夠自動(dòng)識(shí)別圖像上有無(wú)缺陷至關(guān)重要,至于具體缺陷數(shù)量和位置則較為次要,故增加缺陷圖像識(shí)別率,以考察有缺陷的圖像是否被識(shí)別出來(lái)。從模型測(cè)試結(jié)果看,對(duì)于大壩缺陷識(shí)別,采用faster_rcnn_inception_v2_coco 和mask_rcnn_inception_v2_coco 較為 合適,但mask_rcnn_inception_v2_coco 標(biāo)注難度和工作量稍大。造成缺陷未識(shí)別、缺陷誤識(shí)別的主要原因有:訓(xùn)練樣本較少;一條裂縫被識(shí)別為多條裂縫;不同破損之間差異大;寬裂縫和某些破損相似,不宜區(qū)分。
Table 1 Pre-training model表1 預(yù)訓(xùn)練模型
Table 2 Defect recognition model表2 缺陷識(shí)別模型
本文開(kāi)發(fā)的大壩缺陷識(shí)別系統(tǒng)具有模型管理、樣本管理、模型訓(xùn)練、模型評(píng)估和缺陷識(shí)別等功能,可根據(jù)需要建立單缺陷識(shí)別模型和多缺陷識(shí)別模型,所訓(xùn)練的模型可供其他終端使用。實(shí)驗(yàn)結(jié)果表明,在訓(xùn)練樣本較少的情況下,采用faster_rcnn_inception_v2_coco 和mask_rcnn_inception_v2_coco 預(yù)訓(xùn)練模型可獲取性能較好的大壩缺陷識(shí)別模型。為了獲取性能更好的大壩缺陷識(shí)別模型,在進(jìn)行模型訓(xùn)練前需做好以下工作:①收集盡可能多的缺陷圖像樣本;②按缺陷表象進(jìn)行分類(lèi),兼顧相關(guān)規(guī)范中按缺陷機(jī)理和后果分類(lèi)方式;③缺陷分類(lèi)要盡可能地提高類(lèi)內(nèi)相似度和類(lèi)間差異性;④提高樣本標(biāo)注中缺陷類(lèi)型和位置準(zhǔn)確性。
Table 3 Model evaluation表3 模型評(píng)估
Table 4 Model test表4 模型測(cè)試