0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于深度學(xué)習(xí)YOLO系列算法的圖像檢測

新機(jī)器視覺 ? 來源:新機(jī)器視覺 ? 作者:XPIG ? 2020-11-27 10:15 ? 次閱讀

目前,基于深度學(xué)習(xí)算法的一系列目標(biāo)檢測算法大致可以分為兩大流派:

兩步走(two-stage)算法:先產(chǎn)生候選區(qū)域然后再進(jìn)行CNN分類(RCNN系列)

一步走(one-stage)算法:直接對(duì)輸入圖像應(yīng)用算法并輸出類別和相應(yīng)的定位(YOLO系列)

1YOLO算法的提出

在圖像的識(shí)別與定位中,輸入一張圖片,要求輸出其中所包含的對(duì)象,以及每個(gè)對(duì)象的位置(包含該對(duì)象的矩形框)。

對(duì)象的識(shí)別和定位,可以看成兩個(gè)任務(wù):找到圖片中某個(gè)存在對(duì)象的區(qū)域,然后識(shí)別出該區(qū)域中具體是哪個(gè)對(duì)象。對(duì)象識(shí)別這件事(一張圖片僅包含一個(gè)對(duì)象,且基本占據(jù)圖片的整個(gè)范圍),最近幾年基于CNN卷積神經(jīng)網(wǎng)絡(luò)的各種方法已經(jīng)能達(dá)到不錯(cuò)的效果了。所以主要需要解決的問題是,對(duì)象在哪里。最簡單的想法,就是遍歷圖片中所有可能的位置,地毯式搜索不同大小,不同寬高比,不同位置的每個(gè)區(qū)域,逐一檢測其中是否存在某個(gè)對(duì)象,挑選其中概率最大的結(jié)果作為輸出。

顯然這種方法效率太低。RCNN開創(chuàng)性的提出了候選區(qū)(Region Proposals)的方法,先從圖片中搜索出一些可能存在對(duì)象的候選區(qū)(Selective Search),大概2000個(gè)左右,然后對(duì)每個(gè)候選區(qū)進(jìn)行對(duì)象識(shí)別,總體來說,RCNN系列依然是兩階段處理模式:先提出候選區(qū),再識(shí)別候選區(qū)中的對(duì)象,大幅提升了對(duì)象識(shí)別和定位的效率。不過RCNN的速度依然很慢,其處理一張圖片大概需要49秒。因此又有了后續(xù)的Fast RCNN 和 Faster RCNN,針對(duì) RCNN的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和候選區(qū)的算法不斷改進(jìn),F(xiàn)aster RCNN已經(jīng)可以達(dá)到一張圖片約0.2秒的處理速度。

R-CNN系列雖然準(zhǔn)確率比較高,但是即使是發(fā)展到Faster R-CNN,檢測一張圖片如下圖所示也要7fps(原文為5fps),為了使得檢測的工作能夠用到實(shí)時(shí)的場景中,提出了YOLO。

2 算法的簡介

YOLO意思是You Only Look Once,創(chuàng)造性的將候選區(qū)和對(duì)象識(shí)別這兩個(gè)階段合二為一,看一眼圖片(不用看兩眼哦)就能知道有哪些對(duì)象以及它們的位置。

實(shí)際上,YOLO并沒有真正去掉候選區(qū),而是采用了預(yù)定義的候選區(qū)(準(zhǔn)確點(diǎn)說應(yīng)該是預(yù)測區(qū),因?yàn)椴⒉皇荈aster RCNN所采用的Anchor)。也就是將圖片劃分為 7*7=49 個(gè)網(wǎng)格(grid),每個(gè)網(wǎng)格允許預(yù)測出2個(gè)邊框(bounding box,包含某個(gè)對(duì)象的矩形框),總共 49*2=98 個(gè)bounding box。可以理解為98個(gè)候選區(qū),它們很粗略的覆蓋了圖片的整個(gè)區(qū)域。

RCNN雖然會(huì)找到一些候選區(qū),但畢竟只是候選,等真正識(shí)別出其中的對(duì)象以后,還要對(duì)候選區(qū)進(jìn)行微調(diào),使之更接近真實(shí)的bounding box。這個(gè)過程就是邊框回歸:將候選區(qū)bounding box調(diào)整到更接近真實(shí)的bounding box。既然反正最后都是要調(diào)整的,干嘛還要先費(fèi)勁去尋找候選區(qū)呢,大致有個(gè)區(qū)域范圍就行了,所以YOLO就這么干了。

邊框回歸為什么能起作用,本質(zhì)上是因?yàn)榉诸?a target="_blank">信息中已經(jīng)包含了位置信息。就像你看到一只貓的臉和身體,就能推測出耳朵和屁股的位置。

