论文笔记:YOLO
原文:You Only Look Once: Unified, Real-Time Object Detection
YOLO
1、四個(gè)問(wèn)題
要解決什么問(wèn)題?
- 對(duì)于目標(biāo)檢測(cè)任務(wù)來(lái)說(shuō),速度較快的算法性能較弱,然而性能較強(qiáng)的算法(如:R-CNN系列)耗時(shí)則更多,很難達(dá)到實(shí)時(shí)性的要求。
- 大多數(shù)像RCNN這類(lèi)的算法流程是,第一步先獲取候選區(qū)域(region proposal),接著進(jìn)行后處理(消除重復(fù)框,對(duì)候選框進(jìn)行分類(lèi)等等)。這樣的操作往往很慢也很難優(yōu)化,因?yàn)槊總€(gè)獨(dú)立的模塊都要單獨(dú)訓(xùn)練,實(shí)時(shí)性要求也達(dá)不到。
用了什么方法解決?
- 將目標(biāo)檢測(cè)直接轉(zhuǎn)換為一個(gè)回歸問(wèn)題,直接使用一個(gè)神經(jīng)網(wǎng)絡(luò)來(lái)預(yù)測(cè)候選框和物體類(lèi)別。
效果如何?
-
YOLO網(wǎng)絡(luò)的速度有很大提高。
-
基本的YOLO網(wǎng)絡(luò)可以做到45FPS。
-
對(duì)于較小的Fast YOLO模型,幀數(shù)可以達(dá)到155FPS,且相比于其他實(shí)時(shí)檢測(cè)模型效果更好。
-
對(duì)背景的分類(lèi)錯(cuò)誤少了很多。
還存在什么問(wèn)題?
- YOLO在準(zhǔn)確率上還比不過(guò)state-of-the-art的模型。
- 與R-CNN系列相比,候選框的預(yù)測(cè)有較大誤差,且對(duì)新數(shù)據(jù)的泛化能力較弱。
- 對(duì)于數(shù)量較多的小物體,如一群小鳥(niǎo),識(shí)別效果不好。
2、論文概述
2.1、總體框架
2.2、統(tǒng)一檢測(cè)(Unified Detection)
- 將輸入圖像劃分為S×SS \times SS×S個(gè)單元格(grid cell)。如果某個(gè)物體的中心在某個(gè)單元格內(nèi),那么那個(gè)單元格就負(fù)責(zé)檢測(cè)那個(gè)物體。
- 每個(gè)單元格(grid cell)要預(yù)測(cè)BBB個(gè)bounding box,每個(gè)bounding box除了要預(yù)測(cè)框的位置外,還要預(yù)測(cè)一個(gè)置信率(confidence)。具體來(lái)說(shuō),每個(gè)bounding box包含5個(gè)預(yù)測(cè)值:xxx、yyy、www、hhh和置信率(confidence)。
- (x,y)(x, y)(x,y)表示的是預(yù)測(cè)的bounding box的中心點(diǎn)坐標(biāo)。
- www、hhh表示的是bounding box的寬和高。
- confidence包含了兩重信息:
- 有多確信這個(gè)單元格(grid cell)內(nèi)有物體?
- 預(yù)測(cè)的bounding box有多精確?
- 計(jì)算公式:Pr(object)?IOUpredtruthPr(object) * IOU_{pred}^{truth}Pr(object)?IOUpredtruth?。
- 如果這個(gè)單元格內(nèi)有物體,則Pr(object)Pr(object)Pr(object)取1,否則取0。
- IOUpredtruthIOU_{pred}^{truth}IOUpredtruth?表示的是預(yù)測(cè)的bounding box與ground truth之間的重疊比例,它這里用的是intersection over union (IOU) 這個(gè)指標(biāo)。
2.3、網(wǎng)絡(luò)結(jié)構(gòu)
- 網(wǎng)絡(luò)結(jié)構(gòu)如下:
2.4、訓(xùn)練
- 先在ImageNet上對(duì)前20個(gè)卷積層接上一個(gè)平均池化層和全連接層進(jìn)行預(yù)訓(xùn)練。
- 隨后保留那20個(gè)卷積層,再加上4個(gè)新的卷積層和2個(gè)全連接層,新加的層使用隨機(jī)權(quán)重初始化。
- 由于還需要對(duì)細(xì)粒度視覺(jué)信息進(jìn)行分類(lèi),故將輸入圖片的分辨率調(diào)整為448×448448 \times 448448×448(原始分辨率為224×224224 \times 224224×224)。
- bounding box預(yù)測(cè)的中心點(diǎn)坐標(biāo)xxx和yyy用對(duì)應(yīng)網(wǎng)格的偏移歸一化到0-1之間;bounding box預(yù)測(cè)的寬高w和h用整幅圖像的寬高歸一化到0-1之間。
- 網(wǎng)絡(luò)中使用leaky ReLU替代ReLU。
- 在計(jì)算loss時(shí),作者最初全部采用了平方和誤差 (sum-squared loss)。
- 采用平方和誤差的原因是,它很容易優(yōu)化。
- 然而,也存在幾個(gè)問(wèn)題:
- 將分類(lèi)誤差和定位誤差看做同等重要顯然是不靠譜的。
- 另外在一幅圖像中,大多數(shù)網(wǎng)格不含有任何對(duì)象。這會(huì)將這些單元格的置信率(confidence)推為0,由于數(shù)量眾多,很可能會(huì)掩蓋掉含有目標(biāo)的單元格反向傳播回來(lái)的梯度。結(jié)果就是導(dǎo)致模型不穩(wěn)定,甚至發(fā)散。
- 如下圖所示,可以看出,在y=xy=\sqrt{x}y=x?上取兩個(gè)鄰近的點(diǎn)做差值。如果值比較小,y=xy=\sqrt{x}y=x?在較小的地方變化率相對(duì)更大,那么這個(gè)差值也會(huì)更大一些。這樣子反應(yīng)到loss上,就是在較小的box上小偏差會(huì)造成更大的loss,而較大的box上小偏差得到的loss則沒(méi)那么大。
- loss函數(shù)完整形式:
- 1iobj\mathbb{1}_{i}^{obj}1iobj?表示目標(biāo)是否出現(xiàn)在網(wǎng)格單元iii中 ,1ijobj\mathbb{1}_{ij}^{obj}1ijobj?表示網(wǎng)格單元iii中的第jjj個(gè)邊界框預(yù)測(cè)器“負(fù)責(zé)”該預(yù)測(cè)。
- 這個(gè)loss中,只有當(dāng)某個(gè)單元格中有對(duì)象的時(shí)候才會(huì)計(jì)入分類(lèi)錯(cuò)誤,即對(duì)分類(lèi)錯(cuò)誤進(jìn)行懲罰。
- 只有當(dāng)某個(gè) box predictor 對(duì)某個(gè) ground truth box 負(fù)責(zé)的時(shí)候,才會(huì)對(duì) box 的 coordinate error 進(jìn)行懲罰,而對(duì)哪個(gè) ground truth box 負(fù)責(zé)就看其預(yù)測(cè)值和 ground truth box 的 IoU 是不是在那個(gè) cell 的所有 box 中最大的。
2.5、推斷(測(cè)試)
- 對(duì)于每張圖片,使用如下評(píng)分公式獲取每個(gè)bounding box對(duì)應(yīng)不同類(lèi)的confidence結(jié)果,即class-specific confidence scores :
Pr(Classi∣Object)?Pr(Object)?IOUpredtruth=Pr(Classi)?IOUpredtruthPr(Class_i | Object) * Pr(Object) * IOU_{pred}^{truth} = Pr(Class_i) * IOU_{pred}^{truth}Pr(Classi?∣Object)?Pr(Object)?IOUpredtruth?=Pr(Classi?)?IOUpredtruth?
- Pr(Object)?IOUpredtruthPr(Object) * IOU_{pred}^{truth}Pr(Object)?IOUpredtruth?就是每個(gè)bounding box的confidence。
- Pr(Classi∣Object)Pr(Class_i | Object)Pr(Classi?∣Object)為分類(lèi)結(jié)果。
- 基于class-specific confidence scores設(shè)置閾值篩選bounding box,最后再使用非極大抑制(NMS)去除重疊的框。
2.6、資料推薦
總結(jié)
- 上一篇: 论文笔记:PointSIFT
- 下一篇: 论文笔记:Inception v1