深度學習完全攻略?。ㄟB載十一:YOLO原理理解)

翻了翻之前的文件夾,找到這個之前整理的YOLO理解文檔,在此基礎(chǔ)上,做了一些修改,特做更新。

我相信很多同學在理解YOLO的時候是有很多疑惑的,尤其是1個cell,兩個 bounding box,20個類別,簡直頭大。這篇文章帶你來理解,如果有錯誤,不吝賜教。

相比于RCNN系列的算法,YOLO將分類問題轉(zhuǎn)換為回歸問題。關(guān)于RCNN系列,會在后面更新,請不要捉急。

既然是回歸問題,就要用回歸的思維來看待。什么意思呢?比如說,我們預測2019年12月的房價,它是有很多因素共同起作用,每個因素可以看作x,有了歷史數(shù)據(jù),假設(shè)房價是線性變化,那么我們只需要求得系數(shù),就可把12月的x帶進去,就得到了房價。整么來理解YOLO呢?

首先,圖像就是輸入,如果把圖像分成塊的話,每個塊就是x,現(xiàn)在有很多這樣的圖像,那么只需要求得一組系數(shù),對于新來的一幅圖x’,就可以把x’帶進去,就知道這個塊或這幅圖是什么東西。那么這個系數(shù)就可以看作是bounding box(就是把目標框住的那個框框)。雖然每個塊只需要一個bounding box,但是,這個bounding box到底長什么樣,我們不知道。與其這樣,倒不如1個cell里面多高幾個bounding box,那個好就用那個,反正,最后我只用其中一個就行了。開始的時候,我們并不知道bounding box的形狀,只知道有幾個。怎么辦呢,別捉急。讓CNN去學習吧。我們有幾千萬的訓練集,還怕啥。我想這應(yīng)該就是YOLO的核心思想了。我想,稍微分析下,應(yīng)該就看出來,這種方法準確度應(yīng)該是有問題的,而實驗也證明了這一點。這很類似于RCNN中的bounding box regression(請參考我的其他博客)。

好吧,我表示原始論文看起來真他呀費勁。

找了很久,這篇博客寫的也不錯,可以看看。

<u>https://segmentfault.com/a/1190000016692873?utm_source=tag-newest</u>

話不多說,上菜。我感覺還是不要按照原文的思路來,太費勁了。

第一,先說一說IOU,置信度

先上圖。

圖片1.png

把圖像分成77的塊,那么對于輸入的圖像就可以構(gòu)建一個77*30的張量,這些標簽都是已知的。

圖片2.png

P(object):就是說這個cell中存在物體的概率。怎么定義是否有目標呢?如果目標的中心點在這個cell里面,那么就認為有目標,如果不在,就沒有目標。取值為0和1.

定義置信度:如果cell里面有目標,那么就用IOU來計算預測值(預測的bounding box)和真實值(真實的bounding box)差異。

P(class|objet):就是說這個cell存在物體,而且是某個類的概率。

那么最終,對于某個cell的一個box 預測某個類的概率就表示為:

P(class|objet)P(object)IOU

比如說上面的情況,只有一個類。

我們就可以定義這樣的訓練標簽,如果有錯誤請指出。

【000000000000000000000000000000 // 第一個cell
000000000000000000000000000000
.......
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0.7,0.02,0.14,0.14,0,0,0,0 // 第23個cell
........
000000000000000000000000000000】 // 第49個cell

第二,再說一說網(wǎng)絡(luò)結(jié)構(gòu)

此處是截圖

圖片3.png

下面這個圖視乎更直觀一點。原始圖像卷啊卷,就被卷成了7730這樣的張量。這家伙跟cell有什么關(guān)系呢?比如說,cell是77的,卷啊卷,最后原始圖像中的一個塊,就成了77中的一個點。

圖片4.png

第三,然后說一說訓練過程

在上面我們可以看到,YOLO就是一個網(wǎng)絡(luò),卷積,池化,全連接,最后輸出一個7730的tensor。此處應(yīng)該有個圖,我想應(yīng)該很直觀了,那就用本文的第一個圖吧。

我覺得我們不能被有些博客給迷惑了。好吧,還是說說這個最終的tensor是個啥樣的。就是這樣的,一條粗粗鏈子。對于整個網(wǎng)絡(luò)來說,你給他一幅圖,它卷啊卷,池啊池,啪,輸出一個7730的張量。假設(shè)這個張量就是OK的,就是我們想要的,那么,我們按照張量的結(jié)果,進行解析,就可以在圖上畫出這個(x,y,w,h)對應(yīng)的區(qū)域。好了,一般情況下第一次肯定不可能就得到好的結(jié)果,那怎么辦呢?我們在輸入訓練圖像的時候,是不是有標簽呢,而且是不是也有對應(yīng)的類別的信息呢。整,把這些信息搞成7730的張量,這樣不就可以用反向傳播去迭代了嘛。一遍一遍的訓練。你會發(fā)現(xiàn),最后輸出的張量,越來越是我們想要的。就是這么神奇。

第四,總結(jié)一下吧

我自己還是挺喜歡YOLO的,簡單有效,思路清奇。YOLO有很多小細節(jié),推薦的博客里面有介紹,我就不說了。后續(xù)會繼續(xù)更新V2和V3版本。本文已同步至公眾號,歡迎訂閱。


qrcode_for_gh_3d990a2340da_258.jpg
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容