2018-09-28 yolo家族進(jìn)化史分析初步

1.yolov3算法的價(jià)值

解決項(xiàng)目里SSD訓(xùn)練小目標(biāo)極其糟糕的問題,理解好ssd,mask-rcnn,fast-rcnn,yolov3在項(xiàng)目里的身份以及為什么能發(fā)揮這種身份的深層原理(網(wǎng)絡(luò)架構(gòu)上,等等)理清之后好跟你的復(fù)試?yán)蠋熃榻B你的項(xiàng)目經(jīng)歷,讓老師眼前一亮。

2.言歸正傳

一直以來,在計(jì)算機(jī)視覺領(lǐng)域有一個(gè)問題待解決,那就是如何檢測(cè)兩個(gè)距離很近的同類的目標(biāo)或不同類目標(biāo)?大多數(shù)的算法都會(huì)對(duì)輸入的圖像數(shù)據(jù)進(jìn)行尺度變化,縮放到較小的分辨率情況下,但是一般在這總情況下只會(huì)給出一個(gè)Bounding Box,主要由于特征提取過程中將這總情況人為是一個(gè)目標(biāo)。(本來就很近,一放縮之間的近距離越發(fā)明顯了)

還有就是小目標(biāo)問題,這也是項(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。


每個(gè)網(wǎng)格以自己為“中心”框圖

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í)際什么也沒框到,也進(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è)類別信息,記為 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。

????比如說,在?PASCAL VOC 中,圖像輸入為 448x448,取 S=7,B=2,一共有20 個(gè)類別(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è)的類別信息,第二、三項(xiàng)就是每個(gè) bounding box 預(yù)測(cè)的 confidence。這個(gè)? ?乘積即 encode 了預(yù)測(cè)的 box 屬于某一類的概率,也有該 box 準(zhǔn)確度的信息。)

5.得到每個(gè) box 的 class-specific confidence score 以后,設(shè)置閾值,濾掉得分低的 boxes,對(duì)保留的 boxes 進(jìn)行 NMS (非極大值抑制)處理,就得到最終的檢測(cè)結(jié)果。

個(gè)人總結(jié)yolo的問題

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)物體占畫面比例較小,如圖像中包含畜群或鳥群時(shí),每個(gè)格子包含多個(gè)物體,但卻只能檢測(cè)出其中一個(gè)。這是 YOLO 方法的一個(gè)缺陷。

3.由于它要跟實(shí)際標(biāo)注的真實(shí)框做對(duì)比才能進(jìn)一步學(xué)習(xí),所以YOLO 方法模型訓(xùn)練依賴于物體識(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)值接近(雖然采用求平方根方式,但沒有根本解決問題)。因此,對(duì)于小物體,小的 IOU 誤差也會(huì)對(duì)網(wǎng)絡(luò)優(yōu)化過程造成很大的影響,從而降低了物體檢測(cè)的定位準(zhǔn)確性。

(缺點(diǎn)的細(xì)節(jié),https://blog.csdn.net/guleileo/article/details/80581858里有指出,可以細(xì)看)


?yoloV2


YOLOv2:代表著目前業(yè)界最先進(jìn)物體檢測(cè)的水平,它的速度要快過其他檢測(cè)系統(tǒng)(FasterR-CNN,ResNet,SSD),使用者可以在它的速度與精確度之間進(jìn)行權(quán)衡。

YOLO9000:這一網(wǎng)絡(luò)結(jié)構(gòu)可以實(shí)時(shí)地檢測(cè)超過 9000 種物體分類,這歸功于它使用了 WordTree,通過 WordTree 來混合檢測(cè)數(shù)據(jù)集與識(shí)別數(shù)據(jù)集之中的數(shù)據(jù)。

1.簡(jiǎn)介:

它的論文中提出了一種新的訓(xùn)練方法:聯(lián)合訓(xùn)練算法--------這種算法可以把檢測(cè)數(shù)據(jù)集和分類數(shù)據(jù)集混合到一起。使用一種分層的觀點(diǎn)對(duì)物體進(jìn)行分類,用巨量的分類數(shù)據(jù)集數(shù)據(jù)來擴(kuò)充檢測(cè)數(shù)據(jù)集,從而把兩種不同的數(shù)據(jù)集混合起來。

聯(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ù)來增加分類的類別量、提升魯棒性。

YOLO9000 就是使用聯(lián)合訓(xùn)練算法訓(xùn)練出來的,它擁有 9000 類的分類信息,這些分類信息學(xué)習(xí)自ImageNet分類數(shù)據(jù)集,而物體位置檢測(cè)則學(xué)習(xí)自 COCO 檢測(cè)數(shù)據(jù)集。

2.改進(jìn):

目前計(jì)算機(jī)視覺的趨勢(shì)是更大更深的網(wǎng)絡(luò),更好的性能表現(xiàn)通常依賴于訓(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)的依賴。使用 Batch Normalization 可以從模型中去掉 Dropout,并且不會(huì)產(chǎn)生過擬合。通過對(duì) 每一個(gè)卷積層增加 Batch Normalization,最終使得 mAP 提高了 2%。

2.High resolution classifie

目前業(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。最終通過使用高分辨率,mAP 提升了 4%。

3.Convolution with anchor boxes

YOLO V3包含有全連接層,從而能直接預(yù)測(cè) Bounding Boxes 的坐標(biāo)值。 但從Faster R-CNN 的方法只用卷積層與 Region Proposal Network 來預(yù)測(cè) Anchor Box 偏移值與置信度,而不是直接預(yù)測(cè)坐標(biāo)值。作者發(fā)現(xiàn)通過預(yù)測(cè)偏移量而不是坐標(biāo)值能夠簡(jiǎn)化問題,讓神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)起來更容易。

所以最終 YOLO 去掉了全連接層,使用 Anchor Boxes 來預(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è)值來下采樣圖片,所以通過選擇 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聚類,來找到一個(gè)比較好的值。

如果我們用標(biāo)準(zhǔn)的歐式距離的 k-means,尺寸大的框比小框產(chǎn)生更多的錯(cuò)誤。因?yàn)槲覀兊哪康氖翘岣?IOU 分?jǐn)?shù),這依賴于 Box 的大小,所以距離度量的使用:

