1、參考網(wǎng)址:百度飛漿
https://www.paddlepaddle.org.cn/tutorials/projectdetail/2412195/
2、算法優(yōu)勢(shì)
R-CNN系列算法需要先產(chǎn)生候選區(qū)域,再對(duì)候選區(qū)域做分類和位置坐標(biāo)的預(yù)測(cè),這類算法被稱為兩階段目標(biāo)檢測(cè)算法。
與R-CNN系列算法不同,YOLOv3使用單個(gè)網(wǎng)絡(luò)結(jié)構(gòu),在產(chǎn)生候選區(qū)域的同時(shí)即可預(yù)測(cè)出物體類別和位置,不需要分成兩階段來完成檢測(cè)任務(wù)。另外,YOLOv3算法產(chǎn)生的預(yù)測(cè)框數(shù)目比Faster R-CNN少很多。Faster R-CNN中每個(gè)真實(shí)框可能對(duì)應(yīng)多個(gè)標(biāo)簽為正的候選區(qū)域,而YOLOv3里面每個(gè)真實(shí)框只對(duì)應(yīng)一個(gè)正的候選區(qū)域。這些特性使得YOLOv3算法具有更快的速度,能到達(dá)實(shí)時(shí)響應(yīng)的水平。
3、發(fā)展歷程
Joseph Redmon等人在2015年提出YOLO(You Only Look Once,YOLO)算法,通常也被稱為YOLOv1;2016年,他們對(duì)算法進(jìn)行改進(jìn),又提出YOLOv2版本;2018年發(fā)展出YOLOv3版本。
4、模型設(shè)計(jì)思想
YOLOv3算法的基本思想可以分成兩部分:
1、按一定規(guī)則在圖片上產(chǎn)生一系列的候選區(qū)域,然后根據(jù)這些候選區(qū)域與圖片上物體真實(shí)框之間的位置關(guān)系對(duì)候選區(qū)域進(jìn)行標(biāo)注。跟真實(shí)框足夠接近的那些候選區(qū)域會(huì)被標(biāo)注為正樣本,同時(shí)將真實(shí)框的位置作為正樣本的位置目標(biāo)。偏離真實(shí)框較大的那些候選區(qū)域則會(huì)被標(biāo)注為負(fù)樣本,負(fù)樣本不需要預(yù)測(cè)位置或者類別。
2、使用卷積神經(jīng)網(wǎng)絡(luò)提取圖片特征并對(duì)候選區(qū)域的位置和類別進(jìn)行預(yù)測(cè)。這樣每個(gè)預(yù)測(cè)框就可以看成是一個(gè)樣本,根據(jù)真實(shí)框相對(duì)它的位置和類別進(jìn)行了標(biāo)注而獲得標(biāo)簽值,通過網(wǎng)絡(luò)模型預(yù)測(cè)其位置和類別,將網(wǎng)絡(luò)預(yù)測(cè)值和標(biāo)簽值進(jìn)行比較,就可以建立起損失函數(shù)。
5、產(chǎn)生候選區(qū)域
目前大多數(shù)基于卷積神經(jīng)網(wǎng)絡(luò)的模型所采用的方式大體如下:
1、按一定的規(guī)則在圖片上生成一系列位置固定的錨框,將這些錨框看作是可能的候選區(qū)域。
2、對(duì)錨框是否包含目標(biāo)物體進(jìn)行預(yù)測(cè),如果包含目標(biāo)物體,還需要預(yù)測(cè)所包含物體的類別,以及預(yù)測(cè)框相對(duì)于錨框位置需要調(diào)整的幅度。
生成錨框
將原始圖片劃分為m*n個(gè)區(qū)域,原始圖片高度H=640, 寬度W=480,如果我們選擇小塊區(qū)域的尺寸為32×32,則m和n分別為:
m=640/32=20
n=480/32=15
將原始圖片劃分成20行15列小方塊區(qū)域。
YOLOv3算法會(huì)在每個(gè)區(qū)域的中心,生成一系列錨框。
生成預(yù)測(cè)框
錨框的位置都是固定好的,不可能剛好跟物體邊界框重合,需要在錨框的基礎(chǔ)上進(jìn)行位置的微調(diào)以生成預(yù)測(cè)框。預(yù)測(cè)框相對(duì)于錨框會(huì)有不同的中心位置和大小,采用什么方式能得到預(yù)測(cè)框呢?我們先來考慮如何生成其中心位置坐標(biāo)。
比如上面圖中在第10行第4列的小方塊區(qū)域中心生成的一個(gè)錨框,如綠色虛線框所示。以小方格的寬度為單位長度,
那么問題來了,tx、ty、tw、th取什么值的時(shí)候,才能使得預(yù)測(cè)框和真實(shí)框重合呢?