「營銷號」式寫作——YOLOv3:一項漸進式的更新
編者按:嘗試過用卷積神經網路做物體檢測的同學想必都熟悉YOLO。繼先後發了兩篇「標題黨」論文後,近日,華盛頓大學的Joseph Redmon和Ali Farhadi又來搞事情了。這次他們祭出的是一篇「奇文」:YOLOv3: An Incremental Improvement。這短小的篇幅、這詭異的文風,這神奇的措辭,看得圍觀群眾一臉茫然。下面,請跟著論智去看看v3版YOLO究竟有哪些更新。
註:為儘力還原原文風格,本文將出現一些口語表達和意譯,如有不適,還請諒解。本文已邀請專業讀者校對,將不定期修正,如發現錯誤,歡迎留言指正,謝謝。
摘要
我們為YOLO提供了一系列更新!它包含一堆小設計,可以使系統的性能得到更新;也包含一個新訓練的、非常棒的神經網路,雖然比上一版更大一些,但精度也提高了。不用擔心,雖然體量大了點,它的速度還是有保障的。在輸入320×320的圖片後,YOLOv3能在22毫秒內完成處理,並取得28.2mAP的成績。它的精度和SSD相當,但速度要快上3倍。和舊版數據相比,v3版進步明顯。在Titan X環境下,YOLOv3的檢測精度為57.9 AP50,用時51ms;而RetinaNet的精度只有57.5 AP50,但卻需要198ms,相當於YOLOv3的3.8倍。
代碼地址:YOLO: Real-Time Object Detection
「論文」地址:https://pjreddie.com/media/files/papers/YOLOv3.pdf
公眾號地址:「營銷號」式論文——YOLOv3:一項漸進式的更新
1.引言
有時候啊,其實有些人一年的時間就那麼蹉跎了,你懂的。所以去年我也沒做什麼研究,就是在玩Twitter上花了點時間,在GAN上花了點時間,然後回頭一看,好像自己還空了一點精力出來[10][1],於是就想,要不更新下YOLO算了。說實在的,這只是一系列很小的、讓YOLO變得更完善的更新,也不是多麼有趣的事。另外,我還幫別人做了一點研究。
事實上這也是我今天要講的內容。我們有一篇論文快截稿了,但還缺一篇關於YOLO更新內容的文章作為引用來源,我們沒寫,所以以下就是我們的技術報告!
技術報告的偉大之處在於它不需要「引言」,你們都知道我們寫這個的目的對吧,所以這段「引言」可以作為你閱讀的一個指引。首先我們會告訴你YOLOv3的更新情況,其次我們會展示更新的方法以及一些失敗的嘗試,最後就是對這輪更新的意義的總結。
2.更新
談到YOLOv3的更新情況,其實大多數時候我們就是直接把別人的好點子拿來用了。我們還訓練了一個全新的、比其他網路更好的分類網路。為了方便你理解,讓我們從頭開始慢慢介紹。
2.1邊界框預測
在YOLO9000後,我們的系統開始用dimension clusters固定anchor box來選定邊界框。神經網路會為每個邊界框預測4個坐標:tx、ty、tw、th。如果目標cell距離圖像左上角的邊距是(cx, cy),且它對應邊界框的寬和高為pw、ph,那麼網路的預測值會是:
在訓練期間,我們會計算方差。如果預測坐標的ground truth是t?*,那相應的梯度就是ground truth值和預測值的差:t?*-t*。利用上述公式,我們能輕鬆推出這個結論。
YOLOv3用邏輯回歸預測每個邊界框的objectness score。如果當前預測的邊界框比之前的更好地與ground truth對象重合,那它的分數就是1。如果當前的預測不是最好的,但它和ground truth對象重合到了一定閾值以上,神經網路會忽視這個預測[15]。我們使用的閾值是.5。與[15]不同,我們的系統只為每個ground truth對象分配一個邊界框。如果先前的邊界框並未分配給相應對象,那它只是檢測錯了對象,而不會對坐標或分類預測造成影響。
2.2分類預測
每個邊界框都會使用多標記分類來預測框中可能包含的類。我們不用softmax,而是用單獨的邏輯分類器,因為我們發現前者對於提升網路性能沒什麼用。在訓練過程中,我們用二元交叉熵損失來預測類別。
這個選擇有助於我們把YOLO用於更複雜的領域,如開放的圖像數據集[5]。這個數據集中包含了大量重疊的標籤(如女性和人)。如果我們用的是softmax,它會強加一個假設,使得每個框只包含一個類別。但通常情況下這樣做是不妥的,相比之下,多標記的分類方法能更好地模擬數據。
2.3跨尺寸預測
YOLOv3提供了3種尺寸不一的邊界框。我們的系統用相似的概念提取這些尺寸的特徵,以形成金字塔形網路[6]。我們在基本特徵提取器中增加了幾個卷積層,並用最後的卷積層預測一個三維張量編碼:邊界框、框中目標和分類預測。在COCO數據集實驗中,我們的神經網路分別為每種尺寸各預測了3個邊界框,所以得到的張量是N ×N ×[3?(4+ 1+ 80)],其中包含4個邊界框offset、1個目標預測以及80種分類預測。
接著,我們從前兩個圖層中得到特徵圖,並對它進行2次上採樣。再從網路更早的圖層中獲得特徵圖,用element-wise把高低兩種解析度的特徵圖連接到一起。這樣做能使我們找到早期特徵映射中的上採樣特徵和細粒度特徵,並獲得更有意義的語義信息。之後,我們添加幾個卷積層來處理這個特徵映射組合,並最終預測出一個相似的、大小是原先兩倍的張量。
我們用同樣的網路設計來預測邊界框的最終尺寸,這個過程其實也有助於分類預測,因為我們可以從早期圖像中篩選出更精細的特徵。
和上一版一樣,YOLOv3使用的聚類方法還是K-Means,它能用來確定邊界框的先驗。在實驗中,我們選擇了9個聚類和3個尺寸,然後在不同尺寸的邊界框上均勻分割維度聚類。在COCO數據集上,這9個聚類分別是:(10×13)、(16×30)、(33×23)、(30×61)、(62×45)、(59×119)、(116 × 90)、(156 × 198)、(373 × 326)。
2.4特徵提取器
這次我們用了一個新的網路來提取特徵,它融合了YOLOv2、Darknet-19以及其他新型殘差網路,由連續的3×3和1×1卷積層組合而成,當然,其中也添加了一些shortcut connection,整體體量也更大。因為一共有53個卷積層,所以我們稱它為……別急哦…… Darknet-53!
這個新型網路在性能上遠超Darknet-19,但在效率上同樣優於ResNet-101和ResNet-152。下表是在ImageNet上的實驗結果:
每個網路都使用相同的設置進行訓練,輸入256×256的圖片,並進行單精度測試。運行環境為Titan X。我們得出的結論是Darknet-53在精度上可以與最先進的分類器相媲美,同時它的浮點運算更少,速度也更快。和ResNet-101相比,Darknet-53的速度是前者的1.5倍;而ResNet-152和它性能相似,但用時卻是它的2倍以上。
Darknet-53也可以實現每秒最高的測量浮點運算。這意味著網路結構可以更好地利用GPU,使其預測效率更高,速度更快。這主要是因為ResNets的層數太多,效率不高。
2.5訓練
我們只是輸入完整的圖像,並沒有做其他處理。實驗過程中涉及的多尺寸訓練、大量數據增強和batch normalization等操作均符合標準。模型訓練和測試的框架是Darknet神經網路。
3.我們做了什麼
YOLOv3的表現非常好!請參見表3,就COCO奇怪的平均mAP成績而言,它與SSD變體相當,但速度提高了3倍。儘管如此,它仍然比像RetinaNet這樣的模型要差一點。
如果仔細看這個表,我們可以發現在IOU=.5(即表中的AP50)時,YOLOv3非常強大。它幾乎與RetinaNet相當,並且遠高於SSD變體。這就證明了它其實是一款非常靈活的檢測器,擅長為檢測對象生成合適的邊界框。然而,隨著IOU閾值增加,YOLOv3的性能開始同步下降,這時它預測的邊界框就不能做到完美對齊了。
在過去,YOLO一直被用於小型對象檢測。但現在我們可以預見其中的演變趨勢,隨著新的多尺寸預測功能上線,YOLOv3將具備更高的APS性能。但是它目前在中等尺寸或大尺寸物體上的表現還相對較差,仍需進一步的完善。
當我們基於AP50指標繪製精度和速度時(見圖3),我們發現YOLOv3與其他檢測系統相比具有顯著優勢。也就是說,它的速度正在越來越快。
4.失敗的嘗試
我們在研究YOLOv3時嘗試了很多東西,以下是我們還記得的一些失敗案例。
Anchor box坐標的偏移預測。我們嘗試了常規的Anchor box預測方法,比如利用線性激活將坐標x、y的偏移程度預測為邊界框寬度或高度的倍數。但我們發現這種做法降低了模型的穩定性,且效果不佳。
用線性方法預測x,y,而不是使用邏輯方法。我們嘗試使用線性激活來直接預測x,y的offset,而不是邏輯激活。這降低了mAP成績。
focal loss。我們嘗試使用focal loss,但它使我們的mAP降低了2點。 對於focal loss函數試圖解決的問題,YOLOv3從理論上來說已經很強大了,因為它具有單獨的對象預測和條件類別預測。因此,對於大多數例子來說,類別預測沒有損失?或者其他的東西?我們並不完全確定。
雙IOU閾值和真值分配。在訓練期間,Faster RCNN用了兩個IOU閾值,如果預測的邊框與.7的ground truth重合,那它是個正面的結果;如果在[.3—.7]之間,則忽略;如果和.3的ground truth重合,那它就是個負面的結果。我們嘗試了這種思路,但效果並不好。
我們對現在的更新狀況很滿意,它看起來已經是最佳狀態。有些技術可能會產生更好的結果,但我們還需要對它們做一些調整來穩定訓練。
5.更新的意義
YOLOv3是一個很好的檢測器,它速度快,精度又高。雖然基於.3和.95的新指標,它在COCO上的成績不如人意,但對於舊的檢測指標.5 IOU,它還是非常不錯的。
所以為什麼我們要改變指標呢?最初的COCO論文里只有這樣一句含糊其詞的話:一旦評估完成,就會生成評估指標結果。Russakovsky等人曾經有一份報告,說人類很難區分.3與.5的IOU:「訓練人們用肉眼區別IOU值為0.3的邊界框和0.5的邊界框是一件非常困難的事」。[16]如果人類都難以區分這種差異,那這個指標有多重要?
但也許更好的一個問題是:現在我們有了這些檢測器,我們能用它們來幹嘛?很多從事這方面研究的人都受雇於Google和Facebook,我想至少我們知道如果這項技術發展得完善,那他們絕對不會把它用來收集你的個人信息然後賣給……等等,你把事實說出來了!!哦哦。
那麼其他巨資資助計算機視覺研究的人還有軍方,他們從來沒有做過任何可怕的事情,比如用新技術殺死很多人……呸呸呸
我有很多希望!我希望大多數人會把計算機視覺技術用於快樂的、幸福的事情上,比如計算國家公園裡斑馬的數量[11],或者追蹤小區附近到底有多少貓[17]。但是計算機視覺技術的應用已經步入歧途了,作為研究人員,我們有責任思考自己的工作可能帶給社會的危害,並考慮怎麼減輕這種危害。我們非常珍惜這個世界。
最後,不要在Twitter上@我,我已經棄坑了!!!!
(不聽不聽不聽,論智給你開個傳送門:https://twitter.com/pjreddie?lang=zh-cn)
彩蛋
偷偷告訴你哦,那個一作Joseph Redmon,他的簡歷長這樣~
但他本人實際上長這樣哦~
Friendship is Magic!!!!!!!
參考文獻
[1] Analogy. Wikipedia, Mar 2018. 1
[2] C.-Y. Fu, W. Liu, A. Ranga, A. Tyagi, and A. C. Berg. Dssd: Deconvolutional single shot detector
[3] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition.
[4] J. Huang, V. Rathod, C. Sun, M. Zhu, A. Korattikara, A. Fathi, I. Fischer, Z. Wojna, Y. Song, S. Guadarrama, et al. Speed/accuracy trade-offs for modern convolutional object
[5] I. Krasin, T. Duerig, N. Alldrin, V. Ferrari, S. Abu-El-Haija, A. Kuznetsova, H. Rom, J. Uijlings, S. Popov, A. Veit, S. Belongie, V. Gomes, A. Gupta, C. Sun, G. Chechik, D. Cai, Z. Feng, D. Narayanan, and K. Murphy. Openimages: A public dataset for large-scale multi-label and multi-class image classification.
[6] T.-Y. Lin, P. Dollar, R. Girshick, K. He, B. Hariharan, and S. Belongie. Feature pyramid networks for object detection. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 2117–2125, 2017. 2, 3
[7] T.-Y. Lin, P. Goyal, R. Girshick, K. He, and P. Dollar. ′Focal loss for dense object detection.
[8] T.-Y. Lin, M. Maire, S. Belongie, J. Hays, P. Perona, D. Ramanan, P. Dollar, and C. L. Zitnick. Microsoft coco: Common objects in context. In European conference on computer vision, pages 740–755. Springer, 2014.
[9] W. Liu, D. Anguelov, D. Erhan, C. Szegedy, S. Reed, C.Y. Fu, and A. C. Berg. Ssd: Single shot multibox detector. In European conference on computer vision, pages 21–37. Springer, 2016.
[10] I. Newton. Philosophiae naturalis principia mathematica. William Dawson & Sons Ltd., London, 1687.
[11] J. Parham, J. Crall, C. Stewart, T. Berger-Wolf, and D. Rubenstein. Animal population censusing at scale with citizen science and photographic identification. 2017.
[12] J. Redmon. Darknet: Open source neural networks in c
[13] J. Redmon and A. Farhadi. Yolo9000: Better, faster, stronger. In Computer Vision and Pattern Recognition (CVPR), 2017 IEEE Conference on, pages 6517–6525. IEEE, 2017. 1, 2, 3
[14] J. Redmon and A. Farhadi. Yolov3: An incremental improvement. arXiv, 2018.
[15] S. Ren, K. He, R. Girshick, and J. Sun. Faster r-cnn: Towards real-time object detection with region proposal networks.
[16] O. Russakovsky, L.-J. Li, and L. Fei-Fei. Best of both worlds: human-machine collaboration for object annotation. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 2121–2131, 2015.
[17] M. Scott. Smart camera gimbal bot scanlime:027, Dec 2017.
[18] A. Shrivastava, R. Sukthankar, J. Malik, and A. Gupta. Beyond skip connections: Top-down modulation for object detection.
[19] C. Szegedy, S. Ioffe, V. Vanhoucke, and A. A. Alemi. Inception-v4, inception-resnet and the impact of residual connections on learning. 2017.
推薦閱讀:
※[計算機視覺論文速遞] 2018-04-03
※圖像檢索之Large-Scale Image Retrieval with Attentive Deep Local Features
※傳統演算法和深度學習的結合和實踐,解讀與優化 deepfake
※KCF學習筆記 【目標跟蹤】
※【小林的OpenCV基礎課 10】Canny邊緣檢測