3 算法的結(jié)構(gòu)

去掉候選區(qū)這個(gè)步驟以后,YOLO的結(jié)構(gòu)非常簡單,就是單純的卷積、池化最后加了兩層全連接。單看網(wǎng)絡(luò)結(jié)構(gòu)的話,和普通的CNN對(duì)象分類網(wǎng)絡(luò)幾乎沒有本質(zhì)的區(qū)別,最大的差異是最后輸出層用線性函數(shù)做激活函數(shù),因?yàn)樾枰A(yù)測bounding box的位置(數(shù)值型),而不僅僅是對(duì)象的概率。所以粗略來說,YOLO的整個(gè)結(jié)構(gòu)就是輸入圖片經(jīng)過神經(jīng)網(wǎng)絡(luò)的變換得到一個(gè)輸出的張量,如下圖所示。

4 輸入輸出映射關(guān)系

因?yàn)橹皇且恍┏R?guī)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),所以,理解YOLO的設(shè)計(jì)的時(shí)候,重要的是理解輸入和輸出的映射關(guān)系。

參考圖5,輸入就是原始圖像,唯一的要求是縮放到448*448的大小。主要是因?yàn)閅OLO的網(wǎng)絡(luò)中,卷積層最后接了兩個(gè)全連接層,全連接層是要求固定大小的向量作為輸入,所以倒推回去也就要求原始圖像有固定的尺寸。那么YOLO設(shè)計(jì)的尺寸就是448*448。輸出是一個(gè) 7*7*30 的張量(tensor)。根據(jù)YOLO的設(shè)計(jì),輸入圖像被劃分為 7*7 的網(wǎng)格(grid),輸出張量中的 7*7 就對(duì)應(yīng)著輸入圖像的 7*7 網(wǎng)格?;蛘呶覀儼?7*7*30 的張量看作 7*7=49個(gè)30維的向量,也就是輸入圖像中的每個(gè)網(wǎng)格對(duì)應(yīng)輸出一個(gè)30維的向量。參考上面圖5,比如輸入圖像左上角的網(wǎng)格對(duì)應(yīng)到輸出張量中左上角的向量。

要注意的是,并不是說僅僅網(wǎng)格內(nèi)的信息被映射到一個(gè)30維向量。經(jīng)過神經(jīng)網(wǎng)絡(luò)對(duì)輸入圖像信息的提取和變換,網(wǎng)格周邊的信息也會(huì)被識(shí)別和整理,最后編碼到那個(gè)30維向量中。

具體來看每個(gè)網(wǎng)格對(duì)應(yīng)的30維向量中包含了哪些信息。

① 20個(gè)對(duì)象分類的概率

因?yàn)閅OLO支持識(shí)別20種不同的對(duì)象(人、鳥、貓、汽車、椅子等),所以這里有20個(gè)值表示該網(wǎng)格位置存在任一種對(duì)象的概率。也對(duì)應(yīng)為20個(gè)object條件概率。

② 2個(gè)bounding box的位置

每個(gè)bounding box需要4個(gè)數(shù)值來表示其位置,(Center_x,Center_y,width,height),即(bounding box的中心點(diǎn)的x坐標(biāo),y坐標(biāo),bounding box的寬度,高度),2個(gè)bounding box共需要8個(gè)數(shù)值來表示其位置。

③ 2個(gè)bounding box的置信度

bounding box的置信度 = 該bounding box內(nèi)存在對(duì)象的概率 * 該bounding box與該對(duì)象實(shí)際bounding box的IOU, IOU=交集部分面積/并集部分面積,2個(gè)box完全重合時(shí)IOU=1,不相交時(shí)IOU=0。

綜合來說,一個(gè)bounding box的置信度Confidence意味著它 是否包含對(duì)象且位置準(zhǔn)確的程度。置信度高表示這里存在一個(gè)對(duì)象且位置比較準(zhǔn)確,置信度低表示可能沒有對(duì)象 或者 即便有對(duì)象也存在較大的位置偏差。作為監(jiān)督學(xué)習(xí),我們需要先構(gòu)造好訓(xùn)練樣本,才能讓模型從中學(xué)習(xí)。對(duì)于一張輸入圖片,其對(duì)應(yīng)輸出的7*7*30張量(也就是通常監(jiān)督學(xué)習(xí)所說的標(biāo)簽y或者label)應(yīng)該填寫什么數(shù)據(jù)呢。

首先,輸出的 7*7維度 對(duì)應(yīng)于輸入的 7*7 網(wǎng)格。

① 20個(gè)對(duì)象分類的概率

② 2個(gè)bounding box的位置

③ 2個(gè)bounding box的置信度

(請(qǐng)對(duì)照上面圖6)

5 損失函數(shù)