通過分析實(shí)驗(yàn)結(jié)果(Figure 2),左圖:在模型復(fù)雜性與 high recall 之間權(quán)衡之后,選擇聚類分類數(shù) K=5。右圖:是聚類的中心,大多數(shù)是高瘦的 Box。

Table1 是說明用 K-means 選擇 Anchor Boxes 時(shí),當(dāng) Cluster IOU 選擇值為 5 時(shí),AVG IOU 的值是 61,這個(gè)值要比不用聚類的方法的 60.9 要高。選擇值為 9 的時(shí)候,AVG IOU 更有顯著提高??傊褪钦f明用聚類的方法是有效果的。

5.Direct location prediction(直接位置預(yù)測(cè))

用 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)格單元的位置來預(yù)測(cè)坐標(biāo),這就讓 Ground Truth 的值介于 0 到 1 之間。

而為了讓網(wǎng)絡(luò)的結(jié)果能落在這一范圍內(nèi),網(wǎng)絡(luò)使用一個(gè) Logistic Activation 來對(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)系見下圖(Figure3)。假設(shè)一個(gè)網(wǎng)格單元對(duì)于圖片左上角的偏移量是 cx、cy,Bounding Boxes Prior 的寬度和高度是 pw、ph,那么預(yù)測(cè)的結(jié)果見下圖右面的公式:

因?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è)圖片中尺寸大物體來說足夠了,同時(shí)使用這種細(xì)粒度的特征對(duì)定位小物體的位置可能也有好處。Faster-RCNN、SSD 都使用不同尺寸的特征圖來取得不同范圍的分辨率,而 YOLO 采取了不同的方法,YOLO 加上了一個(gè) Passthrough Layer 來取得之前的某個(gè) 26*26 分辨率的層的特征。這個(gè) Passthrough layer 能夠把高分辨率特征與低分辨率特征聯(lián)系在一起,聯(lián)系起來的方法是把相鄰的特征堆積在不同的 Channel 之中,這一方法類似與 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)練的過程。

