論文閱記 RT-MDNet


論文題目:Real-Time MDNet

文獻地址:https://arxiv.org/pdf/1808.08834.pdf

源碼地址:https://github.com/IlchaeJung/RT-MDNet


   Motivation

Contribution

Performance: MDNet vs RT-MDNet

RT-MDNet

網絡結構

improved RoIAlign

Dense feature map

Instance Embedding loss

在線跟蹤


 RT-MDNet是MDnet的改進版,從作者單位來看,這兩篇文獻出自同一實驗室。

Motivation

  • 實時性

  MDNet網絡組成結構會讓人聯想到R-CNN,也會擔憂MDNet的時效性。RT-MDNet從名稱上可以看出該論文的切入點是MDNet的時效性,畢竟MDNet太慢了(1fps)。由於MDNet實時性差的原因與R-CNN病症相同,解決這樣的問題會聯想到RoIPooling,RoIAlign等Faster/Mask R-CNN中使用的技巧(從發表時間上也可以看出,這篇文獻在Mask R-CNN之后)。本篇作者也是使用RoIAlign的方式,並對RoIAlign進行適當的改進。速度提升了25倍。

  • 提升instance-level的分類能力

  另一方面,作者認為前作在instance-level分類能力不夠,在損失函數上做了些文章,想要做出一個分辨能力更強的模型。

  這里所說的instance-level屬於tracking 和 segmentation中的問題。簡單來說,detection的任務是在category-level,即檢測出東西屬於哪一類即可。而在tracking和segmentation中會定義instance-level,即跟蹤的哪一個人,哪一架無人機,要精確到實例個體,而不僅僅是語義的類別。下圖是分割領域關於二者的區分。

Contribution

  通過上面動機的分析,其實已經可以看出本篇主要包含兩個contibution:

  • 受Mask R-CNN的啟發,提出了一種 Improved RoIAlign
  • 對損失函數進行了改進,加入了一個 instance embedding loss

Performance: MDNet vs RT-MDNet

  首先,欣賞一下改進前后二者的表現。(是騾子是馬拉出來溜溜~)

   首先OTB100和OTB2015實際上是一個數據集,只不過一個以數量記名,一個以年份記名。(其對應視頻序列為作者發表文章Wu Y, Lim J, Yang M H. Object tracking benchmark [J]. TPAMI, 2015.中的100個視頻序列)那有意思的來了:

  • MDNet論文中給出的precision分數是0.909,success分數是0.708;而RT-MDNet給出的MDNet的precision分數是0.878,success分數是0.652。差好多... 一個實驗室的這么互相傷害真的好嗎?
  • 當overlap threshold大於0.8后,RT-MDNet在success上出現了明顯的掉點,幾乎已經處於最下沿。

RT-MDNet

網絡結構

  如下圖所示,由於要使用RoIAlign方式對MDNet加速,網絡的輸入不能再是低分辨率的Bbox,而是整張圖片。整體網絡結構從外觀上來看除了多了RoIAlign,與MDNet沒有明顯的區別。包含3個全卷積網絡conv1-3,RoIAlign,2個全連接網絡fc4-fc5。多域使用fc6(1-D)進行二值分類,用於區分target or background。

  在線跟蹤過程與MDNet一致,fc6(1-D)將會被一個單獨的二分類fc6替代,並使用softmax交叉損失函數在第一幀進行微調。這里強調一下,本篇作者在損失函數上進行了改進,用於加強instance-level的分辨能力

