1.yolov3算法的價(jià)值
解決項(xiàng)目里SSD訓(xùn)練小目標(biāo)極其糟糕的問(wèn)題,理解好ssd析苫,mask-rcnn兜叨,fast-rcnn,yolov3在項(xiàng)目里的身份以及為什么能發(fā)揮這種身份的深層原理(網(wǎng)絡(luò)架構(gòu)上骨杂,等等)理清之后好跟你的復(fù)試?yán)蠋熃榻B你的項(xiàng)目經(jīng)歷揣钦,讓老師眼前一亮。
2.言歸正傳
一直以來(lái),在計(jì)算機(jī)視覺(jué)領(lǐng)域有一個(gè)問(wèn)題待解決献烦,那就是如何檢測(cè)兩個(gè)距離很近的同類(lèi)的目標(biāo)或不同類(lèi)目標(biāo)东囚?大多數(shù)的算法都會(huì)對(duì)輸入的圖像數(shù)據(jù)進(jìn)行尺度變化废境,縮放到較小的分辨率情況下,但是一般在這總情況下只會(huì)給出一個(gè)Bounding Box,主要由于特征提取過(guò)程中將這總情況人為是一個(gè)目標(biāo)。(本來(lái)就很近咪笑,一放縮之間的近距離越發(fā)明顯了)
還有就是小目標(biāo)問(wèn)題辜昵,這也是項(xiàng)目的痛點(diǎn)
但是YOLO V3版本卻做到了,它對(duì)這種距離很近的目標(biāo)或者小目標(biāo)有很好的魯棒性进栽,雖然不能百分百檢測(cè),但是這個(gè)難題得到了很大程度的解決轩褐。
但要了解V3秒拔,就必須先去了解它的v1,v2,所以下面做一個(gè)進(jìn)化之路的分析
3.進(jìn)化之路
yoloV1
1.將一幅圖像分成 SxS 個(gè)網(wǎng)格(grid cell)淮蜈,如果某個(gè) object 的中心落在這個(gè)網(wǎng)格中未状,則這個(gè)網(wǎng)格就負(fù)責(zé)預(yù)測(cè)這個(gè) object胰柑。
2.每個(gè)網(wǎng)格要預(yù)測(cè)(其實(shí)就是給了每個(gè)網(wǎng)格以自己網(wǎng)格內(nèi)的坐標(biāo)為中心點(diǎn),以一定長(zhǎng)姑丑,寬,框出B個(gè)框的權(quán)力辞友,然后就算你實(shí)際什么也沒(méi)框到栅哀,也進(jìn)行?class-specific confidence score計(jì)算,并參與最后的NMS称龙。這種召回率明顯會(huì)很低) 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 值。
3.每個(gè)bouning box要預(yù)測(cè)(x搔驼,y谈火,w,h)和confidence這五個(gè)值舌涨,每個(gè)網(wǎng)格還要預(yù)測(cè)一個(gè)類(lèi)別信息糯耍,記為 C 類(lèi)。則 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。
????比如說(shuō)哗伯,在?PASCAL VOC 中荒揣,圖像輸入為 448x448,取 S=7焊刹,B=2系任,一共有20 個(gè)類(lèi)別(C=20),則輸出就是 ????7x7x30 的一個(gè) tensor虐块。
????整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示:
4.在 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è)的類(lèi)別信息贺奠,第二霜旧、三項(xiàng)就是每個(gè) bounding box 預(yù)測(cè)的 confidence。這個(gè)? ?乘積即 encode 了預(yù)測(cè)的 box 屬于某一類(lèi)的概率儡率,也有該 box 準(zhǔn)確度的信息挂据。)
5.得到每個(gè) box 的 class-specific confidence score 以后以清,設(shè)置閾值,濾掉得分低的 boxes崎逃,對(duì)保留的 boxes 進(jìn)行 NMS (非極大值抑制)處理掷倔,就得到最終的檢測(cè)結(jié)果。
個(gè)人總結(jié)yolo的問(wèn)題
1.由于輸出層為全連接層个绍,因此在檢測(cè)時(shí)勒葱,YOLO 訓(xùn)練模型只支持與訓(xùn)練圖像相同的輸入分辨率。fast rcnn就不存在巴柿。
2.雖然每個(gè)格子可以預(yù)測(cè) B 個(gè) bounding box凛虽,但是最終只選擇只選擇 IOU 最高的 bounding box 作為物體檢測(cè)輸出,即每個(gè)格子最多只預(yù)測(cè)出一個(gè)物體篮洁。當(dāng)物體占畫(huà)面比例較小涩维,如圖像中包含畜群或鳥(niǎo)群時(shí),每個(gè)格子包含多個(gè)物體袁波,但卻只能檢測(cè)出其中一個(gè)瓦阐。這是 YOLO 方法的一個(gè)缺陷。
3.由于它要跟實(shí)際標(biāo)注的真實(shí)框做對(duì)比才能進(jìn)一步學(xué)習(xí)篷牌,所以YOLO 方法模型訓(xùn)練依賴(lài)于物體識(shí)別標(biāo)注數(shù)據(jù)睡蟋,因此,對(duì)于非常規(guī)的物體形狀或比例枷颊,YOLO 的檢測(cè)效果并不理想戳杀。
4.YOLO 采用了多個(gè)下采樣層,網(wǎng)絡(luò)學(xué)到的物體特征并不精細(xì)夭苗,因此也會(huì)影響檢測(cè)效果信卡。
5..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)確性。
(缺點(diǎn)的細(xì)節(jié)淮悼,https://blog.csdn.net/guleileo/article/details/80581858里有指出咐低,可以細(xì)看)
?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 種物體分類(lèi)锡宋,這歸功于它使用了 WordTree儡湾,通過(guò) WordTree 來(lái)混合檢測(cè)數(shù)據(jù)集與識(shí)別數(shù)據(jù)集之中的數(shù)據(jù)。
1.簡(jiǎn)介:
它的論文中提出了一種新的訓(xùn)練方法:聯(lián)合訓(xùn)練算法--------這種算法可以把檢測(cè)數(shù)據(jù)集和分類(lèi)數(shù)據(jù)集混合到一起执俩。使用一種分層的觀點(diǎn)對(duì)物體進(jìn)行分類(lèi),用巨量的分類(lèi)數(shù)據(jù)集數(shù)據(jù)來(lái)擴(kuò)充檢測(cè)數(shù)據(jù)集癌刽,從而把兩種不同的數(shù)據(jù)集混合起來(lái)役首。
聯(lián)合訓(xùn)練算法的基本思路就是:同時(shí)在檢測(cè)數(shù)據(jù)集和分類(lèi)數(shù)據(jù)集上訓(xùn)練物體檢測(cè)器(Object Detectors ),用監(jiān)測(cè)數(shù)據(jù)集的數(shù)據(jù)學(xué)習(xí)物體的準(zhǔn)確位置显拜,用分類(lèi)數(shù)據(jù)集的數(shù)據(jù)來(lái)增加分類(lèi)的類(lèi)別量衡奥、提升魯棒性。
YOLO9000 就是使用聯(lián)合訓(xùn)練算法訓(xùn)練出來(lái)的远荠,它擁有 9000 類(lèi)的分類(lèi)信息矮固,這些分類(lèi)信息學(xué)習(xí)自ImageNet分類(lèi)數(shù)據(jù)集,而物體位置檢測(cè)則學(xué)習(xí)自 COCO 檢測(cè)數(shù)據(jù)集譬淳。
2.改進(jìn):
目前計(jì)算機(jī)視覺(jué)的趨勢(shì)是更大更深的網(wǎng)絡(luò)档址,更好的性能表現(xiàn)通常依賴(lài)于訓(xùn)練更大的網(wǎng)絡(luò)或者把多種模型綜合到一起。但是 YOLO v2 則著力于簡(jiǎn)化網(wǎng)絡(luò)邻梆,具體改進(jìn)如下:
1.Batch Normalization
? ? 很熟悉了BN 操作守伸,batch歸一化處理,讓網(wǎng)絡(luò)提高了收斂性浦妄,同時(shí)還消除了對(duì)其他形式的正則(regularization)的依賴(lài)尼摹。使用 Batch Normalization 可以從模型中去掉 Dropout,并且不會(huì)產(chǎn)生過(guò)擬合剂娄。通過(guò)對(duì) 每一個(gè)卷積層增加 Batch Normalization蠢涝,最終使得 mAP 提高了 2%。
2.High resolution classifie
目前業(yè)界標(biāo)準(zhǔn)的檢測(cè)方法阅懦,都要先把分類(lèi)器(classi?er)放在ImageNet上進(jìn)行預(yù)訓(xùn)練和二。從 Alexnet 開(kāi)始,大多數(shù)的分類(lèi)器都運(yùn)行在小于 256*256 的圖片上故黑。而現(xiàn)在 YOLO 從 224*224 增加到了 448*448儿咱,這就意味著網(wǎng)絡(luò)需要適應(yīng)新的輸入分辨率。
為了適應(yīng)新的分辨率场晶,YOLO v2 的分類(lèi)網(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%吏颖。
3.Convolution with anchor boxes
YOLO V3包含有全連接層搔体,從而能直接預(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%。
4.Dimension clusters
之前 Anchor Box 的尺寸是手動(dòng)選擇的胎许,所以尺寸還有優(yōu)化的余地峻呛。 為了優(yōu)化,在訓(xùn)練集的 Bounding Boxes 上跑一下 k-means聚類(lèi)辜窑,來(lái)找到一個(gè)比較好的值钩述。
如果我們用標(biāo)準(zhǔn)的歐式距離的 k-means,尺寸大的框比小框產(chǎn)生更多的錯(cuò)誤穆碎。因?yàn)槲覀兊哪康氖翘岣?IOU 分?jǐn)?shù)牙勘,這依賴(lài)于 Box 的大小,所以距離度量的使用:
通過(guò)分析實(shí)驗(yàn)結(jié)果(Figure 2)所禀,左圖:在模型復(fù)雜性與 high recall 之間權(quán)衡之后方面,選擇聚類(lèi)分類(lèi)數(shù) K=5。右圖:是聚類(lèi)的中心色徘,大多數(shù)是高瘦的 Box恭金。
Table1 是說(shuō)明用 K-means 選擇 Anchor Boxes 時(shí),當(dāng) Cluster IOU 選擇值為 5 時(shí)褂策,AVG IOU 的值是 61横腿,這個(gè)值要比不用聚類(lèi)的方法的 60.9 要高颓屑。選擇值為 9 的時(shí)候,AVG IOU 更有顯著提高耿焊【镜耄總之就是說(shuō)明用聚類(lèi)的方法是有效果的。
5.Direct location prediction(直接位置預(yù)測(cè))
用 Anchor Box 的方法罗侯,會(huì)讓 model 變得不穩(wěn)定器腋,尤其是在最開(kāi)始的幾次迭代的時(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%搓劫。
6.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 之中,這一方法類(lèi)似與 Resnet 的 Identity Mapping数苫,從而把 26*26*512 變成 13*13*2048聪舒。YOLO 中的檢測(cè)器位于擴(kuò)展后(expanded )的特征圖的上方,所以他能取得細(xì)粒度的特征信息虐急,這提升了 YOLO 1% 的性能箱残。
7.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 上的速度與精度
8.Darknet 19
不同于yoloV1,V2使用的不在是GoogLeNet,而是全新的Draknet销斟,有 19 個(gè)卷積層和 5 個(gè) maxpooling 層庐椒,處理一張圖片只需要 55.8 億次運(yùn)算,在 ImageNet 上達(dá)到 72.9% top-1 精確度蚂踊,91.2% top-5 精確度约谈。
YOLO v2 使用 3*3 的 filter,每次池化之后都增加一倍 Channels 的數(shù)量犁钟。YOLO v2 使用全局平均池化棱诱,使用 Batch Normilazation 來(lái)讓訓(xùn)練更穩(wěn)定,加速收斂涝动,使模型規(guī)范化迈勋。
在訓(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精確度。
9.Hierarchical classification(參次分類(lèi))
問(wèn)題:檢測(cè)數(shù)據(jù)集只有粗粒度的標(biāo)記信息厦凤,像“貓“鼻吮、“ 狗”之類(lèi),但分類(lèi)數(shù)據(jù)集的標(biāo)簽信息則更細(xì)粒度较鼓,更豐富椎木。比如狗這一類(lèi)就包括”哈士奇“”牛頭梗“”金毛狗“等等博烂。所以如果想同時(shí)在監(jiān)測(cè)數(shù)據(jù)集與分類(lèi)數(shù)據(jù)集上進(jìn)行訓(xùn)練香椎,那么就要用一種一致性的方法融合這些標(biāo)簽信息。
再者禽篱,用于分類(lèi)的方法畜伐,大多是用 softmax layer 方法,softmax 意味著分類(lèi)的類(lèi)別之間要互相獨(dú)立的躺率。而盲目地混合數(shù)據(jù)集訓(xùn)練烤礁,就會(huì)出現(xiàn)比如:檢測(cè)數(shù)據(jù)集的分類(lèi)信息中”狗“這一分類(lèi),在分類(lèi)數(shù)據(jù)集合中肥照,就會(huì)有的不同種類(lèi)的狗:“哈士奇”、“牛頭骨谥冢”舆绎、“金毛”這些分類(lèi),這兩種數(shù)據(jù)集之間的分類(lèi)信息不相互獨(dú)立们颜,會(huì)造成混亂吕朵。
解決方案:WordNet
在 WordNet 中,大多數(shù)同義詞只有一個(gè)路徑窥突,所以首先把這條路徑中的詞全部都加到分層樹(shù)中努溃。接著迭代地檢查剩下的名詞,并盡可能少的把他們添加到分層樹(shù)上阻问,添加的原則是取最短路徑加入到樹(shù)中梧税。
為了計(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 類(lèi)的 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)簽如失“砘澹總之現(xiàn)在一張圖片是多標(biāo)記的,標(biāo)記之間不需要相互獨(dú)立岖常。
說(shuō)說(shuō)它的效果:使用相同的訓(xùn)練參數(shù)驯镊,這種分層結(jié)構(gòu)的Darknet19達(dá)到71.9%top-1精度和90.4% top-5 精確度,精度只有微小的下降竭鞍。 在對(duì)未知或者新的物體進(jìn)行分類(lèi)時(shí)板惑,性能降低的很優(yōu)雅(gracefully)。比如看到一個(gè)狗的照片偎快,但不知道是哪種種類(lèi)的狗冯乘,那么就高置信度(confidence)預(yù)測(cè)是”狗“,而其他狗的種類(lèi)的同義詞如”哈士奇“”牛頭股辜校“”金毛“等這些則低置信度裆馒。
Datasets combination with wordtree的效果
用 WordTree 把數(shù)據(jù)集合中的類(lèi)別映射到分層樹(shù)中的同義詞上,例如下圖 Figure 6丐怯,WordTree 混合 ImageNet 與 COCO喷好。
10.Joint classification and detection (聯(lián)合分類(lèi)檢測(cè))
首先,作者想訓(xùn)練一個(gè) Extremely Large Scale 檢測(cè)器读跷。所以訓(xùn)練的時(shí)候使用 WordTree 混合了 COCO 檢測(cè)數(shù)據(jù)集與 ImageNet 中的 Top9000 類(lèi)梗搅,混合后的數(shù)據(jù)集對(duì)應(yīng)的 WordTree 有 9418 個(gè)類(lèi)。但問(wèn)題也來(lái)了:?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丐枉。
在訓(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)自分類(lèi)數(shù)據(jù)集的圖片和分類(lèi)標(biāo)記信息籍嘹,只用整個(gè)結(jié)構(gòu)中分類(lèi)部分的 loss 功能反向傳播這個(gè)圖片。
YOLO9000 的訓(xùn)練基于 YOLO v2 的構(gòu)架弯院,但是使用 3 priors 而不是 5 來(lái)限制輸出的大小噩峦。當(dāng)網(wǎng)絡(luò)遇到檢測(cè)數(shù)據(jù)集中的圖片時(shí)則正常地反方向傳播,當(dāng)遇到分類(lèi)數(shù)據(jù)集圖片的時(shí)候抽兆,只使用分類(lèi)的 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 分類(lèi)數(shù)據(jù)集學(xué)習(xí)如何對(duì)大量的類(lèi)別中進(jìn)行分類(lèi)。?
評(píng)估結(jié)果:?
YOLO9000 取得 19.7 mAP切油。?在未學(xué)習(xí)過(guò)的 156 個(gè)分類(lèi)數(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è)物體類(lèi)別攻谁,并保證實(shí)時(shí)運(yùn)行稚伍。
11.總結(jié):
YOLO v2 代表著目前先進(jìn)的物體檢測(cè)的水平垦搬,在多種監(jiān)測(cè)數(shù)據(jù)集中都要快過(guò)其他檢測(cè)系統(tǒng),并可以在速度與精確度上進(jìn)行權(quán)衡【7】艳汽。
YOLO 9000 的網(wǎng)絡(luò)結(jié)構(gòu)允許實(shí)時(shí)地檢測(cè)超過(guò)9000種物體分類(lèi)猴贰,這歸功于它能同時(shí)優(yōu)化檢測(cè)與分類(lèi)功能。使用 WordTree 【9】來(lái)混合來(lái)自不同的資源的訓(xùn)練數(shù)據(jù)河狐,并使用聯(lián)合優(yōu)化技術(shù)【10】同時(shí)在 ImageNet 和 COCO 數(shù)據(jù)集上進(jìn)行訓(xùn)練糟趾,YOLO9000 進(jìn)一步縮小了監(jiān)測(cè)數(shù)據(jù)集與識(shí)別數(shù)據(jù)集之間的大小代溝。
YOLOv3
YOLO v3 的模型比之前的模型復(fù)雜了不少甚牲,可以通過(guò)改變模型結(jié)構(gòu)的大小來(lái)權(quán)衡速度與精度。
YOLOv3 在實(shí)現(xiàn)相同準(zhǔn)確度下要顯著地比其它檢測(cè)方法快蝶柿。時(shí)間都是在采用 M40 或 Titan X 等相同 GPU 下測(cè)量的丈钙。
首先,YOLOv3 的先驗(yàn)檢測(cè)(Prior detection)系統(tǒng)將分類(lèi)器或定位器重新用于執(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)圈浇,所以相比于基于分類(lèi)器的系統(tǒng)有一些優(yōu)勢(shì)寥掐。它在測(cè)試時(shí)會(huì)查看整個(gè)圖像靴寂,所以它的預(yù)測(cè)利用了圖像中的全局信息。
所以以上兩點(diǎn)使得yoloV3與需要數(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)點(diǎn):
1.多尺度預(yù)測(cè)(類(lèi)FPN)
每種尺度預(yù)測(cè)3個(gè)box, anchor的設(shè)計(jì)方式仍然使用聚類(lèi),得到9個(gè)聚類(lèi)中心(即9個(gè)anchor衫贬,而v2只有5個(gè)anchor),將其按照大小均分給3中尺度.
尺度1: 在基礎(chǔ)網(wǎng)絡(luò)之后添加一些卷積層再輸出box信息.
尺度2: 從尺度1中的倒數(shù)第二層的卷積層上采樣(x2)再與最后一個(gè)16x16大小的特征圖相加,再次通過(guò)多個(gè)卷積后輸出box信息.相比尺度1變大兩倍.
尺度3: 與尺度2類(lèi)似,使用了32x32大小的特征圖.
2.YOLOv3不使用Softmax對(duì)每個(gè)框進(jìn)行分類(lèi)协饲,考慮因素有兩個(gè):
????1.Softmax使得每個(gè)框分配一個(gè)類(lèi)別(score最大的一個(gè))杖小,而對(duì)于Open Images這種數(shù)據(jù)集,目標(biāo)可能有重疊? ?的類(lèi)別標(biāo)簽,因此Softmax不適用于多標(biāo)簽分類(lèi)待德。
????2.Softmax可被獨(dú)立的多個(gè)logistic分類(lèi)器替代,且準(zhǔn)確率不會(huì)下降铝穷。分類(lèi)損失采用binary cross-entropy loss皂甘。
3.更好的基礎(chǔ)分類(lèi)網(wǎng)絡(luò)Darknet-53(類(lèi)ResNet)和分類(lèi)器
仿ResNet, 與ResNet-101或ResNet-152準(zhǔn)確率接近,但速度更快.對(duì)比如下:
網(wǎng)絡(luò)結(jié)構(gòu)如下:
4.Detection的策略不同
V2只有一個(gè)detection,V3設(shè)置有3個(gè)供常,分別是一個(gè)下采樣的摊聋,F(xiàn)eature map(特征圖譜)為13*13,還有2個(gè)上采樣的eltwise sum栈暇,F(xiàn)eature map分別為26*26和52*52麻裁,也就是說(shuō),V3的416版本已經(jīng)用到了52的Feature map源祈,而V2把多尺度考慮到訓(xùn)練的data采樣上煎源,最后也只是用到了13的Feature map,這應(yīng)該是對(duì)小目標(biāo)影響最大的地方香缺;
總結(jié):
YOLO V2是一個(gè)縱向自上而下的網(wǎng)絡(luò)架構(gòu)手销,隨著通道數(shù)目的不斷增加,F(xiàn)LOPS是不斷增加的图张,而V3網(wǎng)絡(luò)架構(gòu)是橫縱交叉的锋拖,看著卷積層多,其實(shí)很多通道的卷積層沒(méi)有繼承性祸轮,另外兽埃,雖然V3增加了anchor centroid,但是對(duì)GT(信值)的估計(jì)變得更加簡(jiǎn)單适袜,每個(gè)GT只匹配一個(gè)先驗(yàn)框柄错,而且每個(gè)尺度只預(yù)測(cè)3個(gè)框,V2預(yù)測(cè)5個(gè)框,這樣的話也降低了復(fù)雜度鄙陡。
優(yōu)點(diǎn):
快速冕房,pipline簡(jiǎn)單,背景誤檢率低趁矾,通用性強(qiáng)耙册。
YOLO V3對(duì)非自然圖像物體的檢測(cè)率遠(yuǎn)遠(yuǎn)高于DPM和RCNN系列檢測(cè)方法。 但相比RCNN系列物體檢測(cè)方法毫捣,YOLO V3具有以下缺點(diǎn): ?
缺點(diǎn):
識(shí)別物體位置精準(zhǔn)性差详拙,召回率低。
在每個(gè)網(wǎng)格中預(yù)測(cè)兩個(gè)bbox這種約束方式減少了對(duì)同一目標(biāo)的多次檢測(cè)(R-CNN使用的region proposal方式重疊較多)蔓同,相比R-CNN使用Selective Search產(chǎn)生2000個(gè)proposal(RCNN測(cè)試時(shí)每張超過(guò)40秒)饶辙,YOLO僅使用7x7x2個(gè)。
自此斑粱,yolo家族紙上談兵的的時(shí)間就結(jié)束了弃揽,下面就要開(kāi)始動(dòng)手用yoloV3訓(xùn)練自己的目標(biāo)檢測(cè)任務(wù)了!
感謝以下博客的指導(dǎo)之恩:
https://blog.csdn.net/guleileo/article/details/80581858
https://blog.csdn.net/gzq0723/article/details/79936613
https://www.cnblogs.com/makefile/p/YOLOv3.html
https://blog.csdn.net/zlp_zky/article/details/78452042
https://blog.csdn.net/zchang81/article/details/70211851
https://www.imooc.com/article/details/id/29342
http://www.mamicode.com/info-detail-2314392.html