這一政策讓網(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 來讓訓(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(參次分類)

問題:檢測(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ú)立,會(huì)造成混亂。

解決方案:WordNet

在 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)練過程中,如果有一個(gè)圖片的標(biāo)簽是“Norfolk terrier”,那么這個(gè)圖片還會(huì)獲得”狗“(dog)以及“哺乳動(dòng)物”(mammal)等標(biāo)簽。總之現(xiàn)在一張圖片是多標(biāo)記的,標(biāo)記之間不需要相互獨(dú)立。

說說它的效果:使用相同的訓(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。



10.Joint classification and detection (聯(lián)合分類檢測(cè))

首先,作者想訓(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ù)量,通過過采樣(oversampling) COCO 數(shù)據(jù)集中的數(shù)據(jù),使 COCO 數(shù)據(jù)集與 ImageNet 數(shù)據(jù)集之間的數(shù)據(jù)量比例達(dá)到 1:4。

在訓(xùn)練的過程中,當(dāng)網(wǎng)絡(luò)遇到一個(gè)來自檢測(cè)數(shù)據(jù)集的圖片與標(biāo)記信息,那么就把這些數(shù)據(jù)用完整的 YOLO v2 loss 功能反向傳播這個(gè)圖片。當(dāng)網(wǎng)絡(luò)遇到一個(gè)來自分類數(shù)據(jù)集的圖片和分類標(biāo)記信息,只用整個(gè)結(jié)構(gòu)中分類部分的 loss 功能反向傳播這個(gè)圖片。

YOLO9000 的訓(xùn)練基于 YOLO v2 的構(gòu)架,但是使用 3 priors 而不是 5 來限制輸出的大小。當(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)估結(jié)果:?

YOLO9000 取得 19.7 mAP。?在未學(xué)習(xí)過的 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í)別性能不是很好,見 table 7。這跟數(shù)據(jù)集的數(shù)據(jù)組成有很大關(guān)系。

11.總結(jié):

YOLO v2 代表著目前先進(jìn)的物體檢測(cè)的水平,在多種監(jiān)測(cè)數(shù)據(jù)集中都要快過其他檢測(cè)系統(tǒng),并可以在速度與精確度上進(jìn)行權(quán)衡【7】。

YOLO 9000 的網(wǎng)絡(luò)結(jié)構(gòu)允許實(shí)時(shí)地檢測(cè)超過9000種物體分類,這歸功于它能同時(shí)優(yōu)化檢測(cè)與分類功能。使用 WordTree 【9】來混合來自不同的資源的訓(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ù)雜了不少,可以通過改變模型結(jié)構(gòu)的大小來權(quán)衡速度與精度。

YOLOv3 在實(shí)現(xiàn)相同準(zhǔn)確度下要顯著地比其它檢測(cè)方法快。時(shí)間都是在采用 M40 或 Titan X 等相同 GPU 下測(cè)量的。

YOLOv3 compare

首先,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ì)通過預(yù)測(cè)的概率加權(quán),所以相比于基于分類器的系統(tǒng)有一些優(yōu)勢(shì)。它在測(cè)試時(shí)會(huì)查看整個(gè)圖像,所以它的預(yù)測(cè)利用了圖像中的全局信息。

所以以上兩點(diǎn)使得yoloV3與需要數(shù)千張單一目標(biāo)圖像的 R-CNN 不同,它通過單一網(wǎng)絡(luò)評(píng)估進(jìn)行預(yù)測(cè)。這令 YOLOv3 非???,一般它比 R-CNN 快 1000 倍、比 Fast R-CNN 快 100 倍。

改進(jìn)點(diǎn):

1.多尺度預(yù)測(cè)(類FPN)

每種尺度預(yù)測(cè)3個(gè)box, anchor的設(shè)計(jì)方式仍然使用聚類,得到9個(gè)聚類中心(即9個(gè)anchor,而v2只有5個(gè)anchor),將其按照大小均分給3中尺度.

尺度1: 在基礎(chǔ)網(wǎng)絡(luò)之后添加一些卷積層再輸出box信息.

尺度2: 從尺度1中的倒數(shù)第二層的卷積層上采樣(x2)再與最后一個(gè)16x16大小的特征圖相加,再次通過多個(gè)卷積后輸出box信息.相比尺度1變大兩倍.

尺度3: 與尺度2類似,使用了32x32大小的特征圖.

2.YOLOv3不使用Softmax對(duì)每個(gè)框進(jìn)行分類,考慮因素有兩個(gè):

????1.Softmax使得每個(gè)框分配一個(gè)類別(score最大的一個(gè)),而對(duì)于Open Images這種數(shù)據(jù)集,目標(biāo)可能有重疊? ?的類別標(biāo)簽,因此Softmax不適用于多標(biāo)簽分類。

????2.Softmax可被獨(dú)立的多個(gè)logistic分類器替代,且準(zhǔn)確率不會(huì)下降。分類損失采用binary cross-entropy loss。

3.更好的基礎(chǔ)分類網(wǎng)絡(luò)Darknet-53(類ResNet)和分類器

仿ResNet, 與ResNet-101或ResNet-152準(zhǔn)確率接近,但速度更快.對(duì)比如下:

darknet-53 compare

網(wǎng)絡(luò)結(jié)構(gòu)如下:

YOLOv3-arch

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,也就是說,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í)很多通道的卷積層沒有繼承性,另外,雖然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í)每張超過40秒),YOLO僅使用7x7x2個(gè)。


自此,yolo家族紙上談兵的的時(shí)間就結(jié)束了,下面就要開始動(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容