YOLOv1: You Only Look Once: Unified, Real-Time Object Detection(你隻看一次:統一的,實時的物體檢測 )
文章位址:https://arxiv.org/abs/1506.02640
YOLOv2:YOLO9000:Better, Faster, Stronger(YOLO9000:更好、更快、更強)
文章位址:https://arxiv.org/abs/1612.08242
本人菜鳥出道,研一學生一枚,閱讀些許論文,為增加自己的印象并易于日後檢視,姑且将自己對于論文的一些了解發于該部落格之上,若有錯誤,請多多包涵,歡迎指教與讨論。
WHY YOLO:端到端檢測(end to end):将目标檢測作為單個回歸問題,直接從圖像像素到邊界框坐标和類機率
與之前的一些物體檢測方法(RCNN, Fast RCNN, Faster RCNN)不同,YOLO隻需一步就可以從圖檔得到候選區域及物體。是以YOLO檢測物體的速度很快Titan X: YOLO:45fps fast YOLO:150ps. 速度遠超RCNN等方法。
目标方法的比較
RCNN | Fast RCNN | Faster RCNN | YOLO |
區域建議子產品 (region proposal module) | 區域建議子產品 (region proposal module) | 區域建議網絡 (Region Proposal Networks) | YOLO Network |
特征提取網絡 (feature extraction network) | 檢測網絡 (detection network) | Fast RCNN | |
分類器 (classifier) | 定位器 (locator) | 特征提取(feature extraction ) | |
分類(classification) | 回歸 (regression) |
YOLOv1的檢測過程