損失就是網(wǎng)絡(luò)實(shí)際輸出值與樣本標(biāo)簽值之間的偏差。

YOLO給出的損失函數(shù)如下。

6 預(yù)測

訓(xùn)練好的YOLO網(wǎng)絡(luò),輸入一張圖片,將輸出一個(gè) 7*7*30 的張量(tensor)來表示圖片中所有網(wǎng)格包含的對(duì)象(概率)以及該對(duì)象可能的2個(gè)位置(bounding box)和可信程度(置信度)。為了從中提取出最有可能的那些對(duì)象和位置,YOLO采用NMS(Non-maximal suppression,非極大值抑制)算法。

7 總結(jié)

YOLO以速度見長,處理速度可以達(dá)到45fps,其YoloV4版本(網(wǎng)絡(luò)較?。┥踔量梢赃_(dá)到155fps。這得益于其識(shí)別和定位合二為一的網(wǎng)絡(luò)設(shè)計(jì),而且這種統(tǒng)一的設(shè)計(jì)也使得訓(xùn)練和預(yù)測可以端到端的進(jìn)行,非常簡便。不足之處是小對(duì)象檢測效果不太好(尤其是一些聚集在一起的小對(duì)象),對(duì)邊框的預(yù)測準(zhǔn)確度不是很高,總體預(yù)測精度略低于Fast RCNN。主要是因?yàn)榫W(wǎng)格設(shè)置比較稀疏,而且每個(gè)網(wǎng)格只預(yù)測兩個(gè)邊框,另外Pooling層會(huì)丟失一些細(xì)節(jié)信息,對(duì)定位存在影響。

責(zé)任編輯:xj

原文標(biāo)題:基于YOLO系列算法的圖像檢測

文章出處:【微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4592

    瀏覽量

    92521
  • 圖像檢測
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    11860
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5471

    瀏覽量

    120903