improved RoIAlign

  熟悉R-CNN系列的同學對RoIAlign並不陌生,從SPPNet到RoIPooling再到RoIAlign。下圖為Mask R-CNN中關於RoIAlign的示意圖。RoIAlign是為了解決RoIPooling中均分而帶來的邊緣量化損失。具體來說,RoIPooling是為了可以固定輸入的尺寸,將feature map划分為幾等份,然后在這幾等分中分別進行最大池化提取固定長度的特征。其中划分為幾等份的操作會出現不能整除的現象,RoIPooling中采用選取最大可整除的方式,舍棄不能整除部分的像素,也就是量化損失。RoIAlign不采用最大可整除的方式,而是對落在非像素點上的采樣點進行雙線性插值,彌補量化的損失,畢竟Mask R-CNN要做分割,量化損失不容小覷。

  作者認為RoIAlign提取的特征與從單個提案邊界盒中提取的特征相比,本質上是粗糙的。粗糙是采樣點個數需要固定,而feature map尺寸不固定而造成的采樣間隔不匹配的問題。如7×7的feature map downsample到3×3,7/3=2.33,在每個2.33×2.33的grid上采2×2共4個點;當feature map變成了14×14, 同樣downsample 到 3×3,14/3=4.66, 此時采用4*4的grid進行采樣16個點的效果要優於還使用2×2 4個采樣點的效果。

  因此,bins的個數需要自適應,作者使用[w/w']的方式進行自適應。其中,w是conv3輸出的feature map中RoI的寬度;w'是RoIAlign層中RoI輸出特征的寬度;[·]是四舍五入運算。

  作者提出,雖然只在RoIAlign 做了小的改進,但會在跟蹤效果上有很大的提升。這在一定程度上是因為,與目標檢測相反,由於目標表示方式的細微差異而產生的跟蹤誤差會隨着時間的推移而傳播,並產生較大的誤差,最終導致跟蹤器失敗。

Dense feature map

  由於使用了RoIAlign輸入圖像的分辨率變大,而網絡層數並未加深,需要提升模型的感受野。因此,作者在MDNet網絡結構的基礎上,conv3使用r=3的空洞卷積。

Instance Embedding loss

  作者在損失函數的設計上有兩個目標:

  • 其一是訓練一個適用於多域的特征識別網絡;
    • MDNet只是學習目標和背景之間區別的表示。
  • 另外,作者希望建立的損失函數能夠 拉開不同領域的目標彼此遠離。結合下面類似聚類效果的圖,確實這個目標很有價值。
    • MDNet只是試圖區分各自域中的目標和背景,沒有多少能力區分在不同域中的目標

  如上圖左側部分,作者設計了兩個損失函數,其一用於進行單個域中的target/background的分類;另一個是不同域之間的類別分類Linst。說白了,就是增添了一個當前RoI屬於哪一個域的損失函數。確實符合目標描述的拉開不同領域的目標距離。

  具體來說,主要體現在以下兩個公式:

  第一個公式實際上存儲的是網絡在每個域的輸出,即target和background。x^d表示域d的輸入圖像,R表示對應的bbox;fd是網絡輸出的得分;φd為二分類的得分結果。

  第一個公式在表達上如果你細摳可能會有疑問:就是關於d與D。如果φ1到φD描述了不同域的得分,那每個域中的x^d的d又如何理解,難道不是一個域輸入一個域的圖片嗎?這里還真不是,因為它后續要做softmax損失函數,並且包含當前bbox(RoI)屬於哪一個域的損失函數Linst。也就是說,作者這里假設的是輸入圖片是哪個域是未知的,並沒有按照順序一一對應的關系。所以x^d的表示是因為不知道該圖片屬於哪個域,所以哪個域都會有這個輸入的形式。【原諒我之前是做優化的,對上下標都不放過...】由於這樣的輸出存儲,在二分類上也不得不用softmax了吧。

  第二個公式就簡單了,就是兩個softmax,一個是target與background二分類的softmax,另一個是當前bbox屬於哪個域的多分類softmax。

  基於此,將會產生損失函數三元組:兩個損失函數,一個整合兩個損失函數:

在線跟蹤

  這部分和MDNet是一致的,包括隨機/最終bbox的生成方式、bbox回歸訓練與在線使用的方式、以及兩種在線更新調用的方式。不了解的小伙伴可以猛戳MDNet

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM