YOLOv1
這是繼 RCNN,fast-RCNN 和 faster-RCNN之后,Ross Girshick 針對(duì) DL 目標(biāo)檢測(cè)速度問(wèn)題提出的另外一種框架。YOLO V1 其增強(qiáng)版本在 GPU 上能跑45fps,簡(jiǎn)化版本155fps。
論文下載:
http://arxiv.org/abs/1506.02640
代碼下載:
https://github.com/pjreddie/darknet
1.YOLO 的核心思想
YOLO 的核心思想就是利用整張圖作為網(wǎng)絡(luò)的輸入,直接在輸出層回歸 bounding box(邊界框) 的位置及其所屬的類別。
faster-RCNN 中也直接用整張圖作為輸入,但是 faster-RCNN 整體還是采用了RCNN 那種 proposal+classifier 的思想,只不過(guò)是將提取 proposal 的步驟放在 CNN 中實(shí)現(xiàn)了,而 YOLO 則采用直接回歸的思路。
2.YOLO 的實(shí)現(xiàn)方法
將一幅圖像分成 SxS 個(gè)網(wǎng)格(grid cell),如果某個(gè) object 的中心落在這個(gè)網(wǎng)格中,則這個(gè)網(wǎng)格就負(fù)責(zé)預(yù)測(cè)這個(gè) object。
每個(gè)網(wǎng)格要預(yù)測(cè) B 個(gè) bounding box,每個(gè) bounding box 除了要回歸自身的位置之外,還要附帶預(yù)測(cè)一個(gè) confidence 值。
這個(gè) confidence 代表了所預(yù)測(cè)的 box 中含有 object 的置信度和這個(gè) box 預(yù)測(cè)的有多準(zhǔn)這兩重信息,其值是這樣計(jì)算的:
其中如果有 object 落在一個(gè) grid cell 里,第一項(xiàng)取 1,否則取 0。 第二項(xiàng)是預(yù)測(cè)的 bounding box 和實(shí)際的 groundtruth 之間的 IoU 值。
每個(gè) bounding box 要預(yù)測(cè) (x, y, w, h) 和 confidence 共5個(gè)值,每個(gè)網(wǎng)格還要預(yù)測(cè)一個(gè)類別信息,記為 C 類。則 SxS個(gè) 網(wǎng)格,每個(gè)網(wǎng)格要預(yù)測(cè) B 個(gè) bounding box 還要預(yù)測(cè) C 個(gè) categories。輸出就是 S x S x (5*B+C) 的一個(gè) tensor。
注意:class 信息是針對(duì)每個(gè)網(wǎng)格的,confidence 信息是針對(duì)每個(gè) bounding box 的。
舉例說(shuō)明:在PASCAL VOC 中,圖像輸入為 448x448,取 S=7,B=2,一共有20 個(gè)類別(C=20),則輸出就是 7x7x30 的一個(gè) tensor。
整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示:
在 test 的時(shí)候,每個(gè)網(wǎng)格預(yù)測(cè)的 class 信息和 bounding box 預(yù)測(cè)的 confidence信息相乘,就得到每個(gè) bounding box 的 class-specific confidence score:
等式左邊第一項(xiàng)就是每個(gè)網(wǎng)格預(yù)測(cè)的類別信息,第二、三項(xiàng)就是每個(gè) bounding box 預(yù)測(cè)的 confidence。這個(gè)乘積即 encode 了預(yù)測(cè)的 box 屬于某一類的概率,也有該 box 準(zhǔn)確度的信息。
得到每個(gè) box 的 class-specific confidence score 以后,設(shè)置閾值,濾掉得分低的 boxes,對(duì)保留的 boxes 進(jìn)行 NMS 處理,就得到最終的檢測(cè)結(jié)果。
注:
*由于輸出層為全連接層,因此在檢測(cè)時(shí),YOLO 訓(xùn)練模型只支持與訓(xùn)練圖像相同的輸入分辨率。
*雖然每個(gè)格子可以預(yù)測(cè) B 個(gè) bounding box,但是最終只選擇只選擇 IOU 最高的 bounding box 作為物體檢測(cè)輸出,即每個(gè)格子最多只預(yù)測(cè)出一個(gè)物體。當(dāng)物體占畫面比例較小,如圖像中包含畜群或鳥群時(shí),每個(gè)格子包含多個(gè)物體,但卻只能檢測(cè)出其中一個(gè)。這是 YOLO 方法的一個(gè)缺陷。
3.YOLO 的實(shí)現(xiàn)細(xì)節(jié)
每個(gè) grid 有 30 維,這 30 維中,8 維是回歸 box 的坐標(biāo),2 維是 box的 confidence,還有 20 維是類別。
其中坐標(biāo)的 x, y 用對(duì)應(yīng)網(wǎng)格的 offset 歸一化到 0-1 之間,w, h 用圖像的 width 和 height 歸一化到 0-1 之間。
在實(shí)現(xiàn)中,最主要的就是怎么設(shè)計(jì)損失函數(shù),讓這個(gè)三個(gè)方面得到很好的平衡。作者簡(jiǎn)單粗暴的全部采用了 sum-squared error loss 來(lái)做這件事。
這種做法存在以下幾個(gè)問(wèn)題:
第一,8維的 localization error 和20維的 classification error 同等重要顯然是不合理的;
第二,如果一個(gè)網(wǎng)格中沒(méi)有 object(一幅圖中這種網(wǎng)格很多),那么就會(huì)將這些網(wǎng)格中的 box 的 confidence push 到 0,相比于較少的有 object 的網(wǎng)格,這種做法是 overpowering 的,這會(huì)導(dǎo)致網(wǎng)絡(luò)不穩(wěn)定甚至發(fā)散。
解決辦法:
更重視8維的坐標(biāo)預(yù)測(cè),給這些損失前面賦予更大的 loss weight, 記為
在 pascal VOC 訓(xùn)練中取 5。
對(duì)沒(méi)有 object 的 box 的 confidence loss,賦予小的 loss weight,記為
在 pascal VOC 訓(xùn)練中取 0.5。
有 object 的 box 的 confidence loss 和類別的 loss 的 loss weight 正常取 1。
對(duì)不同大小的 box 預(yù)測(cè)中,相比于大 box 預(yù)測(cè)偏一點(diǎn),小 box 預(yù)測(cè)偏一點(diǎn)肯定更不能被忍受的。而 sum-square error loss 中對(duì)同樣的偏移 loss 是一樣。
為了緩和這個(gè)問(wèn)題,作者用了一個(gè)比較取巧的辦法,就是將 box 的 width 和 height 取平方根代替原本的 height 和 width。這個(gè)參考下面的圖很容易理解,小box 的橫軸值較小,發(fā)生偏移時(shí),反應(yīng)到y(tǒng)軸上相比大 box 要大。(也是個(gè)近似逼近方式)
一個(gè)網(wǎng)格預(yù)測(cè)多個(gè) box,希望的是每個(gè) box predictor 專門負(fù)責(zé)預(yù)測(cè)某個(gè) object。具體做法就是看當(dāng)前預(yù)測(cè)的 box 與 ground truth box 中哪個(gè) IoU 大,就負(fù)責(zé)哪個(gè)。這種做法稱作 box predictor 的 specialization。
最后整個(gè)的損失函數(shù)如下所示:
這個(gè)損失函數(shù)中:
只有當(dāng)某個(gè)網(wǎng)格中有 object 的時(shí)候才對(duì) classification error 進(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 中最大。
其他細(xì)節(jié),例如使用激活函數(shù)使用 leak RELU,模型用 ImageNet 預(yù)訓(xùn)練等等,在這里就不一一贅述了。
注:
*YOLO 方法模型訓(xùn)練依賴于物體識(shí)別標(biāo)注數(shù)據(jù),因此,對(duì)于非常規(guī)的物體形狀或比例,YOLO 的檢測(cè)效果并不理想。
*YOLO 采用了多個(gè)下采樣層,網(wǎng)絡(luò)學(xué)到的物體特征并不精細(xì),因此也會(huì)影響檢測(cè)效果。
* YOLO 的損失函數(shù)中,大物體 IOU 誤差和小物體 IOU 誤差對(duì)網(wǎng)絡(luò)訓(xùn)練中 loss 貢獻(xiàn)值接近(雖然采用求平方根方式,但沒(méi)有根本解決問(wèn)題)。因此,對(duì)于小物體,小的 IOU 誤差也會(huì)對(duì)網(wǎng)絡(luò)優(yōu)化過(guò)程造成很大的影響,從而降低了物體檢測(cè)的定位準(zhǔn)確性。
4.YOLO 的缺點(diǎn)
YOLO 對(duì)相互靠的很近的物體,還有很小的群體檢測(cè)效果不好,這是因?yàn)橐粋€(gè)網(wǎng)格中只預(yù)測(cè)了兩個(gè)框,并且只屬于一類。
同一類物體出現(xiàn)的新的不常見(jiàn)的長(zhǎng)寬比和其他情況時(shí),泛化能力偏弱。
由于損失函數(shù)的問(wèn)題,定位誤差是影響檢測(cè)效果的主要原因。尤其是大小物體的處理上,還有待加強(qiáng)。
YOLOv2
YOLOv2:代表著目前業(yè)界最先進(jìn)物體檢測(cè)的水平,它的速度要快過(guò)其他檢測(cè)系統(tǒng)(FasterR-CNN,ResNet,SSD),使用者可以在它的速度與精確度之間進(jìn)行權(quán)衡。
YOLO9000:這一網(wǎng)絡(luò)結(jié)構(gòu)可以實(shí)時(shí)地檢測(cè)超過(guò) 9000 種物體分類,這歸功于它使用了 WordTree,通過(guò) WordTree 來(lái)混合檢測(cè)數(shù)據(jù)集與識(shí)別數(shù)據(jù)集之中的數(shù)據(jù)。
工程代碼地址:
http://pjreddie.com/darknet/yolo/
▌簡(jiǎn)介
目前的檢測(cè)數(shù)據(jù)集(Detection Datasets)有很多限制,分類標(biāo)簽的信息太少,圖片的數(shù)量小于分類數(shù)據(jù)集(Classi?cation Datasets),而且檢測(cè)數(shù)據(jù)集的成本太高,使其無(wú)法當(dāng)作分類數(shù)據(jù)集進(jìn)行使用。而現(xiàn)在的分類數(shù)據(jù)集卻有著大量的圖片和十分豐富分類信息。
文章提出了一種新的訓(xùn)練方法–聯(lián)合訓(xùn)練算法。這種算法可以把這兩種的數(shù)據(jù)集混合到一起。使用一種分層的觀點(diǎn)對(duì)物體進(jìn)行分類,用巨量的分類數(shù)據(jù)集數(shù)據(jù)來(lái)擴(kuò)充檢測(cè)數(shù)據(jù)集,從而把兩種不同的數(shù)據(jù)集混合起來(lái)。
聯(lián)合訓(xùn)練算法的基本思路就是:同時(shí)在檢測(cè)數(shù)據(jù)集和分類數(shù)據(jù)集上訓(xùn)練物體檢測(cè)器(Object Detectors ),用監(jiān)測(cè)數(shù)據(jù)集的數(shù)據(jù)學(xué)習(xí)物體的準(zhǔn)確位置,用分類數(shù)據(jù)集的數(shù)據(jù)來(lái)增加分類的類別量、提升魯棒性。
YOLO9000 就是使用聯(lián)合訓(xùn)練算法訓(xùn)練出來(lái)的,他擁有 9000 類的分類信息,這些分類信息學(xué)習(xí)自ImageNet分類數(shù)據(jù)集,而物體位置檢測(cè)則學(xué)習(xí)自 COCO 檢測(cè)數(shù)據(jù)集。
代碼和預(yù)訓(xùn)練模型地址:
http://pjreddie.com/yolo9000/
▌更準(zhǔn)
YOLO 一代有很多缺點(diǎn),作者希望改進(jìn)的方向是改善 recall,提升定位的準(zhǔn)確度,同時(shí)保持分類的準(zhǔn)確度。
目前計(jì)算機(jī)視覺(jué)的趨勢(shì)是更大更深的網(wǎng)絡(luò),更好的性能表現(xiàn)通常依賴于訓(xùn)練更大的網(wǎng)絡(luò)或者把多種模型綜合到一起。但是 YOLO v2 則著力于簡(jiǎn)化網(wǎng)絡(luò)。具體的改進(jìn)見(jiàn)下表:
Batch Normalization
使用 Batch Normalization 對(duì)網(wǎng)絡(luò)進(jìn)行優(yōu)化,讓網(wǎng)絡(luò)提高了收斂性,同時(shí)還消除了對(duì)其他形式的正則化(regularization)的依賴。通過(guò)對(duì) YOLO 的每一個(gè)卷積層增加 Batch Normalization,最終使得 mAP 提高了 2%,同時(shí)還使模型正則化。使用 Batch Normalization 可以從模型中去掉 Dropout,而不會(huì)產(chǎn)生過(guò)擬合。
High resolution classifier
目前業(yè)界標(biāo)準(zhǔn)的檢測(cè)方法,都要先把分類器(classi?er)放在ImageNet上進(jìn)行預(yù)訓(xùn)練。從 Alexnet 開始,大多數(shù)的分類器都運(yùn)行在小于 256*256 的圖片上。而現(xiàn)在 YOLO 從 224*224 增加到了 448*448,這就意味著網(wǎng)絡(luò)需要適應(yīng)新的輸入分辨率。
為了適應(yīng)新的分辨率,YOLO v2 的分類網(wǎng)絡(luò)以 448*448 的分辨率先在 ImageNet上進(jìn)行微調(diào),微調(diào) 10 個(gè) epochs,讓網(wǎng)絡(luò)有時(shí)間調(diào)整濾波器(filters),好讓其能更好的運(yùn)行在新分辨率上,還需要調(diào)優(yōu)用于檢測(cè)的 Resulting Network。最終通過(guò)使用高分辨率,mAP 提升了 4%。
Convolution with anchor boxes
YOLO 一代包含有全連接層,從而能直接預(yù)測(cè) Bounding Boxes 的坐標(biāo)值。 Faster R-CNN 的方法只用卷積層與 Region Proposal Network 來(lái)預(yù)測(cè) Anchor Box 偏移值與置信度,而不是直接預(yù)測(cè)坐標(biāo)值。作者發(fā)現(xiàn)通過(guò)預(yù)測(cè)偏移量而不是坐標(biāo)值能夠簡(jiǎn)化問(wèn)題,讓神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)起來(lái)更容易。
所以最終 YOLO 去掉了全連接層,使用 Anchor Boxes 來(lái)預(yù)測(cè) Bounding Boxes。作者去掉了網(wǎng)絡(luò)中一個(gè)池化層,這讓卷積層的輸出能有更高的分辨率。收縮網(wǎng)絡(luò)讓其運(yùn)行在 416*416 而不是 448*448。由于圖片中的物體都傾向于出現(xiàn)在圖片的中心位置,特別是那種比較大的物體,所以有一個(gè)單獨(dú)位于物體中心的位置用于預(yù)測(cè)這些物體。YOLO 的卷積層采用 32 這個(gè)值來(lái)下采樣圖片,所以通過(guò)選擇 416*416 用作輸入尺寸最終能輸出一個(gè) 13*13 的特征圖。 使用 Anchor Box 會(huì)讓精確度稍微下降,但用了它能讓 YOLO 能預(yù)測(cè)出大于一千個(gè)框,同時(shí) recall 達(dá)到88%,mAP 達(dá)到 69.2%。
Dimension clusters
之前 Anchor Box 的尺寸是手動(dòng)選擇的,所以尺寸還有優(yōu)化的余地。 為了優(yōu)化,在訓(xùn)練集的 Bounding Boxes 上跑一下 k-means聚類,來(lái)找到一個(gè)比較好的值。
如果我們用標(biāo)準(zhǔn)的歐式距離的 k-means,尺寸大的框比小框產(chǎn)生更多的錯(cuò)誤。因?yàn)槲覀兊哪康氖翘岣?IOU 分?jǐn)?shù),這依賴于 Box 的大小,所以距離度量的使用:
通過(guò)分析實(shí)驗(yàn)結(jié)果(Figure 2),左圖:在模型復(fù)雜性與 high recall 之間權(quán)衡之后,選擇聚類分類數(shù) K=5。右圖:是聚類的中心,大多數(shù)是高瘦的 Box。
Table1 是說(shuō)明用 K-means 選擇 Anchor Boxes 時(shí),當(dāng) Cluster IOU 選擇值為 5 時(shí),AVG IOU 的值是 61,這個(gè)值要比不用聚類的方法的 60.9 要高。選擇值為 9 的時(shí)候,AVG IOU 更有顯著提高。總之就是說(shuō)明用聚類的方法是有效果的。
Direct location prediction
用 Anchor Box 的方法,會(huì)讓 model 變得不穩(wěn)定,尤其是在最開始的幾次迭代的時(shí)候。大多數(shù)不穩(wěn)定因素產(chǎn)生自預(yù)測(cè) Box 的(x,y)位置的時(shí)候。按照之前 YOLO的方法,網(wǎng)絡(luò)不會(huì)預(yù)測(cè)偏移量,而是根據(jù) YOLO 中的網(wǎng)格單元的位置來(lái)預(yù)測(cè)坐標(biāo),這就讓 Ground Truth 的值介于 0 到 1 之間。而為了讓網(wǎng)絡(luò)的結(jié)果能落在這一范圍內(nèi),網(wǎng)絡(luò)使用一個(gè) Logistic Activation 來(lái)對(duì)于網(wǎng)絡(luò)預(yù)測(cè)結(jié)果進(jìn)行限制,讓結(jié)果介于 0 到 1 之間。 網(wǎng)絡(luò)在每一個(gè)網(wǎng)格單元中預(yù)測(cè)出 5 個(gè) Bounding Boxes,每個(gè) Bounding Boxes 有五個(gè)坐標(biāo)值 tx,ty,tw,th,t0,他們的關(guān)系見(jiàn)下圖(Figure3)。假設(shè)一個(gè)網(wǎng)格單元對(duì)于圖片左上角的偏移量是 cx、cy,Bounding Boxes Prior 的寬度和高度是 pw、ph,那么預(yù)測(cè)的結(jié)果見(jiàn)下圖右面的公式:
因?yàn)槭褂昧讼拗谱寯?shù)值變得參數(shù)化,也讓網(wǎng)絡(luò)更容易學(xué)習(xí)、更穩(wěn)定。Dimension clusters和Direct location prediction,使 YOLO 比其他使用 Anchor Box 的版本提高了近5%。
Fine-Grained Features
YOLO 修改后的特征圖大小為 13*13,這個(gè)尺寸對(duì)檢測(cè)圖片中尺寸大物體來(lái)說(shuō)足夠了,同時(shí)使用這種細(xì)粒度的特征對(duì)定位小物體的位置可能也有好處。Faster-RCNN、SSD 都使用不同尺寸的特征圖來(lái)取得不同范圍的分辨率,而 YOLO 采取了不同的方法,YOLO 加上了一個(gè) Passthrough Layer 來(lái)取得之前的某個(gè) 26*26 分辨率的層的特征。這個(gè) Passthrough layer 能夠把高分辨率特征與低分辨率特征聯(lián)系在一起,聯(lián)系起來(lái)的方法是把相鄰的特征堆積在不同的 Channel 之中,這一方法類似與 Resnet 的 Identity Mapping,從而把 26*26*512 變成 13*13*2048。YOLO 中的檢測(cè)器位于擴(kuò)展后(expanded )的特征圖的上方,所以他能取得細(xì)粒度的特征信息,這提升了 YOLO 1% 的性能。
Multi-Scale Training
作者希望 YOLOv2 能健壯地運(yùn)行于不同尺寸的圖片之上,所以把這一想法用于訓(xùn)練模型中。
區(qū)別于之前的補(bǔ)全圖片的尺寸的方法,YOLOv2 每迭代幾次都會(huì)改變網(wǎng)絡(luò)參數(shù)。每 10 個(gè) Batch,網(wǎng)絡(luò)會(huì)隨機(jī)地選擇一個(gè)新的圖片尺寸,由于使用了下采樣參數(shù)是 32,所以不同的尺寸大小也選擇為 32 的倍數(shù) {320,352…..608},最小 320*320,最大 608*608,網(wǎng)絡(luò)會(huì)自動(dòng)改變尺寸,并繼續(xù)訓(xùn)練的過(guò)程。
這一政策讓網(wǎng)絡(luò)在不同的輸入尺寸上都能達(dá)到一個(gè)很好的預(yù)測(cè)效果,同一網(wǎng)絡(luò)能在不同分辨率上進(jìn)行檢測(cè)。當(dāng)輸入圖片尺寸比較小的時(shí)候跑的比較快,輸入圖片尺寸比較大的時(shí)候精度高,所以你可以在 YOLOv2 的速度和精度上進(jìn)行權(quán)衡。
下圖是在 voc2007 上的速度與精度
▌更快
YOLO 使用的是 GoogLeNet 架構(gòu),比 VGG-16 快,YOLO 完成一次前向過(guò)程只用 85.2 億次運(yùn)算,而 VGG-16 要 306.9 億次,但是 YOLO 精度稍低于 VGG-16。
Draknet19
YOLO v2 基于一個(gè)新的分類模型,有點(diǎn)類似于 VGG。YOLO v2 使用 3*3 的 filter,每次池化之后都增加一倍 Channels 的數(shù)量。YOLO v2 使用全局平均池化,使用 Batch Normilazation 來(lái)讓訓(xùn)練更穩(wěn)定,加速收斂,使模型規(guī)范化。
最終的模型–Darknet19,有 19 個(gè)卷積層和 5 個(gè) maxpooling 層,處理一張圖片只需要 55.8 億次運(yùn)算,在 ImageNet 上達(dá)到 72.9% top-1 精確度,91.2% top-5 精確度。
Training for classi?cation
在訓(xùn)練時(shí),把整個(gè)網(wǎng)絡(luò)在更大的448*448分辨率上Fine Turnning 10個(gè) epoches,初始學(xué)習(xí)率設(shè)置為0.001,這種網(wǎng)絡(luò)達(dá)到達(dá)到76.5%top-1精確度,93.3%top-5精確度。
▌更強(qiáng)
在訓(xùn)練的過(guò)程中,當(dāng)網(wǎng)絡(luò)遇到一個(gè)來(lái)自檢測(cè)數(shù)據(jù)集的圖片與標(biāo)記信息,那么就把這些數(shù)據(jù)用完整的 YOLO v2 loss 功能反向傳播這個(gè)圖片。當(dāng)網(wǎng)絡(luò)遇到一個(gè)來(lái)自分類數(shù)據(jù)集的圖片和分類標(biāo)記信息,只用整個(gè)結(jié)構(gòu)中分類部分的 loss 功能反向傳播這個(gè)圖片。
但是檢測(cè)數(shù)據(jù)集只有粗粒度的標(biāo)記信息,像“貓“、“ 狗”之類,而分類數(shù)據(jù)集的標(biāo)簽信息則更細(xì)粒度,更豐富。比如狗這一類就包括”哈士奇“”牛頭?!啊苯鹈贰暗鹊?。所以如果想同時(shí)在監(jiān)測(cè)數(shù)據(jù)集與分類數(shù)據(jù)集上進(jìn)行訓(xùn)練,那么就要用一種一致性的方法融合這些標(biāo)簽信息。
再者,用于分類的方法,大多是用 softmax layer 方法,softmax 意味著分類的類別之間要互相獨(dú)立的。而盲目地混合數(shù)據(jù)集訓(xùn)練,就會(huì)出現(xiàn)比如:檢測(cè)數(shù)據(jù)集的分類信息中”狗“這一分類,在分類數(shù)據(jù)集合中,就會(huì)有的不同種類的狗:“哈士奇”、“牛頭?!薄ⅰ敖鹈边@些分類,這兩種數(shù)據(jù)集之間的分類信息不相互獨(dú)立。所以使用一種多標(biāo)簽的模型來(lái)混合數(shù)據(jù)集,假設(shè)一個(gè)圖片可以有多個(gè)分類信息,并假定分類信息必須是相互獨(dú)立的規(guī)則可以被忽略。
Hierarchical classification
WordNet 的結(jié)構(gòu)是一個(gè)直接圖表(directed graph),而不是樹型結(jié)構(gòu)。因?yàn)檎Z(yǔ)言是復(fù)雜的,狗這個(gè)詞既屬于‘犬科’又屬于‘家畜’兩類,而‘犬科’和‘家畜’兩類在WordNet中則是同義詞,所以不能用樹形結(jié)構(gòu)。
作者希望根據(jù) ImageNet 中包含的概念來(lái)建立一個(gè)分層樹,為了建立這個(gè)分層樹,首先檢查 ImagenNet 中出現(xiàn)的名詞,再在 WordNet 中找到這些名詞,再找到這些名詞到達(dá)他們根節(jié)點(diǎn)的路徑(在這里設(shè)為所有的根節(jié)點(diǎn)為實(shí)體對(duì)象(physical object)。在 WordNet 中,大多數(shù)同義詞只有一個(gè)路徑,所以首先把這條路徑中的詞全部都加到分層樹中。接著迭代地檢查剩下的名詞,并盡可能少的把他們添加到分層樹上,添加的原則是取最短路徑加入到樹中。
為了計(jì)算某一結(jié)點(diǎn)的絕對(duì)概率,只需要對(duì)這一結(jié)點(diǎn)到根節(jié)點(diǎn)的整條路徑的所有概率進(jìn)行相乘。所以比如你想知道一個(gè)圖片是否是 Norfolk terrier 的概率,則進(jìn)行如下計(jì)算:
為了驗(yàn)證這一個(gè)方法,在 WordTree 上訓(xùn)練 Darknet19 的模型,使用 1000 類的 ImageNet 進(jìn)行訓(xùn)練,為了建立 WordtTree 1K,把所有中間詞匯加入到 WordTree 上,把標(biāo)簽空間從 1000 擴(kuò)大到了 1369。在訓(xùn)練過(guò)程中,如果有一個(gè)圖片的標(biāo)簽是“Norfolk terrier”,那么這個(gè)圖片還會(huì)獲得”狗“(dog)以及“哺乳動(dòng)物”(mammal)等標(biāo)簽??傊F(xiàn)在一張圖片是多標(biāo)記的,標(biāo)記之間不需要相互獨(dú)立。
如 Figure5 所示,之前的 ImageNet 分類是使用一個(gè)大 softmax 進(jìn)行分類。而現(xiàn)在,WordTree 只需要對(duì)同一概念下的同義詞進(jìn)行 softmax 分類。
使用相同的訓(xùn)練參數(shù),這種分層結(jié)構(gòu)的Darknet19達(dá)到71.9%top-1精度和90.4% top-5 精確度,精度只有微小的下降。
這種方法的好處:在對(duì)未知或者新的物體進(jìn)行分類時(shí),性能降低的很優(yōu)雅(gracefully)。比如看到一個(gè)狗的照片,但不知道是哪種種類的狗,那么就高置信度(confidence)預(yù)測(cè)是”狗“,而其他狗的種類的同義詞如”哈士奇“”牛頭?!啊苯鹈暗冗@些則低置信度。
Datasets combination with wordtree
用 WordTree 把數(shù)據(jù)集合中的類別映射到分層樹中的同義詞上,例如上圖 Figure 6,WordTree 混合 ImageNet 與 COCO。
Joint classification and detection
作者的目的是:訓(xùn)練一個(gè) Extremely Large Scale 檢測(cè)器。所以訓(xùn)練的時(shí)候使用 WordTree 混合了 COCO 檢測(cè)數(shù)據(jù)集與 ImageNet 中的 Top9000 類,混合后的數(shù)據(jù)集對(duì)應(yīng)的 WordTree 有 9418 個(gè)類。另一方面,由于 ImageNet 數(shù)據(jù)集太大了,作者為了平衡一下兩個(gè)數(shù)據(jù)集之間的數(shù)據(jù)量,通過(guò)過(guò)采樣(oversampling) COCO 數(shù)據(jù)集中的數(shù)據(jù),使 COCO 數(shù)據(jù)集與 ImageNet 數(shù)據(jù)集之間的數(shù)據(jù)量比例達(dá)到 1:4。
YOLO9000 的訓(xùn)練基于 YOLO v2 的構(gòu)架,但是使用 3 priors 而不是 5 來(lái)限制輸出的大小。當(dāng)網(wǎng)絡(luò)遇到檢測(cè)數(shù)據(jù)集中的圖片時(shí)則正常地反方向傳播,當(dāng)遇到分類數(shù)據(jù)集圖片的時(shí)候,只使用分類的 loss 功能進(jìn)行反向傳播。同時(shí)作者假設(shè) IOU 最少為 0.3。最后根據(jù)這些假設(shè)進(jìn)行反向傳播。
使用聯(lián)合訓(xùn)練法,YOLO9000 使用 COCO 檢測(cè)數(shù)據(jù)集學(xué)習(xí)檢測(cè)圖片中的物體的位置,使用 ImageNet 分類數(shù)據(jù)集學(xué)習(xí)如何對(duì)大量的類別中進(jìn)行分類。
為了評(píng)估這一方法,使用 ImageNet Detection Task 對(duì)訓(xùn)練結(jié)果進(jìn)行評(píng)估。
評(píng)估結(jié)果:
YOLO9000 取得 19.7 mAP。在未學(xué)習(xí)過(guò)的 156 個(gè)分類數(shù)據(jù)上進(jìn)行測(cè)試, mAP 達(dá)到 16.0。
YOLO9000 的 mAP 比 DPM 高,而且 YOLO 有更多先進(jìn)的特征,YOLO9000 是用部分監(jiān)督的方式在不同訓(xùn)練集上進(jìn)行訓(xùn)練,同時(shí)還能檢測(cè) 9000個(gè)物體類別,并保證實(shí)時(shí)運(yùn)行。
雖然 YOLO9000 對(duì)動(dòng)物的識(shí)別性能很好,但是對(duì)類別為“sungalsses”或者“swimming trunks”這些衣服或者裝備的類別,它的識(shí)別性能不是很好,見(jiàn) table 7。這跟數(shù)據(jù)集的數(shù)據(jù)組成有很大關(guān)系。
▌總結(jié)
YOLO v2 代表著目前最先進(jìn)物體檢測(cè)的水平,在多種監(jiān)測(cè)數(shù)據(jù)集中都要快過(guò)其他檢測(cè)系統(tǒng),并可以在速度與精確度上進(jìn)行權(quán)衡。
YOLO 9000 的網(wǎng)絡(luò)結(jié)構(gòu)允許實(shí)時(shí)地檢測(cè)超過(guò)9000種物體分類,這歸功于它能同時(shí)優(yōu)化檢測(cè)與分類功能。使用 WordTree 來(lái)混合來(lái)自不同的資源的訓(xùn)練數(shù)據(jù),并使用聯(lián)合優(yōu)化技術(shù)同時(shí)在 ImageNet 和 COCO 數(shù)據(jù)集上進(jìn)行訓(xùn)練,YOLO9000 進(jìn)一步縮小了監(jiān)測(cè)數(shù)據(jù)集與識(shí)別數(shù)據(jù)集之間的大小代溝。
YOLOv3
YOLOv3 在 Pascal Titan X 上處理 608x608 圖像速度可以達(dá)到 20FPS,在 COCO test-dev 上mAP@0.5達(dá)到 57.9%,與RetinaNet(FocalLoss論文所提出的單階段網(wǎng)絡(luò))的結(jié)果相近,并且速度快 4 倍.
YOLO v3 的模型比之前的模型復(fù)雜了不少,可以通過(guò)改變模型結(jié)構(gòu)的大小來(lái)權(quán)衡速度與精度。
速度對(duì)比如下:
‘
YOLOv3 在實(shí)現(xiàn)相同準(zhǔn)確度下要顯著地比其它檢測(cè)方法快。時(shí)間都是在采用 M40 或 Titan X 等相同 GPU 下測(cè)量的。
簡(jiǎn)而言之,YOLOv3 的先驗(yàn)檢測(cè)(Prior detection)系統(tǒng)將分類器或定位器重新用于執(zhí)行檢測(cè)任務(wù)。他們將模型應(yīng)用于圖像的多個(gè)位置和尺度。而那些評(píng)分較高的區(qū)域就可以視為檢測(cè)結(jié)果。此外,相對(duì)于其它目標(biāo)檢測(cè)方法,我們使用了完全不同的方法。我們將一個(gè)單神經(jīng)網(wǎng)絡(luò)應(yīng)用于整張圖像,該網(wǎng)絡(luò)將圖像劃分為不同的區(qū)域,因而預(yù)測(cè)每一塊區(qū)域的邊界框和概率,這些邊界框會(huì)通過(guò)預(yù)測(cè)的概率加權(quán)。我們的模型相比于基于分類器的系統(tǒng)有一些優(yōu)勢(shì)。它在測(cè)試時(shí)會(huì)查看整個(gè)圖像,所以它的預(yù)測(cè)利用了圖像中的全局信息。與需要數(shù)千張單一目標(biāo)圖像的 R-CNN 不同,它通過(guò)單一網(wǎng)絡(luò)評(píng)估進(jìn)行預(yù)測(cè)。這令 YOLOv3 非常快,一般它比 R-CNN 快 1000 倍、比 Fast R-CNN 快 100 倍。
改進(jìn)之處:
1.多尺度預(yù)測(cè) (類FPN)
2.更好的基礎(chǔ)分類網(wǎng)絡(luò)(類ResNet)和分類器 darknet-53,見(jiàn)下圖
3.分類器-類別預(yù)測(cè):
YOLOv3 不使用 Softmax 對(duì)每個(gè)框進(jìn)行分類,主要考慮因素有兩個(gè):
a.Softmax 使得每個(gè)框分配一個(gè)類別(得分最高的一個(gè)),而對(duì)于 Open Images這種數(shù)據(jù)集,目標(biāo)可能有重疊的類別標(biāo)簽,因此 Softmax不適用于多標(biāo)簽分類。
b.Softmax 可被獨(dú)立的多個(gè) logistic分類器替代,且準(zhǔn)確率不會(huì)下降。
c.分類損失采用 binary cross-entropy loss.
多尺度預(yù)測(cè)
每種尺度預(yù)測(cè) 3 個(gè) box, anchor 的設(shè)計(jì)方式仍然使用聚類,得到9個(gè)聚類中心,將其按照大小均分給 3 個(gè)尺度。
尺度1: 在基礎(chǔ)網(wǎng)絡(luò)之后添加一些卷積層再輸出box信息。
尺度2: 從尺度1中的倒數(shù)第二層的卷積層上采樣(x2)再與最后一個(gè) 16x16 大小的特征圖相加,再次通過(guò)多個(gè)卷積后輸出 box 信息,相比尺度1變大兩倍.
尺度3: 與尺度2類似,使用了 32x32 大小的特征圖
基礎(chǔ)網(wǎng)絡(luò) Darknet-53
darknet-53與 ResNet-101 或 ResNet-152 準(zhǔn)確率接近,但速度更快,對(duì)比如下:
檢測(cè)結(jié)構(gòu)如下:
YOLOv3 在 mAP@0.5 及小目標(biāo) APs 上具有不錯(cuò)的結(jié)果,但隨著 IOU的增大,性能下降,說(shuō)明 YOLOv3 不能很好地與 ground truth 切合.
-
圖像
+關(guān)注
關(guān)注
2文章
1079瀏覽量
40375 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4284瀏覽量
62325 -
網(wǎng)格
+關(guān)注
關(guān)注
0文章
139瀏覽量
15990
原文標(biāo)題:從YOLOv1到Y(jié)OLOv3,目標(biāo)檢測(cè)的進(jìn)化之路
文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論