YOLO v1到YOLO v4(下)
YOLO v1到Y(jié)OLO v4(下)
Faster YOLO使用的是GoogleLeNet,比VGG-16快,YOLO完成一次前向過程只用8.52 billion 運算,而VGG-16要30.69billion,但是YOLO精度稍低于VGG-16。
· Draknet19
YOLO v2基于一個新的分類model,有點類似與VGG。YOLO v2使用3*3filter,每次Pooling之后都增加一倍Channels的數(shù)量。YOLO v2使用全局平均Pooling,使用Batch Normilazation來讓訓(xùn)練更穩(wěn)定,加速收斂,使model規(guī)范化。
最終的model–Darknet19,有19個卷積層和5個maxpooling層,處理一張圖片只需要5.58 billion次運算,在ImageNet上達(dá)到72.9%top-1精確度,91.2%top-5精確度。
· Training for classi?cation
網(wǎng)絡(luò)訓(xùn)練在 ImageNet 1000類分類數(shù)據(jù)集,訓(xùn)練了160epochs,使用隨機梯度下降,初始學(xué)習(xí)率為0.1, polynomial rate decay with a power of 4, weight decay of 0.0005 and momentum of 0.9
。訓(xùn)練期間使用標(biāo)準(zhǔn)的數(shù)據(jù)擴大方法:隨機裁剪、旋轉(zhuǎn)、變換顏色(hue)、變換飽和度(saturation), 變換曝光度(exposure shifts)。
在訓(xùn)練時,把整個網(wǎng)絡(luò)在更大的448*448分辨率上Fine Turnning 10個 epoches,初始學(xué)習(xí)率設(shè)置為0.001,這種網(wǎng)絡(luò)達(dá)到達(dá)到76.5%top-1精確度,93.3%top-5精確度。
· Training for detection
網(wǎng)絡(luò)去掉了最后一個卷積層,而加上了三個33卷積層,每個卷積層有1024個Filters,每個卷積層緊接著一個11卷積層, with the number of outputs we need for detection。
對于VOC數(shù)據(jù),網(wǎng)絡(luò)預(yù)測出每個網(wǎng)格單元預(yù)測五個Bounding Boxes,每個Bounding Boxes預(yù)測5個坐標(biāo)和20類,所以一共125個Filters,增加了Passthough層來獲取前面層的細(xì)粒度信息,網(wǎng)絡(luò)訓(xùn)練了160epoches,初始學(xué)習(xí)率0.001,dividing it by 10 at 60 and 90 epochs,a weight decay of 0.0005 and momentum of 0.9,數(shù)據(jù)擴大方法相同,對COCO與VOC數(shù)據(jù)集的訓(xùn)練對策相同。
Stronger
在訓(xùn)練的過程中,當(dāng)網(wǎng)絡(luò)遇到一個來自檢測數(shù)據(jù)集的圖片與標(biāo)記信息,那么就把這些數(shù)據(jù)用完整的YOLO v2 loss功能反向傳播這個圖片。當(dāng)網(wǎng)絡(luò)遇到一個來自分類數(shù)據(jù)集的圖片和分類標(biāo)記信息,只用整個結(jié)構(gòu)中分類部分的loss功能反向傳播這個圖片。
但是檢測數(shù)據(jù)集只有粗粒度的標(biāo)記信息,像“貓“、“ 狗”之類,而分類數(shù)據(jù)集的標(biāo)簽信息則更細(xì)粒度,更豐富。比如狗這一類就包括”哈士奇“”牛頭梗“”金毛狗“等等。所以如果想同時在監(jiān)測數(shù)據(jù)集與分類數(shù)據(jù)集上進(jìn)行訓(xùn)練,那么就要用一種一致性的方法融合這些標(biāo)簽信息。
再者,用于分類的方法,大多是用softmax layer方法,softmax意味著分類的類別之間要互相獨立的。而盲目地混合數(shù)據(jù)集訓(xùn)練,就會出現(xiàn)比如:檢測數(shù)據(jù)集的分類信息中”狗“這一分類,在分類數(shù)據(jù)集合中,就會有的不同種類的狗”哈士奇“”牛頭梗“”金毛“這些分類,這兩種數(shù)據(jù)集之間的分類信息不相互獨立。所以使用一種多標(biāo)簽的model來混合數(shù)據(jù)集,假設(shè)一個圖片可以有多個分類信息,并假定分類信息必須是相互獨立的規(guī)則可以被忽略。
· Hierarchical classification
WordNet的結(jié)構(gòu)是一個直接圖表(directed graph),而不是樹型結(jié)構(gòu)。因為語言是復(fù)雜的,狗這個詞既屬于‘犬科’又屬于‘家畜’兩類,而‘犬科’和‘家畜’兩類在wordnet中則是同義詞,所以不能用樹形結(jié)構(gòu)。
作者希望根據(jù)ImageNet中包含的概念來建立一個分層樹,為了建立這個分層樹,首先檢查ImagenNet中出現(xiàn)的名詞,再在WordNet中找到這些名詞,再找到這些名詞到達(dá)他們根節(jié)點的路徑(在這里設(shè)為所有的根節(jié)點為實體對象(physical object))。在WordNet中,大多數(shù)同義詞只有一個路徑,所以首先把這條路徑中的詞全部都加到分層樹中。接著迭代地檢查剩下的名詞,并盡可能少的把他們添加到分層樹上,添加的原則是取最短路徑加入到樹中。
為了計算某一結(jié)點的絕對概率,只需要對這一結(jié)點到根節(jié)點的整條路徑的所有概率進(jìn)行相乘。所以比如你想知道一個圖片是否是Norfolk terrier的概率,則進(jìn)行如下計算:
為了驗證這一個方法,在WordTree上訓(xùn)練Darknet19的model,使用1000類的ImageNet進(jìn)行訓(xùn)練,為了建立WordtTree 1K,把所有中間詞匯加入到WordTree上,把標(biāo)簽空間從1000擴大到了1369。在訓(xùn)練過程中,如果有一個圖片的標(biāo)簽是”Norfolk terrier“,那么這個圖片還會獲得”狗“(dog)以及“哺乳動物”(mammal)等標(biāo)簽。總之現(xiàn)在一張圖片是多標(biāo)記的,標(biāo)記之間不需要相互獨立。
如Figure5所示,之前的ImageNet分類是使用一個大softmax進(jìn)行分類。而現(xiàn)在,WordTree只需要對同一概念下的同義詞進(jìn)行softmax分類。
使用相同的訓(xùn)練參數(shù),這種分層結(jié)構(gòu)的Darknet19達(dá)到71.9%top-1精度和90.4%top-5精確度,精度只有微小的下降。
這種方法的好處:在對未知或者新的物體進(jìn)行分類時,性能降低的很優(yōu)雅(gracefully)。比如看到一個狗的照片,但不知道是哪種種類的狗,那么就高置信度(confidence)預(yù)測是”狗“,而其他狗的種類的同義詞如”哈士奇“”牛頭梗“”金毛“等這些則低置信度。
· Datasets combination with wordtree
用WordTree 把數(shù)據(jù)集合中的類別映射到分層樹中的同義詞上,例如上圖Figure 6,WordTree混合ImageNet與COCO。
·
Joint classification and detection
作者的目的是:訓(xùn)練一個Extremely Large Scale檢測器。所以訓(xùn)練的時候使用WordTree混合了COCO檢測數(shù)據(jù)集與ImageNet中的Top9000類,混合后的數(shù)據(jù)集對應(yīng)的WordTree有9418個類。另一方面,由于ImageNet數(shù)據(jù)集太大了,作者為了平衡一下兩個數(shù)據(jù)集之間的數(shù)據(jù)量,通過過采樣(oversampling)COCO數(shù)據(jù)集中的數(shù)據(jù),使COCO數(shù)據(jù)集與ImageNet數(shù)據(jù)集之間的數(shù)據(jù)量比例達(dá)到1:4。
YOLO9000的訓(xùn)練基于YOLO v2的構(gòu)架,但是使用3priors而不是5來限制輸出的大小。當(dāng)網(wǎng)絡(luò)遇到檢測數(shù)據(jù)集中的圖片時則正常地反方向傳播,當(dāng)遇到分類數(shù)據(jù)集圖片的時候,只使用分類的loss功能進(jìn)行反向傳播。同時作者假設(shè)IOU最少為 .3。最后根據(jù)這些假設(shè)進(jìn)行反向傳播。
使用聯(lián)合訓(xùn)練法,YOLO9000使用COCO檢測數(shù)據(jù)集學(xué)習(xí)檢測圖片中的物體的位置,使用ImageNet分類數(shù)據(jù)集學(xué)習(xí)如何從大量的類別中進(jìn)行分類。
為了評估這一方法,使用ImageNet Detection Task對訓(xùn)練結(jié)果進(jìn)行評估。
評估結(jié)果:
YOLO9000取得19.7mAP。
在未學(xué)習(xí)過的156個分類數(shù)據(jù)上進(jìn)行測試,mAP達(dá)到16.0。
YOLO9000的mAP比DPM高,而且YOLO有更多先進(jìn)的特征,YOLO9000是用部分監(jiān)督的方式在不同訓(xùn)練集上進(jìn)行訓(xùn)練,同時還能檢測9000個物體類別,并保證實時運行。
雖然YOLO9000對動物的識別性能很好,但是對類別為”sungalsses“或者”swimming trunks“這些衣服或者裝備的類別,它的識別性能不是很好,見table 7。這跟數(shù)據(jù)集的數(shù)據(jù)組成有很大關(guān)系。
總結(jié)
YOLO v2 代表著目前最先進(jìn)物體檢測的水平,在多種監(jiān)測數(shù)據(jù)集中都要快過其他檢測系統(tǒng),并可以在速度與精確度上進(jìn)行權(quán)衡。
YOLO 9000 的網(wǎng)絡(luò)結(jié)構(gòu)允許實時地檢測超過9000種物體分類,這歸功于它能同時優(yōu)化檢測與分類功能。使用WordTree來混合來自不同的資源的訓(xùn)練數(shù)據(jù),并使用聯(lián)合優(yōu)化技術(shù)同時在ImageNet和COCO數(shù)據(jù)集上進(jìn)行訓(xùn)練,YOLO9000進(jìn)一步縮小了監(jiān)測數(shù)據(jù)集與識別數(shù)據(jù)集之間的大小代溝。
文章還提出了WordTree,數(shù)據(jù)集混合訓(xùn)練,多尺寸訓(xùn)練等全新的訓(xùn)練方法。
五.YOLO v3
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ù)雜了不少,可以通過改變模型結(jié)構(gòu)的大小來權(quán)衡速度與精度。
速度對比如下:
YOLOv3 在實現(xiàn)相同準(zhǔn)確度下要顯著地比其它檢測方法快。時間都是在采用 M40 或 Titan X 等相同
GPU 下測量的。
簡而言之,YOLOv3 的先驗檢測(Prior detection)系統(tǒng)將分類器或定位器重新用于執(zhí)行檢測任務(wù)。他們將模型應(yīng)用于圖像的多個位置和尺度。而那些評分較高的區(qū)域就可以視為檢測結(jié)果。此外,相對于其它目標(biāo)檢測方法,使用了完全不同的方法。將一個單神經(jīng)網(wǎng)絡(luò)應(yīng)用于整張圖像,該網(wǎng)絡(luò)將圖像劃分為不同的區(qū)域,因而預(yù)測每一塊區(qū)域的邊界框和概率,這些邊界框會通過預(yù)測的概率加權(quán)。的模型相比于基于分類器的系統(tǒng)有一些優(yōu)勢。它在測試時會查看整個圖像,所以它的預(yù)測利用了圖像中的全局信息。與需要數(shù)千張單一目標(biāo)圖像的 R-CNN 不同,它通過單一網(wǎng)絡(luò)評估進(jìn)行預(yù)測。這令 YOLOv3 非常快,一般它比 R-CNN 快 1000 倍、比
Fast R-CNN 快 100 倍。
改進(jìn)之處:
·
1.多尺度預(yù)測 (類FPN)
·
2.更好的基礎(chǔ)分類網(wǎng)絡(luò)(類ResNet)和分類器 darknet-53,見下圖。
3.分類器-類別預(yù)測:
YOLOv3不使用Softmax對每個框進(jìn)行分類,主要考慮因素有兩個:
-
a.Softmax使得每個框分配一個類別(score最大的一個),而對于Open Images這種數(shù)據(jù)集,目標(biāo)可能有重疊的類別標(biāo)簽,因此Softmax不適用于多標(biāo)簽分類。
-
b.Softmax可被獨立的多個logistic分類器替代,且準(zhǔn)確率不會下降。
分類損失采用binary cross-entropy loss.
多尺度預(yù)測
每種尺度預(yù)測3個box, anchor的設(shè)計方式仍然使用聚類,得到9個聚類中心,將其按照大小均分給3中尺度.
·
尺度1: 在基礎(chǔ)網(wǎng)絡(luò)之后添加一些卷積層再輸出box信息.
·
尺度2: 從尺度1中的倒數(shù)第二層的卷積層上采樣(x2)再與最后一個16x16大小的特征圖相加,再次通過多個卷積后輸出box信息.相比尺度1變大兩倍.
·
尺度3: 與尺度2類似,使用了32x32大小的特征圖.
參見網(wǎng)絡(luò)結(jié)構(gòu)定義文件yolov3.cfg
基礎(chǔ)網(wǎng)絡(luò) Darknet-53
darknet-53
仿ResNet, 與ResNet-101或ResNet-152準(zhǔn)確率接近,但速度更快.對比如下:
主干架構(gòu)的性能對比
檢測結(jié)構(gòu)如下:
YOLOv3在mAP@0.5及小目標(biāo)APs上具有不錯的結(jié)果,但隨著IOU的增大,性能下降,說明YOLOv3不能很好地與ground truth切合.
邊框預(yù)測
圖 2:帶有維度先驗和定位預(yù)測的邊界框。邊界框的寬和高以作為離聚類中心的位移,并使用 Sigmoid 函數(shù)預(yù)測邊界框相對于濾波器應(yīng)用位置的中心坐標(biāo)。
仍采用之前的logis,其中cx,cy是網(wǎng)格的坐標(biāo)偏移量,pw,ph是預(yù)設(shè)的anchor box的邊長.最終得到的邊框坐標(biāo)值是b*,而網(wǎng)絡(luò)學(xué)習(xí)目標(biāo)是t*,用sigmod函數(shù)、指數(shù)轉(zhuǎn)換。
優(yōu)點
·
快速,pipline簡單.
·
背景誤檢率低。
·
通用性強。YOLO對于藝術(shù)類作品中的物體檢測同樣適用。它對非自然圖像物體的檢測率遠(yuǎn)遠(yuǎn)高于DPM和RCNN系列檢測方法。
但相比RCNN系列物體檢測方法,YOLO具有以下缺點:
·
識別物體位置精準(zhǔn)性差。
·
召回率低。在每個網(wǎng)格中預(yù)測兩個box這種約束方式減少了對同一目標(biāo)的多次檢測(R-CNN使用的region proposal方式重疊較多),相比R-CNN使用Selective Search產(chǎn)生2000個proposal(RCNN測試時每張超過40秒),yolo僅使用7x7x2個.
YOLO v.s Faster R-CNN
- 統(tǒng)一網(wǎng)絡(luò):
YOLO沒有顯示求取region proposal的過程。Faster R-CNN中盡管RPN與fast
rcnn共享卷積層,但是在模型訓(xùn)練過程中,需要反復(fù)訓(xùn)練RPN網(wǎng)絡(luò)和fast rcnn網(wǎng)絡(luò).
相對于R-CNN系列的"看兩眼"(候選框提取與分類,圖示如下),YOLO只需要Look Once.
- YOLO統(tǒng)一為一個回歸問題,而R-CNN將檢測結(jié)果分為兩部分求解:物體類別(分類問題),物體位置即bounding box(回歸問題)。
六.YOLOv4
YOLOv4包含以下信息:
·
Backbone:CSPDarkNet53
·
Neck:SPP,PAN
·
Head:YOLOv3
·
Tricks(backbone):CutMix、Mosaic、DropBlock、Label Smoothing
·
Modified(backbone): Mish、CSP、MiWRC
·
Tricks(detector):CIoU、CMBN、DropBlock、Mosaic、SAT、Eliminate grid sensitivity、Multiple Anchor、Cosine Annealing scheduler、Random training shape
·
Modified(tector):Mish、SPP、SAM、PAN、DIoU-NMS
參考
YOLO主頁 https://pjreddie.com/darknet/yolo/
YOLOv3: An Incremental Improvement
https://pjreddie.com/media/files/papers/YOLOv3.pdf
YOLO9000: Better, Faster, Stronger
https://arxiv.org/abs/1612.08242
You Only Look Once: Unified, Real-Time
Object Detection http://arxiv.org/abs/1506.02640
總結(jié)
以上是生活随笔為你收集整理的YOLO v1到YOLO v4(下)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: YOLO v1到YOLO v4(上)
- 下一篇: Google Pixel 超分辨率--S