1. 程式人生 > >深度學習論文翻譯解析(一):YOLOv3: An Incremental Improvement

深度學習論文翻譯解析(一):YOLOv3: An Incremental Improvement

cluster tina ble mac 曾經 media bject batch 因此

原標題: YOLOv3: An Incremental Improvement

原作者: Joseph Redmon Ali Farhadi

YOLO官網:YOLO: Real-Time Object Detection

https://pjreddie.com/darknet/yolo/

論文鏈接:https://pjreddie.com/media/files/papers/YOLOv3.pdf

YOLOv3論文地址:https://arxiv.org/abs/1804.02767

小編是一個機器學習初學者,打算認真研究論文,但是英文水平有限,所以論文翻譯中用到了Google,並自己逐句檢查過,但還是會有顯得晦澀的地方,如有語法/專業名詞翻譯錯誤,還請見諒,並歡迎及時指出。

技術分享圖片

摘要

  我們為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倍。

技術分享圖片

一,引言

有時候,一年你主要只是在玩手機,你知道嗎?今年我沒有做很多研究。我在Twitter上花了很多時間。玩了一下GAN。去年我留下了一點點的精力[12] [1];我設法對YOLO進行了一些改進。但是誠然,沒有什麽比這超級有趣的了,只是一小堆(bunch)改變使它變得更好。我也幫助了其他人的做一些研究。

  其實,這就是今天我要講的內容。我們有一篇論文快截稿了,但還缺一篇關於YOLO更新內容的文章作為引用來源,我們沒寫,所以以下就是我們的技術報告

  關於技術報告的好處是他們不需要介紹,你們都知道我寫這個的目的,對吧。所以這段“引言”可以作為你閱讀的一個指引。首先我們會告訴你YOLOv3的更新情況,其次我們會展示更新的方法以及一些失敗的嘗試,最後就是對這輪更新的意義的總結。

技術分享圖片

二,更新

  談到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用於更復雜的領域,如開放的圖像數據集。這個數據集中包含了大量重疊的標簽(如女性和人)。如果我們用的是softmax,它會強加一個假設,使得每個框只包含一個類別。但通常情況下這樣的做法是不妥的,相比之下,多標記的分類方法能更好的模擬數據。

技術分享圖片

2.3 跨尺度預測

  YOLOv3提供3種尺寸不一的邊界框。我們的系統用相似的概念提取這些尺寸的特征,以形成金字塔形網絡。我們在基本特征提取器中增加了幾個卷積層,並用最後的卷積層預測一個三維張量編碼:邊界框,框中目標和分類預測。在COCO數據集實驗中,我們的神經網絡分別為每種尺寸各預測了三個邊界框,所以得到的張量是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以及其他新型殘差網絡,由連續的3x3和1x1卷積層組合而成,當然,其中也添加了一些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,我想至少我們知道如果這項技術發展得完善,那他們絕對不會把它用來收集你的個人信息然後賣給……等等,你把事實說出來了!!哦哦。

  那麽其他巨資資助計算機視覺研究的人還有軍方,他們從來沒有做過任何可怕的事情,比如用新技術殺死很多人……呸呸呸

  我有很多希望!我希望大多數人會把計算機視覺技術用於快樂的、幸福的事情上,比如計算國家公園裏斑馬的數量[13],或者追蹤小區附近到底有多少貓[19]。但是計算機視覺技術的應用已經步入歧途了,作為研究人員,我們有責任思考自己的工作可能帶給社會的危害,並考慮怎麽減輕這種危害。我們非常珍惜這個世界。

  最後,不要在Twitter上@我,我已經棄坑了!!!!

參考文獻:https://zhuanlan.zhihu.com/p/35023499

深度學習論文翻譯解析(一):YOLOv3: An Incremental Improvement