Day03 YOLOv3 (即時物件偵測)


前言


YOLOv3是目前對於物件偵測被最廣泛應用的一項技術,先在影像中框出bounding box選出懷疑候選的區域,再針對bounding box裡的資訊截取特徵值解析並分類。YOLOv3是YOLO的改良版,輸出禎率較其他物件偵測方法(SSD, RetinaNet, R-FCN)快。

進化版的YoloV3參考其他的論文對本身的模型做優化,效果十分顯著。,更改的地方入下:

  1. 使用 RESNet 網路 (Residual Network)
    新的基底網路為 Darknet-53,有 53 層,隨著網絡層數不斷加深 (數量級從 20~30 層到 ~50 層),採用了一般類神經網路加深時常用的 ResNet 結構來解決梯度問題

  2. 使用 FPN 網路 (Feature Pyramid Networks)
    使用 FPN 多層級預測架構以提升小物體預測能力,特徵層從單層 13x13 變成了多層 13x13、26x26 和 52x52,單層預測 5 種 bounding box 變成每層 3 種 bounding box (共 9 種),詳見網路結構圖。使用 FPN 的架構可以讓低層較佳的目標位置和高層較佳的語義特徵融合,並且在不同特徵層獨立進行預測,使得小物體檢測改善效果十分明顯。

看到這篇翻譯可以想像作者真的是在很短的時間內趕出這份文章,非常的口語,文中用了很多口語化的語助詞。

內容翻譯:

"YOLOv3: An Incremental Improvement", arXiv:1804.02767v1 [cs.CV]

0. 摘要

我們向YOLO提供一些更新! 我們做了一些小的設計更改以使其更好。 我們還培訓了這個相當龐大的新網絡。 比上次要大一點,但更準確。 不過速度還是很快的,請放心。 YOLOv3以320×320的速度運行時,在28.2 mAP的速度下運行時間為22毫秒,與SSD一樣精確,但速度提高了三倍。 當我們查看舊的.5 IOU mAP檢測指標YOLOv3時,它是相當不錯的。 在Titan X上,它在51毫秒內可達到57.9 AP50,而RetinaNet在198毫秒內可達到57.5 AP50,性能相似,但快3.8倍。一如往常,所有的code都可以在以下網頁查找
https://pjreddie.com/yolo/.

1. 介紹

你知道嗎?有時候,您只是敷衍過了一年。我今年沒有做很多研究。在Twitter上花費了大量時間。稍微研究一些GAN。去年給我留下了一點動力;我設法對YOLO進行了一些改進。但是,老實說,沒有什麼是超級有趣的。我只是幫助了其他人的研究,做了一些使它變得更好的小改動。

實際上,這就是今天把我們帶到這裡的原因。最終版截止日期快要到了,我們需要我對YOLO的引用進行一些隨機更新,但沒有來源。因此,準備接收一份技術報告吧!

技術報告的優點在於它們不需要介紹,大家都知道我們為什麼在這裡。 因此,本引言的結尾將為本文的其餘部分指明路標。 首先,我們將告訴您與YOLOv3達成的交易。 然後,我們將告訴您我們的做法。 我們還將告訴您一些我們嘗試過的無效的操作。 最後,我們將考慮所有這些。

2. 處理

因此,這是與YOLOv3達成的交易:我們大多從別人那裡汲取了好主意。 我們還培訓了一個新的分類器網絡,該網絡要比其他分類器更好。 我們將帶您從頭開始學習整個系統,以便您可以全部了解。

圖1.我們根據Focal Loss論文[9]修改了該圖。 YOLOv3的運行速度明顯快於其他具有可比性能的檢測方法。 從M40或Titan X來看,它們基本上是相同的GPU。

2.1 邊界框預測

遵循YOLO9000,我們的系統使用尺寸簇作為錨定框來預測邊界框[15]。 網絡為每個邊界框tx,ty,tw,th預測4個坐標。 如果單元格從圖像的左上角偏移了(cx,cy)並且先驗邊界框的寬度和高度為pw,ph,則預測對應於:

