1. 程式人生 > 實用技巧 >文獻翻譯——YOLOv3:An Incremental Improvement

文獻翻譯——YOLOv3:An Incremental Improvement

摘要

我們給YOLO提供一些更新! 我們做了一些小的設計更改以使其更好。 我們也訓練了這個非常龐大的新網路。它比上次(YOLOv2)稍大一些,但更準確。它仍然很快,所以不用擔心。在320×320的輸入下,YOLOv3只需執行22.2ms,獲得28.2的mAP,像SSD一樣準確,但速度快三倍。當我們看看老的0.5 IOU mAP檢測指標時,YOLOv3是相當不錯的。在Titan X上,它在51 ms內實現了57.9的AP50,與RetinaNet在198 ms內實現的57.5 AP50對比,效能相似但速度快3.8倍。與往常一樣,所有程式碼均在https://pjreddie.com/yolo/。

1.介紹

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

實際上,這就是今天把我們帶到這裡的原因。我們有一個付印截止日期,我們需要引用我對YOLO所做的一些隨機更新,但我們沒有源頭。因此,為技術報告做準備!

關於技術報告的好處是他們不需要介紹,你們都知道我們為什麼來到這裡。因此,介紹部分的結尾將為論文剩餘部分進行導引。首先我們會告訴你YOLOv3做了什麼。然後我們會告訴你我們是怎麼做的。我們還會告訴你我們嘗試過的一些沒有奏效的事情。最後,我們將考慮這一切意味著什麼。

2.詳細內容

這裡是YOLOv3的詳細內容:我們主要從其他人那裡獲得好點子。我們也訓練了一個比其他人更好的新分類器網路。我們將帶您從頭開始學習整個系統,以便您完全理解所有內容。

2.1 邊界框預測

遵循YOLO9000,我們的系統使用維度聚類(dimension clusters )作為錨盒(anchor boxes)來預測邊界框[13]。網路為每個邊界框預測4個座標,tx,ty,tw,th。 如果單元格從影象的左上角偏移了(cx,cy)並且先驗邊界框的寬度和高度為pw,ph,則預測對應於:

image-20200719213048979

在訓練期間,我們使用平方誤差損失的總和。如果一些座標預測的真值是t^*,則我們的梯度是用真值(由ground box計算得到)減去我們的預測:t^

*-t*。 通過反轉上面的方程可以很容易地計算出這個真值。

YOLOv3使用邏輯迴歸預測每個邊界框的objectness score。如果某個邊界框的先驗與真值的重合率比其他先驗邊界框高,那麼該邊界框的objectness score分值為1。如果某個邊界框的先驗不是最好的,但是確實與真值重疊了一定的閾值以上,我們會和[17]R-CNN一樣,忽略該預測。我們將這個閾值設為0.5。與[17]R-CNN不同,我們的系統為每個真值物件分配一個先驗邊界框。如果沒有將邊界框先驗分配給真值物件,則不會對座標或類預測造成任何損失,而只會引起objectness score損失。

YOLO V3 模型裡有個objectness標籤,開始我也是一臉懵逼。查閱資料後總結如下: objectness可以具象化理解為“置信度”;objectness對應的是布林值型別的二分類標籤通常是1和0(也有-1),理解成對應True和false邏輯值。 由於每個真實框只對應一個objectness標籤為正的預測框,如果有些預測框跟真實框之間的IoU很大,但並不是最大的那個,那麼直接將其objectness標籤設定為0當作負樣本,可能並不妥當。為了避免這種情況,YOLO-V3演算法設定了一個IoU閾值iou_thresh,當預測框的objectness不為1,但是其與某個真實框的IoU大於iou_thresh時,就將其objectness標籤設定為-1,不參與損失函式的計算。

2.2 類別預測

每個框使用多標籤分類來預測邊界框可能包含的類。我們不使用softmax,因為我們發現它對於高效能沒有必要,相反,我們只是使用獨立的邏輯分類器。 在訓練過程中,我們使用二元交叉熵損失來進行類別預測。這個公式有助於我們轉向更復雜的領域,如Open Image Dataset[5]。在這個資料集中有許多重疊的標籤(如女性和人物)。使用softmax會強加了一個假設,即每個框中只有一個類別,但通常情況並非如此。多標籤方法更好地對資料建模。

2.3 跨尺度預測

YOLOv3在3種不同尺度上預測邊界框。我們的系統使用與特徵金字塔網路相同的概念,來從這些尺度中提取特徵。從我們的基本特徵提取器中,我們添加了幾個卷積層。其中最後一個卷積層預測了一個三維張量,編碼了:邊界框預測,objectness分值,和類別預測。在COCO上的實驗中,在每個尺度上預測三個框,因此張量為NxNx[3x(4+1+80)],4個邊界框偏移量,1個objectness prediction,和80個類別預測。

接下來,我們從先前的2層中獲取特徵圖,並將其上取樣2倍。再使用級聯對原來網路的特徵圖和上取樣後的特徵圖進行合併。這種方法使我們能夠從上取樣的特徵中獲得更有意義的語義資訊,並從較早的特徵圖中獲得更細粒度的資訊。然後,我們再新增一些卷積層以處理這種組合的特徵圖,並最終預測相似的張量,儘管現在的大小是原來的兩倍。

我們再次執行相同的設計來預測最終尺度的方框。因此,我們對第三種尺度的預測將從所有先前的計算中獲益,並從早期的網路中獲得細粒度的特徵

我們仍然使用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)連線,並且明顯更大。它有53個卷積層,所以我們稱之為Darknet-53!

image-20200720152518167

這個新的網路比Darknet-19更強大,而且比ResNet-101、ResNet-152更有效。以下是在ImageNet上的結果。

image-20200720152801106

