Objects as Points 論文總結
《Objects as Points 論文總結》
我逐字翻譯了CenterNet 之 Objects as points的論文,這裡主要整理CenterNet中提到的知識點,以及寫下自己的感悟和看法,主要從主幹網路、監督方式以及我目前對anchor free的理解。方便後續對CenterNet的複習。
Key Words:Bottom-up、監督方式、Anchor free、推理增強
CVPR, 2019
Bottom-up
Encoder-Decoder模型結構能cover絕大多數的場景,標準的Encoder-Decoder是對稱的網路結構,通過卷積+下采樣進行影像編碼,得到高層語義資訊。而後通過轉置卷積或插值等上取樣方法進行Decoder。當然這種結構也不限於CNN,也可以用RNN以及全連線之類的進行編解碼。
Encoder-Decoder模型結構可以做影像語義分割、Crow Count、AutoEncoder以及各種生成模型,其優點在於可以逐畫素的進行分類(Focal Loss)或迴歸(MSE),感覺上監督的範圍更廣,所以對各種任務的普適性更強。
CenterNet的主幹網路採取了類似於編解碼的方式進行預測,target與原圖相比下取樣了4倍,是一個不對稱的編解碼模型,這也是借鑑了openpose、hourglass等文章的做法。我理解這樣的做法能夠降低影像的視覺冗餘性,抗噪的同時還降低了運算量,下采樣四倍對於目標檢測以及關鍵點估計來說不會有太大的損失。而且這裡Center採用了對量化產生的誤差加了一項offset迴歸。
CenterNet在上取樣階段採用的可變形卷積,這對提高精度很有幫助,有空還需要拜讀一下可變形卷積v1和v2的論文。
DLA-34 DenseNet Hourglass-104 都是關鍵點估計網路不錯的backbone選擇
監督方式
目標檢測
GroundTruth:對原圖下采樣4倍,然後對目標中心點位置進行二維高斯和卷積。對於高斯核卷積兩個物體的重疊部分,取重疊元素的最大值
預測head:中心點的類別(K個類別channel的heatMap)、中心點的size(2個channel,W和H)、量化offset(2個channel,X和Y)
*損失函式:
點變為框的方式
每個目標僅僅有一個正的錨點,因此不會用到NMS,提取關鍵點特徵圖上區域性峰值點(local peaks)使用3x3的mac pooling即可。
姿態估計
損失函式:關鍵點和目標檢測的中心點的損失函式一樣,關鍵點到中心點回歸用L1 loss,迴歸offset也是用L1 loss。
預測head:「C個類別,K個關鍵點」
- 中心點(C個類別channel)
- 中心點的size(2個channel,W、H)
- 中心點的量化offset(2個channel,X和Y)
- 關鍵點到中心點的距離(2*K個channel)
- 關鍵點的heatMap(K個channel)
- 關鍵點的offset(2個channel,X和Y)
技巧:文中說過通過對關鍵點的迴歸得到的結果是無法達到SOTA水平的,所以作者巧妙的把迴歸的結果和bottom up的結果進行了結合,不需要像openpose一樣的複雜後處理演算法就能夠對關鍵點進行分組,非常值得學習。
Anchor free
最早一代的Anchor free模型當數yolo v1了,此後進入了SSD為代表的AnchorBased時代,SSD可謂是把anchor機制用到了極致。anchor極致之能夠有效的原因是對特徵的featureMap上每個點都做了幾乎可以涵蓋所有目標的預設anchor,預設的越多,運算量越大,模型也就越準確。但實際我們使用的場景裡這些預設的anchor的利用率並不高,所以很多的運算其實都是徒勞的,這也就引發了anchor free再度興起。
我理解的anchor free沒有顯式的對每個位置的各種建議框的尺寸和比例進行預設而已,但是位置資訊還是有所保留的,比如CenterNet的做法就是在關鍵點處進行迴歸,可以理解為這個點其實也是一個"anchor",基於目標的中心進行的迴歸,也是非常合理的。可以認為anchor-free 和每個位置有一個正方形 anchor 在形式上可以是等價的,也就是利用 FCN 的結構對 feature map 的每個位置預測一個框,這也就是為什麼bottom up的模型效果很好的原因。
anchor-free 的方法由於網路結構簡單,對於工業應用來說可能更加友好。對於方法本身的發展,我感覺一個是新的 例項分割流程,因為 anchor-free 天生和 segmentation 更加接近。
能夠用簡單的方法來代替目前複雜的目標檢測方法是一個質的飛越。
推理增強
論文的實驗中用到了推理增強,這是一個屢見不鮮的技巧,通過損失推理效率來增加精度的方法。
分類中我們可以對原圖進行crop或flip等,然後結果取眾數。
分割中我們也可以對原圖進行flip,得到結果後在flip回來,疊加在一起。
論文中使用的方法是在解碼前對推理增強的結果取平均,然後在進行解碼。
缺點
當中心點重合的時候CenterNet就沒有辦法處理了,如果能保持CenterNet的優勢,在想辦法解決這個問題,下箇中CVPR的可能就是你。
相關文章
- AlexNet論文總結
- 對話論文總結
- 暑假讀論文總結
- 2.MapReduce論文總結
- 《Spanner: Google’s Globally-Distributed Database》論文總結GoDatabase
- MongoDb博文總結MongoDB
- ICLR 2020 多智慧體強化學習論文總結ICLR智慧體強化學習
- ServiceMesh 3:路由控制(圖文總結)路由
- 圖文總結:正向代理與反向代理
- Objects as Points:預測目標中心,無需NMS等後處理操作 | CVPR 2019Object
- 《Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases》論文總結IDECloudDatabase
- 《Object Storage on CRAQ: High-throughput chain replication for read-mostly workloads》論文總結ObjectAI
- 一文總結設計模式設計模式
- ZooKeeper最全詳解(萬字圖文總結)
- 常用負載均衡詳解(圖文總結)負載
- Connecting the Dots: Document-level Neural Relation Extraction with Edge-oriented Graphs 關係抽取論文總結
- 一文總結ACE程式碼框架框架
- Grid Points
- 一文總結你需要的OpenCV操作OpenCV
- ObjectsObject
- Important Points for Inheritance in JavaImportJava
- 用 js 獲取頁面元素的位置圖文總結JS
- 五種分散式事務解決方案(圖文總結)分散式
- RocketMQ訊息中介軟體詳解(萬字圖文總結)MQ
- 訊息佇列MQ最全詳解(萬字圖文總結)佇列MQ
- ServiceMesh 2:控制面和資料面的職責(圖文總結)
- 3大主流分散式事務框架詳解(圖文總結)分散式框架
- Machine Learning - Basic pointsMac
- Restore Points 制定回退方案REST
- 【檢視】oracle 資料字典檢視之 DBA_OBJECTS / ALL_OBJECTS / USER_OBJECTS(OBJ)OracleObject
- [React Hooks長文總結系列一]初出茅廬,狀態與副作用ReactHook
- Redis系列:使用Stream實現訊息佇列 (圖文總結+Go案例)Redis佇列Go
- Oracle dba_objects和all_objects 最大的區別OracleObject
- 淺談Associated ObjectsObject
- Destroying Window ObjectsObject
- create objects inmemory optionsObject
- Naming Database ObjectsDatabaseObject
- Leetcode Max Points on a LineLeetCode