在訓練期間,我們使用平方誤差損失之和。 如果某個坐標預測的地面真實值為tˆ ,那麼我們的梯度就是地面真實值(從groundtruth框計算得出)減去我們的預測:tˆ − t * 。 通過倒轉上述公式,可以容易地計算出地面真實值

YOLOv3使用邏輯回歸預測每個邊界框的客觀性得分。 如果邊界先驗框與地面真值對象的重疊量大於任何其他邊界先驗框,則應為1。 如果先驗邊界框不是最好的,但確實與地面真實對象重疊超過某個閾值,我們將忽略預測[17]。 我們使用的閾值為.5。 與[17]不同,我們的系統僅為每個地面真值對象分配一個邊界框。 如果沒有將邊界框先驗分配給地面真理對象,則不會對坐標或類別預測造成任何損失,而只會造成客觀性的損失。

圖2.具有尺寸先驗和位置預測的邊界框。 我們將預測框的寬度和高度,使其偏離群集質心。 我們使用S形函數預測盒子相對於過濾器應用位置的中心坐標。 這個數字自[15]被公然self竊。

2.2 分類預測

每個框使用多標籤分類預測邊界框可能包含的類。 我們不使用softmax,因為我們發現它不需要良好的性能,而是僅使用獨立的邏輯分類器。 在訓練期間,我們使用二元交叉熵損失進行分類預測

當我們移至更複雜的領域(例如“開放圖像”數據集[7])時,這種表述方式會有所幫助。 在此數據集中,有許多重疊的標籤(例如,女人和人)。 使用softmax會假設每個盒子只有一個類,而事實並非如此。 多標籤方法可以更好地對數據建模。

2.3 跨尺度的預測

YOLOv3預測3種不同比例的盒子。 我們的系統使用相似的概念從金字塔尺度中提取特徵,以金字塔網絡為特徵[8]。 從基本特徵提取器中,我們添加了幾個卷積層。 這些中的最後一個預測3D張量編碼邊界框,客觀性和類預測。 在我們用COCO [10]進行的實驗中,我們預測每個尺度上有3個盒子,因此對於4個邊界框偏移,1個客觀性預測和80個類預測,張量為N×N×[3 * (4 + 1 + 80)]。

接下來,我們從先前的2層中獲取特徵圖,並將其上採樣2倍。 我們還從網絡的早期獲取了一個特徵圖,並使用級聯將其與我們的上採樣特徵合併。 這種方法使我們能夠從上採樣的特徵中獲取更有意義的語義信息,並從較早的特徵圖中獲得更細粒度的信息。 然後,我們再添加一些卷積層來處理此組合的特徵圖,並最終預測相似的張量,儘管現在的大小是原來的兩倍。

我們再執行一次相同的設計,以預測最終比例的盒子。 因此,我們對第3層的預測受益於所有先前的計算以及網絡早期的細粒度功能。

我們仍然使用k均值聚類來確定邊界框先驗。 我們只是隨意選擇了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卷積層,但現在也有了一些快捷連接,並且規模更大。 它有53個卷積層,所以我們稱它為....等待它..... Darknet-53!

這個新網絡比Darknet19強大得多,但仍比ResNet-101或ResNet-152高效。 這是一些ImageNet結果:

表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 訓練

我們仍然會訓練完整的圖像,沒有硬的負面挖掘或任何類似的東西。 我們使用多尺度培訓,大量數據擴充,批處理規範化以及所有標準內容。 我們使用Darknet神經網絡框架進行培訓和測試[14]。

3. 我們的做法

YOLOv3很好!參見表3。就COCO而言,平均平均AP度量標準很奇怪,與SSD變體相當,但速度提高了3倍。不過,在此指標上,它仍然比其他模型(例如RetinaNet)落後很多

但是,當我們以IOU = .5(或圖表中的AP50)查看mAP的“舊”檢測指標時,YOLOv3非常強大。它幾乎與RetinaNet相當,並且遠遠超過SSD版本。這表明YOLOv3是一款非常強大的檢測器,擅長於為物體製造出體面的盒子。但是,隨著IOU閾值的增加,性能會顯著下降,這表明YOLOv3難以使框與對象完美對齊。

