換個dataloader函式, COCO提升3mAP ,上海交大MVIG團隊提出InstaBoost

機器之心發表於2019-08-27

目前,研究團隊已將程式碼及訓練好的模型全部開源,包括 Res50, Res101 base 的 Mask R-CNN, Cascade Mask R-CNN, SSD 等,未來還將有更多模型開源,如 yolact 等。

該方法的操作非常簡單,目前已釋出為 pip 包,只需 python 中加一行程式碼,import instaboost,換一個 dataloader 函式就可以在 COCO 例項分割資料集上實現顯著的效能提升。

近年來,基於 CNN 的深度學習演算法,如 Mask R-CNN 等,在例項分割任務中有了非常廣泛的應用。但是出於畫素級別的標註成本高,週期長,難度大等原因,這些深度學習框架的潛力因為缺少大量的訓練資料而難以被充分挖掘出來。

此前我們報導過,Google 研究團隊曾研究利用 bounding box 標籤,運用強化學習進行資料增強,並獲得了一定提升。不過,在例項分割領域,如何利用 mask 標籤在 COCO 資料集上獲得提升,仍是一個需要探索的問題。

然而例項分割這種畫素級的分類要比目標檢測難很多,對應的資料增強也要困難很多,這主要體現在它並不能隨意把目標切割並移到另外的背景上,因為它們對分割結果也有很大的影響。

來自上海交通大學 MVIG 實驗室的研究人員在例項分割應用中對其進行改進最佳化,成功的將模型的例項分割精度大幅提升,同時也能實現目標檢測的提升。

換個dataloader函式, COCO提升3mAP ,上海交大MVIG團隊提出InstaBoost

  • 論文地址:https://arxiv.org/abs/1908.07801

  • 程式碼地址:https://github.com/GothicAi/InstaBoost

  • 演示地址:https://youtu.be/iFsmmHUGy0g

例項分割任務中的資料增強

早期一些方法使用 domain adaptation 等思路,將其他領域的資料作為資訊來源輔助資料增強,但是這些方法沒有充分利用訓練集的 mask 標註資訊。

近期一些研究使用基於 crop-paste 的方法在目標檢測任務中取得了不錯的效果。簡單來說,這些方法將物體按照 mask 標註的資訊從原圖片中剪下來,然後貼上到一個隨機的背景圖片上。但是研究者發現這種方法在分割任務中,由於例項和背景契合程度較差,在實驗中表現比 baseline 要差。為了解決這一問題,一些論文提出了使用 context model 去為二者一致性打分,但是這種該方法計算成本過高,難以在實際場景中應用。

研究者在這篇論文中提出了兩種遞進的例項層面的資料增強演算法:Random InstaBoost 和 Map-guided InstaBoost。這類演算法極大地提高了檢測和分割精度。

Matting 和 Inpainting

在將圖片前景和背景按照標註進行分離的過程中,如果完全按照標註去切割前景,前景的邊界處會呈不自然的多邊形鋸齒狀,這與 COCO 資料標註方式有關。為了解決這一問題,研究者使用《A global sampling method for alpha matting》一文中提出的方法對前景輪廓做 matting 處理,以得到與物體輪廓契合的邊界。

在前景背景分離後,背景上會存在若干個空白區域,這些區域可以使用 inpainting 演算法進行填補。論文中使用了《Navier-stokes, fluid dynamics, and image and videoinpainting》文章中提出的 inpainting 演算法。

換個dataloader函式, COCO提升3mAP ,上海交大MVIG團隊提出InstaBoost

從左至右:原圖,inpainting 處理後的背景,matting 處理後的前景。

Random InstaBoost

為了儘可能保證貼上後前景和背景融合的契合程度,直覺上來說將前景貼上到原位置的附近是最可靠的。Random InstaBoost 方法即是在上述先驗的判斷下提出的。研究者透過定義一個四元數 (tx, ty, s, r) 來對映前景在資料增強前後的變換。四個引數從左至右分別表示了水平位移,垂直位移,放縮程度和旋轉角度。將這四個引數在 (0, 0, 1, 0) 附近進行獨立的隨機擾動,即可生成一系列符合外觀一致性的增強圖片。

換個dataloader函式, COCO提升3mAP ,上海交大MVIG團隊提出InstaBoost

Map-guided InstaBoost

