本文來(lái)自 CSDN 網(wǎng)站,作者 EasonApp。 作者專欄: https://blog.csdn.net/app_12062011
YOLOv1這是繼 RCNN,fast-RCNN 和 faster-RCNN之后,Ross Girshick 針對(duì) DL 目標(biāo)檢測(cè)速度問(wèn)題提出的另外一種框架。YOLO V1 其增強(qiáng)版本在 GPU 上能跑45fps,簡(jiǎn)化版本155fps。
1. 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 值。
其中如果有 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é)果。
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ā)散。
一個(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ù)中:
其他細(xì)節(jié),例如使用激活函數(shù)使用 leak RELU,模型用 ImageNet 預(yù)訓(xù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)。 YOLOv2YOLOv2:代表著目前業(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ù)。
▌簡(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ù)集。
▌更準(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 開(kāi)始,大多數(shù)的分類器都運(yùn)行在小于 256*256 的圖片上。而現(xiàn)在 YOLO 從 224*224 增加到了 448*448,這就意味著網(wǎng)絡(luò)需要適應(yīng)新的輸入分辨率。
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)更容易。
Dimension clusters 之前 Anchor Box 的尺寸是手動(dòng)選擇的,所以尺寸還有優(yōu)化的余地。 為了優(yōu)化,在訓(xùn)練集的 Bounding Boxes 上跑一下 k-means聚類,來(lái)找到一個(gè)比較好的值。
通過(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 更有顯著提高??傊褪钦f(shuō)明用聚類的方法是有效果的。 Direct location prediction 用 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%。 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),而不是樹(shù)型結(jié)構(gòu)。因?yàn)檎Z(yǔ)言是復(fù)雜的,狗這個(gè)詞既屬于‘犬科’又屬于‘家畜’兩類,而‘犬科’和‘家畜’兩類在 WordNet 中則是同義詞,所以不能用樹(shù)形結(jié)構(gòu)。 作者希望根據(jù) ImageNet 中包含的概念來(lái)建立一個(gè)分層樹(shù),為了建立這個(gè)分層樹(shù),首先檢查 ImagenNet 中出現(xiàn)的名詞,再在 WordNet 中找到這些名詞,再找到這些名詞到達(dá)他們根節(jié)點(diǎn)的路徑(在這里設(shè)為所有的根節(jié)點(diǎn)為實(shí)體對(duì)象(physical object)。在 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 類的 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ù)集合中的類別映射到分層樹(shù)中的同義詞上,例如上圖 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ù)集之間的大小代溝。 YOLOv3YOLOv3 在 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è)尺度。
基礎(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 切合.
|
|
來(lái)自: mscdj > 《計(jì)算機(jī)視覺(jué)》