• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于CNN模型的目標(biāo)檢測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

      2020-08-31 05:42:24王婷婷程鴻芳
      機(jī)電信息 2020年20期
      關(guān)鍵詞:目標(biāo)檢測(cè)

      王婷婷 程鴻芳

      摘要:目前主流的基于CNN的目標(biāo)檢測(cè)算法大致分為兩大類:一類是2-stage檢測(cè)算法,把檢測(cè)問題分為兩個(gè)階段,首先生成候選區(qū)域,然后再對(duì)候選區(qū)域進(jìn)行分類,這類算法的典型代表是基于region proposal的R-CNN系列算法,如R-CNN、Fast R-CNN、Faster R-CNN等;另一類是1-stage檢測(cè)算法,對(duì)圖像中的每一個(gè)部分都會(huì)進(jìn)行預(yù)測(cè),而且還可以直接生成對(duì)象的類別概率以及其位置坐標(biāo)值,不需要region proposal階段,也就是不需要生成候選區(qū)域,比較典型的算法有YOLO和SSD。在此基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于CNN模型的目標(biāo)檢測(cè)系統(tǒng),其開發(fā)環(huán)境為Windows10,使用了Tensorflow的深度學(xué)習(xí)框架,利用PyQt5作為界面的開發(fā)框架,底層使用Python語言。

      關(guān)鍵詞:目標(biāo)檢測(cè);CNN模型;Tensorflow;Python

      0 引言

      CNN(Convolutional Neural Network)是一種前饋神經(jīng)網(wǎng)絡(luò),其本質(zhì)是一個(gè)多層感知機(jī),它最開始并不是由計(jì)算機(jī)專業(yè)的學(xué)者提出來的,而是由一個(gè)生物學(xué)家在研究視覺皮層的時(shí)候提出。CNN人工神經(jīng)元可以響應(yīng)一部分覆蓋范圍內(nèi)的周圍單元,包括卷積層(convolutional layer)和池化層(pooling layer),其基本結(jié)構(gòu)如圖1所示。

      CNN采用局部連接和權(quán)值共享的方式,減少了權(quán)值數(shù)量,使網(wǎng)絡(luò)易于優(yōu)化,降低了模型的復(fù)雜度,減小了過擬合的風(fēng)險(xiǎn),在處理二維圖像的問題上,特別是在識(shí)別位移、縮放及其他形式扭曲不變形的應(yīng)用上,具有良好的魯棒性和運(yùn)算效率,在大型圖像處理方面也有著出色表現(xiàn),是深度學(xué)習(xí)算法應(yīng)用最成功的領(lǐng)域之一。

      1 系統(tǒng)環(huán)境配置

      GPU版本為:

      (1)系統(tǒng):Linux;

      (2)處理器:GPU RTX 2080Ti;

      (3)已安裝的內(nèi)存(RAM):16 GB+16 GB;

      (4)固態(tài)硬盤:1 TB;

      (5)系統(tǒng)類型:64位操作系統(tǒng),基于x64的處理器。

      本目標(biāo)檢測(cè)系統(tǒng)的開發(fā)環(huán)境為Windows 10+Tensorflow 1.13.1+Python 3.5.4,利用PyQt5作為界面的開發(fā)框架,底層使用了Python語言,主要實(shí)現(xiàn)Faster R-CNN、YOLO和SSD 3個(gè)算法的目標(biāo)檢測(cè)。

      2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

      系統(tǒng)大致分為3個(gè)部分:

      (1)模型訓(xùn)練模塊:該模塊負(fù)責(zé)使用Faster R-CNN、YOLO和SSD 3個(gè)算法進(jìn)行網(wǎng)絡(luò)模型的訓(xùn)練,生成訓(xùn)練得到的最終模型;

      (2)模型檢測(cè)模塊:檢測(cè)模塊是整個(gè)檢測(cè)系統(tǒng)的核心模塊,使用訓(xùn)練好的模型進(jìn)行加載,驗(yàn)證模型的準(zhǔn)確度,然后使用編寫好的API實(shí)現(xiàn)前向檢測(cè);

      (3)結(jié)果顯示模塊:該模塊提供了一個(gè)交互式平臺(tái),用于輸出最后檢測(cè)對(duì)象的類別以及位置信息的判斷結(jié)果。

      2.1? ? 模型訓(xùn)練模塊

      系統(tǒng)在做目標(biāo)檢測(cè)時(shí),需要有訓(xùn)練集、驗(yàn)證集以及測(cè)試集。首先,使用VOC2007數(shù)據(jù)集,VOC2007數(shù)據(jù)集文件夾如圖2所示。JPEGImages:所有的樣本圖片,圖片格式必須是jpg、jpeg格式,VOC數(shù)據(jù)集格式采用6位數(shù)字編碼,所以圖片的標(biāo)號(hào)為000001.jpg、000002.jpg等。Annotations:人工設(shè)置的圖像標(biāo)注,為xml格式文件。ImageSets:數(shù)據(jù)集文件夾,包含文本文件,存放訓(xùn)練樣本和測(cè)試樣本的索引信息。

      然后,下載VGG16的預(yù)訓(xùn)練模型,放在相應(yīng)的路徑中,所有的文件就是Faster R-CNN程序,F(xiàn)aster R-CNN程序主要文件夾如圖3所示。

      data:存放數(shù)據(jù)圖片,下載的VOC2007數(shù)據(jù)集和VGG16預(yù)訓(xùn)練模型都存放在這里。

      default:存放自己訓(xùn)練好的模型。

      lib:存放Python的接口文件,如數(shù)據(jù)讀入等。

      train.py:訓(xùn)練的Python文件。

      demo.py:測(cè)試的Python文件。

      圖4是兩張測(cè)試原圖。

      在Linux系統(tǒng)GPU版本的Tensorflow下運(yùn)行,把最大迭代次數(shù)改為40 000,在GPU下運(yùn)行7~8 h完成模型訓(xùn)練,最后得到的訓(xùn)練模型文件如圖5所示。

      最后得到的測(cè)試結(jié)果如圖6所示。

      圖6(a)中得到了目標(biāo)person和potted plant,圖6(b)中分別檢測(cè)到了car、dog、horse以及person,但是圖片中被框出來的部分不在一張圖片上顯示,而是按照類別進(jìn)行劃分,即每一類一張圖片,此時(shí),需要修改plt的位置,把plt從vis_detections中放到demo中,這樣所有類別都會(huì)在同一個(gè)plt中,修改后的結(jié)果如圖7所示。

      本目標(biāo)檢測(cè)系統(tǒng)中還有2個(gè)算法是YOLO和SSD,YOLO訓(xùn)練使用的是VOC2007數(shù)據(jù)集和預(yù)訓(xùn)練好的模型yolo-small.ckpt,其中因?yàn)閥olo-small.ckpt預(yù)訓(xùn)練好了,可以直接拿來測(cè)試,得到的結(jié)果如圖8所示。

      YOLO訓(xùn)練的迭代次數(shù)也同樣可以在config.py里面修改,在訓(xùn)練過程中,YOLO是對(duì)變量通過采用指數(shù)平均數(shù)EMA(exponential moving average)來提高整體訓(xùn)練性能,同時(shí),為了獲得較好的學(xué)習(xí)性能,對(duì)學(xué)習(xí)速率同樣進(jìn)行了指數(shù)衰減,使用exponential_decay函數(shù)來實(shí)現(xiàn)此功能。本系統(tǒng)所使用的YOLO算法不太精確,通過測(cè)試結(jié)果能夠明顯感受到Y(jié)OLO的精確度不如Faster R-CNN算法,尤其是圖6(a)這種復(fù)雜的圖,YOLO能夠檢測(cè)到的目標(biāo)很少。

      SSD的訓(xùn)練使用的是VOC2007數(shù)據(jù)集和預(yù)訓(xùn)練好的模型ssd_300_vgg.ckpt,其中,直接用ssd_300_vgg.ckpt測(cè)試,得到的結(jié)果如圖9所示。

      測(cè)試結(jié)果中對(duì)象的類別用數(shù)字表示,這對(duì)于使用者來說很不直觀,在研究了SSD算法中可視化部分visualization.py程序后發(fā)現(xiàn),原始代碼檢測(cè)后的圖像分類是數(shù)字號(hào),不能夠直接讀取,然后對(duì)代碼進(jìn)行了修改,主要是對(duì)list的讀取,然后再按照數(shù)字查找key值并顯示,修改后得到的結(jié)果如圖10所示。

      2.2? ? 檢測(cè)模塊

      為了驗(yàn)證訓(xùn)練出的模型的準(zhǔn)確率,使用測(cè)試數(shù)據(jù)集對(duì)其進(jìn)行測(cè)試,輸出測(cè)試結(jié)果的可視化部分,檢測(cè)模塊流程如圖11所示。

      在最后的結(jié)果可視化這一步操作中,3個(gè)算法主要都是利用了Matplotlib和OpenCV來實(shí)現(xiàn)的。Matplotlib是一個(gè)Python的2D繪圖庫(kù),它以各種硬拷貝格式和跨平臺(tái)的交互式環(huán)境生成出版質(zhì)量級(jí)別的圖形,通過Matplotlib,開發(fā)者可以僅需要幾行代碼便可生成繪圖,Matplotlib使用NumPy進(jìn)行數(shù)組運(yùn)算,并調(diào)用一系列其他的Python庫(kù)來實(shí)現(xiàn)硬件交互。OpenCV是一個(gè)包含了2 500多個(gè)經(jīng)過優(yōu)化的計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)算法的開源計(jì)算機(jī)視覺庫(kù),基于C/C++語言,支持Linux/Windows/MacOS/Android/iOS,并提供了Python、Matlab和Java等語言的接口,和Python一樣,當(dāng)前的OpenCV也有2個(gè)大版本,即OpenCV2和OpenCV3。

      2.3? ? 系統(tǒng)實(shí)現(xiàn)

      本目標(biāo)檢測(cè)系統(tǒng)的界面基于PyQt5,利用QtDesigner來進(jìn)行開發(fā),底層通過Pycharm來調(diào)用Tensorflow環(huán)境,集成了加載檢測(cè)模型、目標(biāo)圖像讀取、可視化檢測(cè)結(jié)果這些模塊。首先,配置pycharm來實(shí)現(xiàn)在pycharm里面打開QtDesigner,生成Qt文件,通過PyUIC來完成Qt界面到Python代碼的轉(zhuǎn)換,然后,將3種目標(biāo)檢測(cè)算法的文件夾導(dǎo)入到界面文件夾中,如圖12所示。

      界面的主要類別放在了main.py文件中,start.py文件用來運(yùn)行界面,在3個(gè)子窗口文件中存放了目標(biāo)檢測(cè)算法的主要調(diào)用函數(shù),主窗口類別為class Ui_MainWindow(object),子窗口類別為class childWindow1(QDialog)、class childWindow2(QDialog)、class childWindow3(QDialog),通過主窗口跳轉(zhuǎn)到子窗口來進(jìn)行測(cè)試:

      3 結(jié)語

      CNN憑借其強(qiáng)大的特征提取能力,近年來被廣泛應(yīng)用于計(jì)算機(jī)視覺領(lǐng)域,而目標(biāo)檢測(cè)作為計(jì)算機(jī)視覺領(lǐng)域中的一個(gè)重要研究方向,是完成圖像語義識(shí)別、目標(biāo)跟蹤、圖像描述等高級(jí)復(fù)雜的視覺任務(wù)的基礎(chǔ),通過對(duì)CNN和目標(biāo)檢測(cè)的研究,發(fā)現(xiàn)基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法已是主流趨勢(shì)。在目標(biāo)檢測(cè)領(lǐng)域,還有很多未知知識(shí)值得我們?nèi)ヌ剿?,相信隨著深度學(xué)習(xí)技術(shù)的不斷進(jìn)步,人工智能在計(jì)算機(jī)視覺領(lǐng)域的應(yīng)用將會(huì)獲得進(jìn)一步發(fā)展。

      [參考文獻(xiàn)]

      [1] REN S Q,HE K M,GIRSHICK R,et al.Faster R-CNN:Towards real-time object detection with region proposal networks[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2017,39(6):1137-1149.

      [2] CHENG G,HAN J,ZHOU P,et al.Learning rotation-invariant and fisher discriminative convolutional neural networks for object detection[J].IEEE Transactions on? Image Processing,2019,28(1):265-278.

      [3] 沈鵬.基于圖像的草地退化識(shí)別研究[D].成都:電子科技大學(xué),2019.

      [4] 包樺楠,秦建波,唐曼玲,等.基于淺層神經(jīng)網(wǎng)絡(luò)的電視臺(tái)標(biāo)識(shí)別算法的研究[J].智能建筑,2018(8):33-36.

      [5] 鄧志鋒,閔衛(wèi)東,鄒松.一種基于CNN和人體橢圓輪廓運(yùn)動(dòng)特征的摔倒檢測(cè)方法[J].圖學(xué)學(xué)報(bào),2018,39(6):1042-1047.

      [6] 朱林.基于深度學(xué)習(xí)的蘇南鄉(xiāng)村建筑物提取及年代分類研究[D].徐州:中國(guó)礦業(yè)大學(xué),2019.

      [7] 曹湘,李譽(yù)坤,錢葉,等.基于混合神經(jīng)網(wǎng)絡(luò)的電力短文本分類方法研究[J].計(jì)算機(jī)與數(shù)字工程,2019,47(5):1145-1150.

      [8] 方春,孫福振,任崇廣.基于深度學(xué)習(xí)的大蒜鱗芽朝向識(shí)別研究[J].計(jì)算機(jī)應(yīng)用研究,2018,36(2):598-600.

      [9] 張少巍,倪紹洲.基于混合神經(jīng)網(wǎng)絡(luò)的人臉表情識(shí)別研究[J].長(zhǎng)春大學(xué)學(xué)報(bào),2019,29(2):37-40.

      [10] 師利霞.基于python的氣象統(tǒng)計(jì)數(shù)據(jù)的等值線應(yīng)用[J].信息技術(shù)與信息化,2019(5):95-97.

      收稿日期:2020-07-08

      作者簡(jiǎn)介:王婷婷(1982—),女,江蘇贛榆人,碩士,講師,主要從事計(jì)算機(jī)軟件、大數(shù)據(jù)方面的教學(xué)與研究工作。

      猜你喜歡
      目標(biāo)檢測(cè)
      視頻中目標(biāo)檢測(cè)算法研究
      軟件(2016年4期)2017-01-20 09:38:03
      行為識(shí)別中的人體運(yùn)動(dòng)目標(biāo)檢測(cè)方法
      移動(dòng)機(jī)器人圖像目標(biāo)識(shí)別
      基于背景建模法的運(yùn)動(dòng)目標(biāo)檢測(cè)
      基于P3電位的目標(biāo)檢測(cè)研究
      科技視界(2016年4期)2016-02-22 13:09:19
      一種改進(jìn)的峰均功率比判源方法
      宜春市| 通江县| 乌海市| 新乡县| 北碚区| 秭归县| 大兴区| 瓮安县| 伊春市| 简阳市| 万年县| 峨眉山市| 合阳县| 乌拉特中旗| 宝应县| 九龙坡区| 阜阳市| 琼结县| 新竹县| 宝兴县| 嵊泗县| 滦平县| 东莞市| 敦化市| 健康| 比如县| 湖南省| 元氏县| 新晃| 南城县| 庄浪县| 枞阳县| 合山市| 图们市| 抚宁县| 阿拉善右旗| 乐至县| 芜湖县| 镇坪县| 通城县| 颍上县|