Poly-YOLO 学习
關于<POLY-YOLO:HIGHER SPEED,MORE PRECISE DETECTION AND INSTANCE SEGMENTATION FOR YOLOV3> 論文學習
????????Poly-YOLO建立在YOLOv3的原始思想的基礎上,并消除了它的兩個弱點:標簽重寫和anchor分配不平衡。
標簽重寫:由于YOLO系列都是基于圖像cell柵格作為單元進行檢測,以416*416大小的圖像為例,在圖像分辨率隨著卷積下降到13*13的特征圖大小時,這時候特征圖一個像素點的感受野是32*32大小的圖像patch,YOLOV3在訓練時候,如果出現相同兩個目標的中心位于同一個cell,且分配給同一個anchor,那么前面一個目標就會被后面目標重寫,也就是說兩個目標由于中心距離太近以至于在特征圖上將采樣成為同一個像素點的時候,這時候其中有個目標會被重寫而無法進行到訓練當中。結果導致,網絡訓練時會忽略一些目標,導致正樣本數量非常少,特別是存在于分辨率比較低的特征圖中。
Anchor分配不平衡:yolov3中采用kmeans算法聚類得到特定的9個anchor,并且以每三個為一組,大輸出圖檢測小物體,中等輸出圖和小輸出圖層檢測大物體)。一個特定的GroundTruth框與哪個scale的anchor匹配度最高,就會被指定給哪個scale,正常情況下應該是不同大小的物體會被這三組anchor分配到不同預測層進行預測。但是這種分配機制只適用于標準分布M~ U(0,r),然而,在實際問題中,目標框大小不會分布的這么理想化,就會造成某些尺度的特征層未被充分利用。
1)標簽重寫改進
????????1、增加輸入圖片分辨率大小;
????????2、增加輸出特征圖大小實現。
????????Poly-YOLO作者的做法是增加輸出特征圖大小。
2)Anchor分配問題的改進
KMeans聚類算法詳解:KMeans聚類算法詳解 - 知乎“如果把人工智能比作一塊大蛋糕,監督學習只是上面的一層奶油“。日常生活中,從人臉識別、語音識別到搜索引擎,我們看到越來越多人工智能領域的算法逐漸走向落地。盡管全球每日新增數據量以PB或EB級別增長,但是…https://zhuanlan.zhihu.com/p/184686598
對于kmean聚類帶來的問題,有兩種解決辦法:
kmean聚類流程不變,但是要避免出現小物體被分配到小輸出特征圖上面訓練和大物體被分配到大輸出特征圖上面訓練問題,具體就是首先基于網絡輸出層感受野,定義三個大概范圍尺度,然后設置兩道閾值,強行將三個尺度離散化分開;然后對bbox進行單獨三次聚類,每次聚類都是在前面指定的范圍內選擇特定的bbox進行,而不是作用于整個數據集。主要是保證kmean僅僅作用于特定bbox大小訪問內即可,就可以避免上面問題了。但是缺點也非常明顯,如果物體大小都差不多,那么幾乎僅僅有一個輸出層有物體分配預測,其余兩個尺度在那里空跑,浪費資源。
就只有一個輸出層,所有物體都是在這個層預測即可。可以避免kmean聚類問題,但是為了防止標簽重寫,故把輸出分辨率調高,此時就完美了。作者實際上采用的是1/4尺度輸出,屬于高分辨率輸出,重寫概率很低。
根據上圖可以發現:
????????(1) 網絡方面,為了減少參數量,首先減少了通道數目,同時為了提高性能,引入了squeeze-and-excitation(SE)單元來加強特征
?通過對卷積得到的C個feature map進行處理,得到一個和通道數一樣的一維向量作為每個通道的評價分數,然后將該分數分別施加到對應的通道上,得到其結果,就在原有的基礎上只添加了一個模塊。通過(SE)塊和提高輸出分辨率,降低了計算速度。由于速度是YOLO的主要優勢,作者在特征提取階段減少了卷積濾波器的數量,即設置為原始數的75%。
????????(2) 和YOLOv3的最大區別是輸出層是一個,但是也采用了多尺度融合方式
????????(3) neck部分提出了hypercolumn+stairstep上采樣操作
?左側是HC方案插圖,右側是帶有階梯的HC
損失函數如上圖,顯示了使用標準超柱技術和階梯超柱技術在損失方面的差異,細線表示特定的學習運行,粗線表示運行的平均值
使用Poly-YOLO進行實例分段
? 1)多邊形框原則
????????通過不規則四邊形檢測更精確地檢測YOLO,證明了四邊形檢測的擴展收斂速度更快,還證明了基于四角逼近的分類方法比基于矩形逼近的分類方法具有更高的精度。
????????該方法的局限性在于檢測到的頂點數目固定,即4個。在這里,引入了一種多邊形表示,它能夠檢測具有不同數量頂點的對象,而不需要使用會降低處理速度的循環神經網絡。為了了解邊界盒檢測和基于多邊形的檢測質量之間的實際區別。
左圖:矩形網格,取自YOLOv3。對象的邊界框有其中心的單元格可以預測其邊界框的坐標。右圖:Poly-YOLO中基于圓形扇區的網格,用于多邊形頂點的檢測。網格的中心與對象的包圍框的中心重合。然后,每個圓形扇形負責檢測特定頂點的極坐標。沒有頂點的扇區,其置信度應該等于零。?
? ?2)與Poly-YOLO集成
????????檢測邊界多邊形的思想是普遍的,可以很容易地集成到一個任意的神經網絡。一般來說,需要修改三個部分:數據準備的方式、體系結構和丟失函數。在Poly-YOLO,輸出層中卷積濾波器的數量必須更新。當我們只檢測box時,最后一層輸出維度為n=(+ 5),=9 (anchor個數),為類別數。對基于多邊形的目標檢測進行集成,得到n=(+ 5+ 3),為每個多邊形檢測到的頂點數的最大值。
?損失函數:
?(i, j) 是對邊界框中心的預測的損失,
(i, j) 是對框的尺寸的損失,
?(i, j) 是置信度損失,
?(i, j) 是類預測損失,
?(i, j) 是由距離,角度和頂點置信度預測組成的邊界多邊形的損失,
∈{0,1}是一個常數,指示第i個單元格和第j個錨點是否包含標簽。
?
論文地址:https://arxiv.org/pdf/2005.13243.pdf
源代碼:IRAFM AI / Poly-YOLO · GitLab
參考文章:Poly-YOLO:更快,更精確的檢測(主要解決Yolov3兩大問題,附源代碼)
參考視頻:AI論技第一期《目標檢測模型 Poly-YOLO詳解與應用》_嗶哩嗶哩_bilibili
總結
以上是生活随笔為你收集整理的Poly-YOLO 学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Arduino温度传感器全系列使用详解
- 下一篇: 自贸港有志青年,捂碳星球旧衣回收项目,成