matlab基于ssd的角点匹配_基于关键点的目标检测
0 1
前言:基于錨點的目標檢測方法
在基于關鍵點(key points)的目標檢測方法出現之前,主流目標檢測方法一般先設置一些預先定義好的 錨點 (anchor boxes)。 作為預測物體框的參考,神經網絡只需要預測實際的物體框相對于這些錨點的偏移。 這樣模型就能在一個位置預測多個不同尺寸的物體框,并且預測相對偏移比預測絕對值要容易一些。
最初,這些錨點的大小是人工設置的,如Faster R-CNN [1]和SSD [2]中使用的錨點。 由于模型預測的是相對偏移,一般來說比較接近錨點的物體框預測要更為準確一些,因此YOLOv2[3]中使用了k-means聚類的方法來選擇與訓練集樣本最為匹配的錨點。
基于錨點的目標檢測方法 缺點 在于需要生成大量的錨點以更好的覆蓋整個圖片中的物體,并且需要人工設計一些參數,比如錨點的數量、大小等。
圖2 SSD中使用的錨點
0 2
基于關鍵點的目標檢測方法
1. CornerNet [4]
CornerNet發表在2018年ECCV,是使用關鍵點方法進行目標檢測的開山之作。CornerNet通過預測物體框左上角和右下角兩個角點,來組成最終的物體框,避免了錨點的使用。
物體的特征一般集中在物體內部,比如一個人的身體、頭部,其左上角和右下角兩個點的特征并不明顯,而且不容易確定位置。
為了解決這個問題,文章引入了 Corner pooling 的結構。
在輸出層之前的特征圖上,針對左上角點,取其右邊和下邊的最大值之和,針對右下角點,取其左邊和上邊的最大值之和。
直觀上理解,就是我們在左上角處往右下方向看,在右下角處往左上方向看,這樣就能看到整個物體。
如果不使用Corner pooling,相當于看的是角點周圍,這樣對于比較大的物體就很難獲得整個物體的特征,會導致大物體的檢測效果差。
網絡針對左上角和右下角分別輸出 三個結果 :
a. Heatmaps,表示某位置是角點的概率;
b. Offsets,表示實際角點相對于該位置的偏移;
c. Embeddings, 嵌入向量,用于將左上角和右下角進行配對。
生成最終物體框時,取概率最高的k個角點,加上Offsets得到實際位置,再使用Embeddings對左上角和右下角進行配對,取嵌入向量距離超過一定閾值的兩個點來組成最終物體框。
損失函數的選擇上Heatmaps使用分類損失函數focal loss的變種,Offsets使用回歸損失函數smooth L1 loss,Embeddings使用衡量相似度的"pull" loss和"push" loss,損失函數細節可查閱原文。
圖3 CornerNet結構示意圖
圖4 Corner pooling
CornerNet一個 明顯的缺點 是使用Embeddings進行角點匹配的效果并不太好,可能導致某個物體的左上角匹配到另一個物體的右下角。后續的ExtremeNet、CenterNet等論文都設法修復或避免這一問題。
圖5 CornerNet角點配對錯誤的例子
2. CornerNet-Lite[5]
針對CornerNet速度較慢的問題,CornerNet的研究團隊對網絡結構進行了優化。
主要從 兩方面 入手,分別提出了一個方案。
一:減少處理的像素數量。也就是先用一個輕量的網絡確定物體的大概位置,然后再從這個大概的裁切區域上檢測物體的具體位置,該網絡被稱為CornerNet-Saccade。
二:減少每個像素的處理次數。參考了SqueezeNet和MobileNets,使用深度可分離卷積等方法對網絡主干進行輕量化,該網絡被命名為CornerNet-Squeeze。
CornerNet-Saccade相比CornerNet 速度 上有較大提升而準確率相當;CornerNet-Squeeze則達到與YOLOv3相當的 速度 和 準確率 ;
CornerNet-Lite依然受限于CornerNet角點匹配 錯誤較多 的缺點。比如CornerNet-Squeeze雖然從文章中給出的結果上看與YOLOv3相當,但是實際使用中容易出現角點匹配錯誤情況,效果不佳。
圖6 CornerNet-Lite作者給出的優化效果
3. CenterNet [6]
CenterNet在CornerNet基礎上加入了一個關鍵點—— 中心點 ,通過檢查CornerNet預測框的中心區域是否存在中心關鍵點,來決定是否保留這個預測框。
中心關鍵點在pooling階段使用了Center pooling,同時取上下左右四個方向的最大值。
此外,還對原有的Corner pooling進行了 優化 。 確定中心區域時,對于較大的物體取5*5分割的中間區域,較小物體取3*3分割的中心區域。中心區域的選擇過于依賴人工設計的參數,也是該方法的一個缺點。
圖7 CenterNet結 構示意圖
4. Objects as Points [7]
這篇文章和上一篇CenterNet一樣是19年4月份放到網上的,而且也把自己的網絡起名為CenterNet...不同于上一篇CenterNet對CornerNet進行修補。 該方法直接拋棄了右上角和右上角兩個關鍵點,只預測一個中心關鍵點,再加上物體的寬高,構成最終的物體框。
該文章提出的方法 簡潔明了 ,在 速度 和 精度 的權衡上也做的比較好,因此比較被看好。 缺點 在于如果兩個物體的中心重合只能預測一個,不過這種情況概率很低。
圖8 Objects as Points效果示意圖
0 3
小結
基于關鍵點的目標檢測方法或多或少都還存在一些缺點,在實際應用中相比基于錨點的方法也 沒有絕對優勢 。但是作為近兩年目標檢測方法的新趨勢,我們期待在不遠的將來這類方案能有進一步的 突破 。
總結
以上是生活随笔為你收集整理的matlab基于ssd的角点匹配_基于关键点的目标检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用人之“道”
- 下一篇: hotelling t2 matlab,