翻了翻之前的文件夾,找到這個(gè)之前整理的YOLO理解文檔吩谦,在此基礎(chǔ)上鸳谜,做了一些修改,特做更新式廷。
我相信很多同學(xué)在理解YOLO的時(shí)候是有很多疑惑的咐扭,尤其是1個(gè)cell,兩個(gè) bounding box,20個(gè)類別滑废,簡(jiǎn)直頭大蝗肪。這篇文章帶你來(lái)理解,如果有錯(cuò)誤策严,不吝賜教穗慕。
相比于RCNN系列的算法饿敲,YOLO將分類問(wèn)題轉(zhuǎn)換為回歸問(wèn)題妻导。關(guān)于RCNN系列,會(huì)在后面更新,請(qǐng)不要捉急倔韭。
既然是回歸問(wèn)題术浪,就要用回歸的思維來(lái)看待。什么意思呢寿酌?比如說(shuō)胰苏,我們預(yù)測(cè)2019年12月的房?jī)r(jià),它是有很多因素共同起作用醇疼,每個(gè)因素可以看作x硕并,有了歷史數(shù)據(jù),假設(shè)房?jī)r(jià)是線性變化秧荆,那么我們只需要求得系數(shù)倔毙,就可把12月的x帶進(jìn)去,就得到了房?jī)r(jià)乙濒。整么來(lái)理解YOLO呢陕赃?
首先,圖像就是輸入颁股,如果把圖像分成塊的話么库,每個(gè)塊就是x,現(xiàn)在有很多這樣的圖像甘有,那么只需要求得一組系數(shù)诉儒,對(duì)于新來(lái)的一幅圖x’,就可以把x’帶進(jìn)去亏掀,就知道這個(gè)塊或這幅圖是什么東西允睹。那么這個(gè)系數(shù)就可以看作是bounding box(就是把目標(biāo)框住的那個(gè)框框)。雖然每個(gè)塊只需要一個(gè)bounding box幌氮,但是缭受,這個(gè)bounding box到底長(zhǎng)什么樣,我們不知道该互。與其這樣米者,倒不如1個(gè)cell里面多高幾個(gè)bounding box,那個(gè)好就用那個(gè)宇智,反正蔓搞,最后我只用其中一個(gè)就行了。開始的時(shí)候随橘,我們并不知道bounding box的形狀喂分,只知道有幾個(gè)。怎么辦呢机蔗,別捉急蒲祈。讓CNN去學(xué)習(xí)吧甘萧。我們有幾千萬(wàn)的訓(xùn)練集,還怕啥梆掸。我想這應(yīng)該就是YOLO的核心思想了扬卷。我想,稍微分析下酸钦,應(yīng)該就看出來(lái)怪得,這種方法準(zhǔn)確度應(yīng)該是有問(wèn)題的,而實(shí)驗(yàn)也證明了這一點(diǎn)卑硫。這很類似于RCNN中的bounding box regression(請(qǐng)參考我的其他博客)徒恋。
好吧,我表示原始論文看起來(lái)真他呀費(fèi)勁欢伏。
找了很久因谎,這篇博客寫的也不錯(cuò),可以看看颜懊。
<u>https://segmentfault.com/a/1190000016692873?utm_source=tag-newest</u>
話不多說(shuō)财岔,上菜。我感覺(jué)還是不要按照原文的思路來(lái)河爹,太費(fèi)勁了匠璧。
第一,先說(shuō)一說(shuō)IOU咸这,置信度
先上圖夷恍。
把圖像分成77的塊,那么對(duì)于輸入的圖像就可以構(gòu)建一個(gè)77*30的張量媳维,這些標(biāo)簽都是已知的酿雪。
P(object):就是說(shuō)這個(gè)cell中存在物體的概率。怎么定義是否有目標(biāo)呢侄刽?如果目標(biāo)的中心點(diǎn)在這個(gè)cell里面指黎,那么就認(rèn)為有目標(biāo),如果不在州丹,就沒(méi)有目標(biāo)醋安。取值為0和1.
定義置信度:如果cell里面有目標(biāo),那么就用IOU來(lái)計(jì)算預(yù)測(cè)值(預(yù)測(cè)的bounding box)和真實(shí)值(真實(shí)的bounding box)差異墓毒。
P(class|objet):就是說(shuō)這個(gè)cell存在物體吓揪,而且是某個(gè)類的概率。
那么最終所计,對(duì)于某個(gè)cell的一個(gè)box 預(yù)測(cè)某個(gè)類的概率就表示為:
P(class|objet)P(object)IOU
比如說(shuō)上面的情況柠辞,只有一個(gè)類。
我們就可以定義這樣的訓(xùn)練標(biāo)簽主胧,如果有錯(cuò)誤請(qǐng)指出叭首。
【000000000000000000000000000000 // 第一個(gè)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個(gè)cell
........
000000000000000000000000000000】 // 第49個(gè)cell
第二习勤,再說(shuō)一說(shuō)網(wǎng)絡(luò)結(jié)構(gòu)
此處是截圖
下面這個(gè)圖視乎更直觀一點(diǎn)。原始圖像卷啊卷放棒,就被卷成了7730這樣的張量。這家伙跟cell有什么關(guān)系呢己英?比如說(shuō)间螟,cell是77的,卷啊卷损肛,最后原始圖像中的一個(gè)塊厢破,就成了77中的一個(gè)點(diǎn)。
第三治拿,然后說(shuō)一說(shuō)訓(xùn)練過(guò)程
在上面我們可以看到摩泪,YOLO就是一個(gè)網(wǎng)絡(luò),卷積劫谅,池化见坑,全連接,最后輸出一個(gè)7730的tensor捏检。此處應(yīng)該有個(gè)圖荞驴,我想應(yīng)該很直觀了,那就用本文的第一個(gè)圖吧贯城。
我覺(jué)得我們不能被有些博客給迷惑了熊楼。好吧,還是說(shuō)說(shuō)這個(gè)最終的tensor是個(gè)啥樣的能犯。就是這樣的鲫骗,一條粗粗鏈子。對(duì)于整個(gè)網(wǎng)絡(luò)來(lái)說(shuō)踩晶,你給他一幅圖执泰,它卷啊卷,池啊池渡蜻,啪坦胶,輸出一個(gè)7730的張量。假設(shè)這個(gè)張量就是OK的晴楔,就是我們想要的顿苇,那么,我們按照張量的結(jié)果税弃,進(jìn)行解析纪岁,就可以在圖上畫出這個(gè)(x,y,w,h)對(duì)應(yīng)的區(qū)域。好了则果,一般情況下第一次肯定不可能就得到好的結(jié)果幔翰,那怎么辦呢漩氨?我們?cè)谳斎胗?xùn)練圖像的時(shí)候,是不是有標(biāo)簽?zāi)匾旁觯沂遣皇且灿袑?duì)應(yīng)的類別的信息呢叫惊。整,把這些信息搞成7730的張量做修,這樣不就可以用反向傳播去迭代了嘛霍狰。一遍一遍的訓(xùn)練。你會(huì)發(fā)現(xiàn)饰及,最后輸出的張量蔗坯,越來(lái)越是我們想要的。就是這么神奇燎含。
第四宾濒,總結(jié)一下吧
我自己還是挺喜歡YOLO的,簡(jiǎn)單有效屏箍,思路清奇绘梦。YOLO有很多小細(xì)節(jié),推薦的博客里面有介紹赴魁,我就不說(shuō)了谚咬。后續(xù)會(huì)繼續(xù)更新V2和V3版本。本文已同步至公眾號(hào)尚粘,歡迎訂閱择卦。