表2 骨幹對比。精度,數十億次操作,每秒十億次浮點操作以及各種網路的FPS。

每個網路都使用相同的設定進行訓練,並以256×256的單精度測試進行測試。執行時間是在Titan X上以256×256進行測量的。因此Darknet-53可與最先進的分類器媲美,但浮點運算更少,速度更快。Darknet-53比ResNet-101更好,速度提高了1.5倍。Darknet-53具有與ResNet-152相似的效能,並且快2倍。

Darknet-53還實現了每秒最高的測量浮點運算。這意味著網路結構可以更好地利用GPU,從而使其評估效率更高,速度更快。這主要是因為ResNets層太多了,效率不高。

2.5 訓練

我們仍然會訓練完整的影象,沒有使用難例挖掘(hard negative mining)和其他任何方法。我們使用多尺度訓練,大量的資料增強方法,批量規範化,以及所有標準的東西。 使用Darknet神經網路框架進行訓練和測試。

3. 我們如何做

YOLOv3效能很好,見表3。在COCO資料集上,它的mAP與SSD及其變體相當,但比它快三倍。儘管如此,與其它模型如RetinaNet相比還是稍顯落後。

image-20200720155245562

表3 認真地說,我是從[9]中偷走了所有這些表,他們花了很長時間才從頭開始製作。好的,YOLOv3一切正常。請記住,RetinaNet的影象處理時間要長3.8倍。YOLOv3比SSD變體好得多,可與最先進的模型在AP50指標上相媲美。

但是,當我們以IOU = 0.5(或圖表中的AP50)檢視mAP的“舊”檢測指標時,YOLOv3非常強大。它幾乎與RetinaNet相當,並且遠遠超過SSD變體。這表明YOLOv3是一個非常強大的檢測器,擅長於為目標生成像樣的邊界框。但是,隨著IOU閾值的增加,效能會顯著下降,這表明YOLOv3難以使框與目標完美對齊。

過去,YOLO在小目標檢測上表現一直不好。但是,現在我們看到了這種趨勢的逆轉。通過新的多尺度預測,我們看到YOLOv3具有相對較高的APS效能。但是,它在中型和大型目標上的效能相對較差。要深入瞭解這一點,還需要進行更多調查。

當我們在AP50指標上繪製精度與速度的關係圖(參見圖3)時,我們看到YOLOv3比其他檢測系統具有明顯優勢。即更快,更好。

image-20200720174254282

圖3.再次根據[9]進行改編,這顯示了在mAP上以0.5 IOU指標的速度/精度折衷。您可以說YOLOv3很好,因為它很高而且非常靠左。你可以引用自己的論文嗎?猜猜誰要嘗試,這個人→[16]。哦,我忘了,我們還修復了YOLOv2中的資料載入錯誤,該錯誤通過2 mAP的幫助而得以解決。只是潛入這裡不放棄佈局。

4. 我們嘗試了但無效的事情

在研究YOLOv3時,我們嘗試了很多東西。很多都行不通。這是我們能記住的東西。

**錨框x,y偏移量預測。**我們嘗試使用標準錨框預測機制,在該機制中,您可以使用線性啟用將x,y偏移量預測為框寬度或高度的倍數。我們發現此公式降低了模型的穩定性,並且效果不佳。

**線性x,y預測而不是邏輯預測。**我們嘗試使用線性啟用直接預測x,y偏移,而不是邏輯啟用。這導致mAP下降了兩點。

Focal Loss 我們嘗試使用焦點損失(focal loss)。它使我們的AP下降了約2點。YOLOv3可能已經對解決焦點損失正在嘗試解決的問題具有魯棒性,因為YOLOv3具有objectness預測和條件類預測。因此,對於大多數示例而言,分類預測不會帶來損失嗎?或者其他的東西?我們不確定。

**雙IOU閾值和真值分配。**Faster R-CNN在訓練期間使用兩個IOU閾值。如果預測值與真值的重疊率為0.7,則它是一個正例;如果在0.3-0.7之間則被忽略,小於0.3為負例。我們嘗試了類似的策略,但收效不佳。

我們非常喜歡我們當前的公式,似乎至少是區域性最優。這些技術中的某些可能最終會產生良好的結果,也許它們只需要進行一些調整即可穩定訓練。

5. 這一切意味著什麼

YOLOv3是一個好的檢測器,它又快又準。在COCO資料集上,使用IOU在0.5到0.95上的AP作為度量時,它並不是太好。但採用舊的0.5IOU的度量時,它的效能非常好。

為什麼我們無論如何要轉換指標?原始的COCO論文只是含糊不清的句子:”評估伺服器完成後,將新增對評估指標的完整討論”。Russakovsky等人說,人類很難區分.3和.5的IOU!令人驚訝的是,訓練人員以視覺方式檢查IOU為0.3的邊界框並將其與IOU為0.5的邊界框區分開來是非常困難的。人類很難分辨出差異,這有多重要?

但是也許更好的問題是:“既然有了探測器,我們將如何處理這些探測器?從事這項研究的許多人都在Google和Facebook。我想至少我們知道這項技術掌握得很好,而且絕對不會被用來收集您的個人資訊並將其出售給…。等等,您是說這就是它的用途?

好吧,那些為視覺研究投入大量資金的人是軍隊,他們從來沒有做過任何可怕的事情,例如用新技術殺死許多人,等等。

我非常希望大多數使用計算機視覺的人都在用它來做快樂,好事,例如統計國家公園中斑馬的數量[13],或者當貓徘徊在屋子裡時追蹤它們的蹤跡。但是計算機視覺已經被質疑使用,並且作為研究人員,我們有責任至少考慮到我們的工作可能造成的危害,並想出減輕它的方法。我們非常感激這個世界。

最後,不要@我。(因為我終於退出了Twitter)。