原文標(biāo)題:基于YOLO系列算法的圖像檢測

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    深度識(shí)別算法包括哪些內(nèi)容

    :CNN是深度學(xué)習(xí)中處理圖像和視頻等具有網(wǎng)格結(jié)構(gòu)數(shù)據(jù)的主要算法。它通過卷積層、池化層和全連接層等組件,實(shí)現(xiàn)對(duì)圖像特征的自動(dòng)提取和識(shí)別。 應(yīng)
    的頭像 發(fā)表于 09-10 15:28 ?272次閱讀

    圖像識(shí)別算法都有哪些方法

    傳統(tǒng)方法和基于深度學(xué)習(xí)的方法。 傳統(tǒng)圖像識(shí)別算法 1.1 邊緣檢測 邊緣檢測
    的頭像 發(fā)表于 07-16 11:14 ?4983次閱讀

    opencv圖像識(shí)別有什么算法

    OpenCV(Open Source Computer Vision Library)是一個(gè)開源的計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,提供了大量的圖像處理和計(jì)算機(jī)視覺相關(guān)的算法。以下是一些常見的OpenCV
    的頭像 發(fā)表于 07-16 10:40 ?756次閱讀

    深度學(xué)習(xí)算法在嵌入式平臺(tái)上的部署

    隨著人工智能技術(shù)的飛速發(fā)展,深度學(xué)習(xí)算法在各個(gè)領(lǐng)域的應(yīng)用日益廣泛。然而,將深度學(xué)習(xí)算法部署到資源
    的頭像 發(fā)表于 07-15 10:03 ?1110次閱讀

    利用Matlab函數(shù)實(shí)現(xiàn)深度學(xué)習(xí)算法

    在Matlab中實(shí)現(xiàn)深度學(xué)習(xí)算法是一個(gè)復(fù)雜但強(qiáng)大的過程,可以應(yīng)用于各種領(lǐng)域,如圖像識(shí)別、自然語言處理、時(shí)間序列預(yù)測等。這里,我將概述一個(gè)基本的流程,包括環(huán)境設(shè)置、數(shù)據(jù)準(zhǔn)備、模型設(shè)計(jì)、訓(xùn)
    的頭像 發(fā)表于 07-14 14:21 ?1810次閱讀

    深度學(xué)習(xí)在工業(yè)機(jī)器視覺檢測中的應(yīng)用

    隨著深度學(xué)習(xí)技術(shù)的快速發(fā)展,其在工業(yè)機(jī)器視覺檢測中的應(yīng)用日益廣泛,并展現(xiàn)出巨大的潛力。工業(yè)機(jī)器視覺檢測是工業(yè)自動(dòng)化領(lǐng)域的重要組成部分,通過圖像
    的頭像 發(fā)表于 07-08 10:40 ?930次閱讀

    基于深度學(xué)習(xí)的小目標(biāo)檢測

    在計(jì)算機(jī)視覺領(lǐng)域,目標(biāo)檢測一直是研究的熱點(diǎn)和難點(diǎn)之一。特別是在小目標(biāo)檢測方面,由于小目標(biāo)在圖像中所占比例小、特征不明顯,使得檢測難度顯著增加。隨著
    的頭像 發(fā)表于 07-04 17:25 ?708次閱讀

    深度學(xué)習(xí)的基本原理與核心算法

    隨著大數(shù)據(jù)時(shí)代的到來,傳統(tǒng)機(jī)器學(xué)習(xí)方法在處理復(fù)雜模式上的局限性日益凸顯。深度學(xué)習(xí)(Deep Learning)作為一種新興的人工智能技術(shù),以其強(qiáng)大的非線性表達(dá)能力和自學(xué)習(xí)能力,在
    的頭像 發(fā)表于 07-04 11:44 ?1573次閱讀

    基于深度學(xué)習(xí)的缺陷檢測方案

    圖像預(yù)處理通常包括直方圖均衡化、濾波去噪、灰度二值化、再次濾波幾部分,以得到前后景分離的簡單化圖像信息;隨后利用數(shù)學(xué)形態(tài)學(xué)、傅里葉變換、Gabor 變換等算法以及機(jī)器學(xué)習(xí)模型完成缺陷的
    發(fā)表于 04-23 17:23 ?776次閱讀
    基于<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>的缺陷<b class='flag-5'>檢測</b>方案

    深度解析深度學(xué)習(xí)下的語義SLAM

    隨著深度學(xué)習(xí)技術(shù)的興起,計(jì)算機(jī)視覺的許多傳統(tǒng)領(lǐng)域都取得了突破性進(jìn)展,例如目標(biāo)的檢測、識(shí)別和分類等領(lǐng)域。近年來,研究人員開始在視覺SLAM算法中引入
    發(fā)表于 04-23 17:18 ?1228次閱讀
    <b class='flag-5'>深度</b>解析<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>下的語義SLAM

    基于機(jī)器視覺和深度學(xué)習(xí)的焊接質(zhì)量檢測系統(tǒng)

    的一致性和準(zhǔn)確性。 ? 機(jī)器視覺技術(shù)為焊接質(zhì)量檢測提供了高分辨率的圖像數(shù)據(jù)。通過搭載高速、高分辨率相機(jī),系統(tǒng)能夠?qū)崟r(shí)捕捉焊接過程中的細(xì)節(jié),包括焊縫的形狀、尺寸和表面特征等。這些圖像數(shù)據(jù)為后續(xù)的
    的頭像 發(fā)表于 01-18 17:50 ?725次閱讀

    目前主流的深度學(xué)習(xí)算法模型和應(yīng)用案例

    深度學(xué)習(xí)在科學(xué)計(jì)算中獲得了廣泛的普及,其算法被廣泛用于解決復(fù)雜問題的行業(yè)。所有深度學(xué)習(xí)算法都使用
    的頭像 發(fā)表于 01-03 10:28 ?1686次閱讀
    目前主流的<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>算法</b>模型和應(yīng)用案例

    基于YOLO技術(shù)的植物檢測與計(jì)數(shù)

    利用Roboflow平臺(tái)對(duì)數(shù)據(jù)進(jìn)行有效的管理和標(biāo)注。對(duì)于植物檢測,使用實(shí)時(shí)目標(biāo)檢測能力強(qiáng)的YOLO方法。YOLO通過將輸入圖像劃分為網(wǎng)格并預(yù)
    的頭像 發(fā)表于 12-12 09:41 ?794次閱讀
    基于<b class='flag-5'>YOLO</b>技術(shù)的植物<b class='flag-5'>檢測</b>與計(jì)數(shù)

    關(guān)于利用傳統(tǒng)圖像處理方法瑕疵檢測總結(jié)

    最近做圖像處理與識(shí)別相關(guān)的事情,先從OpenCV/Matlab入手,看傳統(tǒng)算法在瑕疵檢測方向能做到什么程度。   因之前并沒有相關(guān)的經(jīng)驗(yàn),乍開始生怕閉門造車,遂多方搜尋,相關(guān)的會(huì)議與論述很多,不乏
    的頭像 發(fā)表于 11-20 15:19 ?763次閱讀

    目標(biāo)檢測算法YOLO的發(fā)展史和原理

    大家或許知道,首字母縮寫YOLO在英文語境下較為流行的含義,即You Only Live Once,你只能活一次。我們今天要介紹的YOLO卻有著與前者不一樣的含義。在算法的世界中,YOLO
    的頭像 發(fā)表于 11-18 10:33 ?5618次閱讀
    目標(biāo)<b class='flag-5'>檢測算法</b><b class='flag-5'>YOLO</b>的發(fā)展史和原理