使用YOLO來檢測物體的流程:
1、将圖像resize到448 * 448作為神經網絡的輸入
2、運作神經網絡,得到一些bounding box坐标、box中包含物體的置信度和class probabilities
3、進行非極大值抑制,篩選Boxes
Unified Detection(統一的檢測)
YOLO将輸入圖像劃分為S*S的栅格(grid),每個栅格負責檢測中心落在該栅格中的物體
每一個栅格預測B個邊界框(bounding boxes),以及這些邊界框的confidence scores,如果這個栅格中不存在一個 object,則confidence score應該為0;否則的話,confidence score則為 predicted bounding box與 ground truth box之間的 IOU(intersection over union)。
YOLO對每個邊界框有5個預測:x, y, w, h, 和 confidence:
x, y 為邊界框中心坐标 [0:1](1對于每個grid的邊長) w, h為邊界框長和寬 [0:1] (1對于圖像的邊長) confidence為預測其為目标的可能性
每個栅格(grid)還預測 C個類别物體的條件率, 測試階段,利用下式計算邊界框對于每個類的得分
是以 輸出形式為(S×S×(B×5+C)
因為YOLOv1中采用的降采樣為64,輸入圖檔尺寸為448*448,是以S=7, 因為采用了VOC2007,和VOC2012資料集,是以C=20,且每一個栅格采用了兩個邊界框,即B=2,是以輸出為(7*7*30)
YOLOv1在這個方法下造成了一個缺點:每個網格隻能預測1個類别,對中心點相同的物體會造成漏檢。該缺點在v2下得到解決。
輸出結構如下:
YOLOv1的網絡結構:
YOLO檢測網絡:24個卷積層和2個全連接配接層
YOLO網絡借鑒了GoogLeNet分類網絡結構。不同的是,YOLO未使用inception子產品,而是使用1x1卷積層(此處1x1卷積層的存在是為了跨通道資訊整合)+3x3卷積層簡單替代。
YOLOv1的訓練方法:
首先利用ImageNet 1000-class的分類任務資料集預訓練(Pretrain)卷積層。使用上述網絡中的前20 個卷積層,加上一個均值池化層,最後加一個全連接配接層,作為預訓練的網絡。
将預訓練的結果的前20層卷積層應用到檢測中,并加入剩下的4個卷積層及2個全連接配接。 同時為了擷取更精細化的結果,将輸入圖像的分辨率由 224* 224 提升到 448* 448。 (此處應該是沒有用448的圖檔進行微調,在v2中采用)
将所有的預測結果都歸一化到 0~1,使用 ?=0.1的Leaky RELU 作為激活函數
為了防止過拟合,在第一個全連接配接層後面接了一個 prob=0.5 的 Dropout(随機失活) 層。
YOLOv1的損失函數:
YOLO采用平方和誤差損失函數:
用來判斷該栅格内是否有物體存在, 是以YOLO可以很好的避免背景錯誤,false positives小。
為了均衡 8維的localization error和20維的classification error,論文加大了8維坐标的損失權重:λ_coord取5 減少了不包含對象的框的置信度預測的損失權重 λ_noobj取0.5 對有object的框的置信度損失權重取1 對不同大小的box預測中,相比于大box預測偏一點,小box預測偏相同的尺寸對IOU的影響更大,是以對長寬采用平方根
YOLOv1的實驗結論及優缺點:
優點: 平均準确率(mAP):63.4% 速度:45FPS 假陽性(将背景檢測為物體)的機率小
缺點:1、每個網格隻能預測1個類别,對中心點相同的物體會造成漏檢。 2、位置精确性差,對于小目标物體以及物體比較密集的也檢測不好
YOLOv2的改進:
YOLOv2在V1的版本之上提出了一些改進措施,來提升網絡的性能
tricks | YOLOv1 | YOLOv2 | |||||||
Batch Normalization | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
High Resolution Classifier | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
Convolutional | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |||
Anchor Boxes | ✔ | ✔ | |||||||
New network | ✔ | ✔ | ✔ | ✔ | ✔ | ||||
Dimension Clusters | ✔ | ✔ | ✔ | ✔ | |||||
Location prediction | ✔ | ✔ | ✔ | ✔ | |||||
Passthrough | ✔ | ✔ | ✔ | ||||||
Multi-Scale | ✔ | ✔ | |||||||
Hi-res detector | ✔ | ||||||||
VOC2007 mAP | 63.4 | 65.8 | 69.5 | 69.2 | 69.6 | 74.4 | 75.4 | 76.8 | 78.6 |
新的網絡結構darknet-19 : 減少了網絡層數:19個卷積層 取消了全連接配接層:采用全局均值池化代替 降低了參數量,加快了網絡的訓練速度
Batch Normalization (進行批量歸一化),避免了過拟合
High Resolution Classifier (高分辨率分類器),先使用224的圖檔進行預訓練,再使用448的圖檔進行微調
Convolutional With Anchor Boxes:1、使用Anchor Boxes來預測邊界框,将輸入圖像的尺寸從448 * 448縮減到416 * 416,使S為奇數,有中心栅格。 2、改變輸出形式為(S×S×(B×(5+C))使每個網格能預測多個物體
Dimension Clusters :采用k-means生成Anchor Boxes代替手動設計anchor(猜測對資料集采用k-means)
Fine-Grained Features(細粒度功能):參考恒等映射,增加一個直通單元,将上一層26*26*512->13*13*2048,與原始特征連接配接,提高性能
Multi-Scale Training(多尺度訓練):使用不同大小的圖檔訓練,大小為32的倍數(該模型的降采樣為32),每10個批次換,适應各個尺度,在速度與準确率之間做了折衷.(可以選擇滿足自己的運作速度下,精度最高的尺度)
圖檔大小 | mAP | FPS |
288 × 288 | 69.0 | 91 |
352 × 352 | 73.7 | 81 |
416 × 416 | 76.8 | 67 |
480 × 480 | 77.8 | 59 |
544 × 544 | 78.6 | 40 |
Direct location prediction: YOLOv2網絡為每個栅格預測5個邊界框(對應5個anchor boxes),每個bounding box預測5個坐标
YOLOv2結果:
YOLO9000(該方法看的有點懵):
stronger(聯合訓練分類和檢測資料的機制)将檢測和分類任務進行協同訓練,使用分層樹表示類别進行類别标記
問題1:softmax結果互斥:多标簽模型組合資料集, 分層分類(A:AB,AC:ACD,ACF),使用WordNet 有向圖->樹 WordTree
可以在每一個節點上對其分支進行softmax
與WordTree的資料集組合:将類别映射到樹中
使用COCO檢測資料集和完整的ImageNet版本中的前9000個類來建立我們的組合資料集,對COCO進行過采樣,使得1(coco):4 19.7 mAP
缺點:因為COCO沒有服裝裝置類,是以在該類效果差
參考文檔
https://arxiv.org/abs/1506.02640
https://arxiv.org/abs/1612.08242
https://blog.csdn.net/hrsstudy/article/details/70305791
https://blog.csdn.net/hrsstudy/article/details/70767950
https://blog.csdn.net/small_munich/article/details/79548149