過去,YOLO一直在努力處理小物件。然而,現在我們看到了這種趨勢的逆轉。通過新的多尺度預測,我們看到YOLOv3具有相對較高的APS性能。但是它在中型和大型對像上的性能相對較差。要深入了解這一點,還需要進行更多調查。

4. 我們嘗試過的一些行不通的作法

在開發YOLOv3時,我們嘗試了很多東西,很多都行不通。以下是我們記下的東西。

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

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

失焦
我們嘗試使用焦點損失,它降低了我們的mAP大約2點。 YOLOv3可能已經對焦點損失正在嘗試解決的問題具有魯棒性,因為它具有獨立的客觀性預測和條件類預測。因此,對於大多數示例而言,分類預測不會帶來損失嗎? 或者其他的東西?這我們不太確定。

表3.我很認真地只是從[9]獲取了這些表格,它們花了很長時間才能從頭開始製作。 好的,YOLOv3一切正常。 請記住,RetinaNet的圖像處理時間要長3.8倍。 YOLOv3比SSD變種要好得多,可與AP50指標上的最新模型相媲美。

圖3.再次根據[9]進行了修改,這次顯示了以.5 IOU度量標准在mAP上的速度/精度折衷。你也可以說YOLOv3很好,因為它很高,而且位於最左側。可以引用自己的論文嗎?猜猜誰要嘗試,這個人→[16]。 哦,我忘了,我們還修復了YOLOv2中的數據加載錯誤,該錯誤通過2 mAP的幫助而得以解決。只是在這裡偷偷摸摸,不放棄佈局。

雙IOU閾值和真值分配
更快的RCNN在訓練期間使用兩個IOU閾值。如果預測與基本事實的重疊為0.7,則為正例;由[.3-.7]進行的預測將被忽略;對於所有基本真實對象,小於0.3則為負例。我們嘗試了類似的策略,但未取得良好的效果。

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

5. 這一切意味著什麼

YOLOv3是一個很好的檢測器:快速,準確。 在.5至.95 IOU度量標準之間的COCO平均AP效果不佳。但是,對於.5 IOU的舊檢測指標而言,這非常好。

為什麼我們仍要轉換指標? 原始的COCO論文只是這樣一個含糊的句子:“評估服務器完成後,將添加對評估指標的完整討論”。 Russakovsky等人報告說,人類很難區分.3和.5的IOU! “令人驚訝的是,要訓練人員視覺檢查IOU為0.3的邊界框並將其與IOU為0.5的邊界框區分開。如果人類很難分辨出差異,那麼這有多重要?

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

其他為視覺研究投入大量資金的人是軍隊,他們從未做過任何可怕的事情,例如用新技術殺死許多人,等等.....

我非常希望大多數使用電腦視覺的人都在用它做快樂的好事,例如計算國家公園中斑馬的數量[13]或在貓徘徊在房屋周圍時跟踪它們的貓[19]。但是電腦視覺已經被質疑使用,作為研究人員,我們有責任至少考慮我們的工作可能造成的危害並想辦法減輕它。 我們欠世界那麼多。

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

補充資料

IOU (Interception of Union):評估Bounding Box準確率的衡量標準

參考資料

  1. Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi"You Only Look Once: Unified, Real-Time Object Detection"
  2. Joseph Redmon and Ali Farhadi, "YOLOv3: An Incremental Improvement", arXiv:1804.02767v1 [cs.CV]
  3. Yolo:基於深度學習的物件偵測 (含YoloV3)
#YOLO #Deep Learning #AI #Object Detection







你可能感興趣的文章

實作 PHP API & 留言板 SPA (番外篇:實作載入更多功能)

實作 PHP API & 留言板 SPA (番外篇:實作載入更多功能)

展開與其餘參數

展開與其餘參數

Day 3 - MongoDB 的 Aggregation 教學

Day 3 - MongoDB 的 Aggregation 教學






留言討論