在 Random InstaBoost 方法中,前景的中心位置 (x,y) 被嚴格限制在了原位置 (x0,y0) 附近。為了解決這一問題,作者提出了使用外觀一致性熱度圖(appearance consistency heatmap)來引導前景中心貼上的位置。

外觀一致性熱度圖計算原理大致如下。

外觀描述符 D(•)

換個dataloader函式, COCO提升3mAP ,上海交大MVIG團隊提出InstaBoost

公式中,(cx, cy) 表示例項的中心座標,Ci 表示第 i 個輪廓線,wi 表示其對應的權重,i=1 表示最內部的輪廓線。輪廓線透過將例項輪廓膨脹後取差集獲得。如下圖所示,內外黑色區域之前的三個不同深度區域即為果盤的三個輪廓線。在 w 的取值上,我們按照先驗,規定越靠近例項影響越大,權重越大,即 w1>w2>w3。

換個dataloader函式, COCO提升3mAP ,上海交大MVIG團隊提出InstaBoost

外觀距離

外觀距離定義為,外觀描述符之間區域性外觀一致性的度量。由於我們已經定義了具有三個輪廓區域和相應權重關聯描述符,D1=D(c1x, c1y) 和 D2=D(c2x, c2y) 之間的外觀距離被定義為:

換個dataloader函式, COCO提升3mAP ,上海交大MVIG團隊提出InstaBoost

其中 Ik(x, y) 表示圖片 k 在 (x, y) 座標畫素點的 RGB 值,Δ可以表示任何距離公式,在實驗中作者使用了歐氏距離。對於部分座標點移出圖片的情況,我們將其距離定義為無窮大。

熱度圖生成與引導平移

透過固定 D0 為例項的原始位置,遍歷圖片中其餘畫素點,計算背景上所有可能的 d(D, D0),並透過下列公式將其歸一化:

換個dataloader函式, COCO提升3mAP ,上海交大MVIG團隊提出InstaBoost

其中 M=max(d(D, D0)),m=min(d(D, D0))。透過將 h(•) 對映到背景圖片上的每一個畫素,即可獲得一個熱度圖。透過熱度與機率之間的對映,可以使用蒙特卡洛方法進行取樣,得到高外觀一致性的貼上位置。下圖為幾則熱度圖與增強後的例項。

換個dataloader函式, COCO提升3mAP ,上海交大MVIG團隊提出InstaBoost

實驗結果

在實驗過程中,作者使用 Mask R-CNN 和 Cascade R-CNN 兩個框架在 COCO 資料集上分別進行了測試,測試結果如下圖所示。結果顯示,在目標檢測例項分割任務上,InstaBoost 在 mAP 標準下最高帶來 4mAP 和 2.2mAP 的提升。

換個dataloader函式, COCO提升3mAP ,上海交大MVIG團隊提出InstaBoost

研究人員還使用 Mask R-CNN 在 VOCSDS 資料集上進行實驗,目標檢測例項分割提升分別是 4.2mAP 和 3.9mAP,仍舊十分可觀。

換個dataloader函式, COCO提升3mAP ,上海交大MVIG團隊提出InstaBoost

隨後,研究人員從速度和魯棒性方面將 InstaBoost 與現有方法進行對比。

從速度上來看,InstaBoost 可以作為線上演算法嵌入到 dataloader 內部,在 Mask R-CNN 上對比,使用前後每輪迭代僅增加了 0.03s 的時間成本。而使用 context model 的演算法,需要對特定資料集預先進行訓練等操作,花費大量額外時間,並且難以作為線上演算法內嵌到程式碼框架內。

換個dataloader函式, COCO提升3mAP ,上海交大MVIG團隊提出InstaBoost

從魯棒性的角度來看,傳統的 Mask R-CNN 的框架,在訓練到 24 個 Epoch 的時候,出現比較嚴重的過擬合現象,精度開始下降。使用 InstaBoost 之後,模型在 48 個 Epoch 之後精度仍然呈上升趨勢。說明 InstaBoost 很大程度上提升了分割框架的魯棒性。

換個dataloader函式, COCO提升3mAP ,上海交大MVIG團隊提出InstaBoost

為了更直觀的反應 InstaBoost 對例項分割效果的提升,這裡列出部分視覺化對比結果:

換個dataloader函式, COCO提升3mAP ,上海交大MVIG團隊提出InstaBoost

相關文章