博客專欄

        EEPW首頁 > 博客 > CVPR2021佳作 | One-Shot都嫌多,Zero-Shot實例樣本分割

        CVPR2021佳作 | One-Shot都嫌多,Zero-Shot實例樣本分割

        發(fā)布人:CV研究院 時間:2021-06-27 來源:工程師 發(fā)布文章

        給一個包含了未知種類多個實體的沒訓練過的新樣本(the query image),如何檢測以及分割所有這些實例???

        一、分割回顧

        實例分割(Instance Segmentation)

        1.png

        實例分割(Instance Segmentation)是視覺經(jīng)典四個任務中相對最難的一個,它既具備語義分割(Semantic Segmentation)的特點,需要做到像素層面上的分類,也具備目標檢測(Object Detection)的一部分特點,即需要定位出不同實例,即使它們是同一種類。因此,實例分割的研究長期以來都有著兩條線,分別是自下而上的基于語義分割的方法和自上而下的基于檢測的方法,這兩種方法都屬于兩階段的方法,下面將分別簡單介紹。

        以下摘自于:CSDN- 三十八元

        兩階段實例分割

        自上而下(Top-Down)

        自上而下的實例分割方法的思路是:首先通過目標檢測的方法找出實例所在的區(qū)域(bounding box),再在檢測框內(nèi)進行語義分割,每個分割結(jié)果都作為一個不同的實例輸出。

        2.png

        這類方法的代表作就是大名鼎鼎的Mask R-CNN了,如下圖,總體結(jié)構(gòu)就是Faster R-CNN的兩階段目標檢測,box head用來做檢測,增加了mask head用來做分割,模型大家都很熟,細節(jié)就不再贅述。

        3.jpg

        自下而上(Bottom-Up)

        自下而上的實例分割方法的思路是:首先進行像素級別的語義分割,再通過聚類、度量學習等手段區(qū)分不同的實例。

        4.png

        自下而上的工作并不多,通常的做法都是通過Instance Embedding的做法來做。舉一篇CVPR2017的文章為例,

        論文名稱:Semantic Instance Segmentation with a Discriminative Loss Function

        參考代碼:https://github.com/Wizaron/instance-segmentation-pytorch

        這篇論文的實例分割做法是:

        (1)語義分割:首先在第一個階段做了語義分割,得到了所有的物體mask;

        (2)像素嵌入:再通過使用一個判別式損失函數(shù)來訓練網(wǎng)絡,網(wǎng)絡的優(yōu)化目標是將圖像每個像素投影到 n維特征空間后,同屬于一個實例的像素盡量靠近,形成一個 cluster, 每一個實例對應一個 cluster, 不同 cluster則盡量遠離;

        (3)后處理:最后使用聚類的方法(如mean-shift)來輸出不同的實例。

        5.jpg

        文章的關鍵在于提出的判別式損失函數(shù),它的組成如下:

        6.jpg

        (1)拉力。懲罰同一實例中所有元素與其平均值之間的距離。也就是說,獲取一個實例的所有像素,并計算平均值。這種拉力會將同一實例中的所有像素點拉近到嵌入空間中的同一個點。簡單說,就是減少每一個實例的嵌入方差。

        (2)推力。獲取所有中心點 (在嵌入空間embedding中,而不是空間中心),然后將它們推得更遠。

        (3)正則化。中心點不應該離原點太遠。

        文章的超參數(shù)設置和迭代方法還是有比較多的坑,感興趣的可以去看原文和代碼。更多關于Instance Embedding的文章可以看看[1]。

        單階段實例分割

        下面就聊聊單階段實例分割(Single Shot Instance Segmentation),這方面工作其實也是受到了單階段目標檢測研究的影響,因此也有兩種思路,一種是受one-stage, anchot-based 檢測模型如YOLO,RetinaNet啟發(fā),代表作有YOLACT和SOLO;一種是受anchor-free檢測模型如 FCOS 啟發(fā),代表作有PolarMask和AdaptIS。

        目前(2020年1月)來看,單階段實例分割的精度最高的模型應該是新出的BlendMask(COCO, 41.3),在精度和速度上都超越了Mask R-CNN,已經(jīng)很接近兩階段模型(SOTA應該是HTC?)了。

        YOLACT&YOLACT++  ICCV 2019

        原文:https://arxiv.org/abs/1904.02689

        代碼(官方):https://github.com/dbolya/yolact

        YOLACT是我最早看的一篇單階段實例分割的文章,主要參照了單階段檢測模型RetinaNet,因此把它歸類于單階段的實例分割。YOLACT將實例分割任務拆分成兩個并行的子任務:

        (1)通過一個Protonet網(wǎng)絡, 為每張圖片生成 k 個 原型mask

        (2)對每個實例,預測k個的線性組合系數(shù)(Mask Coefficients)

        最后通過線性組合,生成實例mask,在此過程中,網(wǎng)絡學會了如何定位不同位置、顏色和語義實例的mask。

        具體網(wǎng)絡結(jié)構(gòu)如下:

        7.png

        (1)Backbone:Resnet 101+FPN,與RetinaNet相同;

        (2)Protonet:接在FPN輸出的后面,是一個FCN網(wǎng)絡,預測得到針對原圖的原型mask

        (3)Prediction Head:相比RetinaNet的Head,多了一個Mask Cofficient分支,預測Mask系數(shù),因此輸出是4*c+k。

        8.png

        此外,論文中還用到了Fast NMS方法,比原有的NMS速度更快,精度減得不多。

        之后,作者又提出了改進版的YOLACT++,改進之處主要有:

        (1)參考Mask Scoring RCNN,添加fast mask re-scoring分支,更好地評價實例mask的好壞;

        (2)Backbone網(wǎng)絡中引入可變形卷積DCN;

        (3)優(yōu)化了Prediction Head中的anchor設計

        YOLACT和YOLACT++的實驗效果如下:

        9.png

        二、One shot實例分割

        論文地址:https://arxiv.org/pdf/1811.11507.pdf

        動機

        該文聚焦在一個前沿的問題:給一個包含了未知種類多個實體的沒訓練過的新樣本(the query image),如何檢測以及分割所有這些實例。這個問題和現(xiàn)實應用密切相關,因為檢測/分割的落地場景中不可能有類似MS-COCO或者OpenImages之類數(shù)據(jù)集包含了非常多的實例,現(xiàn)實任務中的實例是窮舉不完的,如何從有限種類和數(shù)量的樣本中學習到一些知識并推演到新的種類中是很具有挑戰(zhàn)和實際意義的。該問題的研究大多還是停留在分類任務上,檢測和分割少。

        主要亮點:

        1.提出siamese Mask R-CNN框架,能夠僅給一個樣本,就能夠較好的檢測&分割新的該樣本同類實例;

        2.構(gòu)建了一個新的評測標準在MS-COCO。

        10.png

        Different from MRCNN:

        正如名字一樣,主體框架就是由SiameseNetwork + Mask R-CNN。改進前后的框架比對如下圖。

        11.png

        主要的4處不同已經(jīng)用紅色標識,即R、Siamese、Matching、L1。R代表了輸入不僅有Query Image還有Reference Image;SiameseNetwork則對兩者分別進行encode;Matching是將編碼后的2個feature vector進行逐一的匹配;L1則是算diff的手段。具體的匹配流程如下圖。

        12.png

        該框架的結(jié)果如下:

        13.png14.png

        三、Zero shot實例分割

        研究者提出了一個新的任務稱之為零樣本實例分割(Zero-Shot Instance Segmentation)——ZSI。ZSI的任務要求在訓練過程中,只用已經(jīng)見過并有標注的數(shù)據(jù)進行訓練,但在測試和推理時能夠同時分割出見過和沒見過的物體實例。

        首先用數(shù)學語言對該任務進行描述,然后提出了一個方法來解決ZSI的問題。新方法包括零樣本檢測器(Zero-shot Detector)、Semantic Mask Head、Backgro Aware RPN和Synchronized Background Strategy。實驗結(jié)果表明,提出的方法不僅在ZSI的任務上效果不錯,在零樣本檢測任務上也取得了比之前已有研究更好的表現(xiàn)。

        亮點:(部分采用:https://www.jiqizhixin.com/articles/2021-03-17)

        1:針對零樣本實例分割任務,提出應對的算法,該算法是基于Backgro Aware的檢測-分割框架;

        2:定義了零樣本分割(ZSI)自己獨特的測試基準;

        3:測試結(jié)果表明在ZSD任務上超越了已有的方法,且在ZSI任務上的結(jié)果很有競爭力。

        15.png

        整個零樣本實例分割的框架如下圖所示。對于一張輸入圖像來講,首先要使用骨干網(wǎng)絡(backbone),BA-RPN和ROI Align來提取視覺特征和背景的詞向量,然后經(jīng)過Sync-bg模塊后分別送入零樣本檢測器和語義分割頭,從而得到實例分割的結(jié)果。

        16.png

        零樣本檢測器的設計細節(jié)如下圖所示,采用了編碼-解碼結(jié)構(gòu),在測試/推理時只是用****的Te。

        17.png

        語義分割頭的結(jié)構(gòu)如下圖4所示,它是一個encoder-decoder的架構(gòu),在訓練階段,使用encoder來把圖像的特征編碼到語義-文字特征向量。然后使用decoder把上面構(gòu)建的語義-文字特征向量去重建圖像的任務:檢測,分割等。

        18.png

        實驗:

        19.png20.png

        *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



        關鍵詞: 深度學習

        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 临海市| 大渡口区| 清新县| 巴马| 渝北区| 阿克陶县| 永春县| 遂宁市| 高安市| 潜江市| 喀喇沁旗| 武陟县| 田阳县| 米易县| 万宁市| 富源县| 贺州市| 浦县| 宁国市| 临西县| 屏边| 罗平县| 上饶县| 长春市| 五家渠市| 长顺县| 侯马市| 怀仁县| 黑水县| 南和县| 临高县| 沙雅县| 沛县| 巫溪县| 永宁县| 陵水| 浮山县| 永春县| 宜丰县| 赤壁市| 绿春县|