分割算法——可以分割一切目標(各種分割總結)(1)
很多關注的朋友一直會問“計算機視覺戰隊平臺有基礎性的內容嗎?”,今天我和大家說一次,我們平臺之前有推送很多基礎的知識
前言
很多關注的朋友一直會問“計算機視覺研究院“有基礎性的內容嗎?”,今天我和大家說一次,我們平臺之前有推送很多基礎的知識,有興趣的或者是剛剛接觸CV&DL的你,可以去歷史消息閱讀,在這也感謝所有一直關注和支持我們的小伙伴!接下來就和大家說說目標分割的事吧~
分割其實在很多領域是非常重要的研究對象,現在也有很多研究者在該領域大展身手,比如何大神,一直在該方面的做的最優秀之一,今天就基于他CVPR 2018的一篇優秀Paper說起。
概述
大多數目標實例分割的方法都要求所有的訓練樣本帶有segmentation masks。這種要求就使得注釋新類別的開銷很大,并且將實例分段模型限制為~100注釋良好的類。
本次技術目的是提出一種新的部分監督的訓練模式,該模式具有一種新的權重傳遞函數,結合一種新的權重傳遞函數,可以在一大組類別上進行訓練實例分割模型,所有這些類別都有框注釋,但只有一小部分有mask注釋。這些設計允許我們訓練MASK R-CNN,使用VisualGenome數據集的框注釋和COCO數據集中80個類的mask注釋來檢測和分割3000種視覺概念。
最終,在COCO數據集的對照研究中評估了提出的方法。這項工作是邁向對視覺世界有廣泛理解的實例分割模型的第一步。
在正式細說本次分割技術之前,還是簡單說下分割的事,有一個簡單的引言和大家分享下,沒有興趣的您可以直接跳過,閱讀關鍵技術部分,謝謝!
目標檢測器已經變得更加精確,并獲得了重要的新功能。最令人興奮的是能夠預測每個檢測到的目標前景分割mask,這是一個稱為instance segmentation的任務。在實踐中,典型的instance segmentation系統僅限于僅包含大約100個目標類別的廣闊視覺世界的一小部分。
會有很多人問:什么是語義分割?
語義分割其實就是對圖片的每個像素都做分類。其中,較為重要的語義分割數據集有:VOC2012 以及 MSCOCO 。
比較流行經典的幾種方法
傳統機器學習方法:如像素級的決策樹分類,參考TextonForest以及Random Forest based classifiers。再有就是深度學習方法。
深度學習最初流行的分割方法是,打補丁式的分類方法 (patch classification) 。逐像素地抽取周圍像素對中心像素進行分類。由于當時的卷積網絡末端都使用全連接層 (full connected layers) ,所以只能使用這種逐像素的分割方法。
但是到了2014年,來自伯克利的Fully Convolutional Networks(FCN)【點擊藍色,有鏈接直接可以閱讀全卷積網絡相關資料】卷積網絡,去掉了末端的全連接層。隨后的語義分割模型基本上都采用了這種結構。除了全連接層,語義分割另一個重要的問題是池化層。池化層能進一步提取抽象特征增加感受域,但是丟棄了像素的位置信息。但是語義分割需要類別標簽和原圖像對齊,因此需要從新引入像素的位置信息。有兩種不同的架構可以解決此像素定位問題。
第一種是編碼-譯碼架構。編碼過程通過池化層逐漸減少位置信息、抽取抽象特征;譯碼過程逐漸恢復位置信息。一般譯碼與編碼間有直接的連接。該類架構中U-net 是最流行的。
第二種是膨脹卷積 (dilated convolutions) 【這個核心技術值得去閱讀學習】,拋棄了池化層。使用的卷積核如下圖所示:
居然都說到這里,那我繼續來簡單說一些相關的文獻吧。
按時間順序總結,大概我能總結9篇paper,看語義分割的結構是如何演變的。分別有FCN 、SegNet 、U-Net、Dilated Convolutions 、DeepLab (v1 & v2) 、RefineNet 、PSPNet 、Large Kernel Matters 、DeepLab v3 。
參考文章:(“計算機視覺戰隊”微信公眾平臺推送)
DeepLab V3
Deeplab v2 安裝及調試全過程
谷歌——DeepLab v1
1)FCN 2014年
主要的貢獻:
為語義分割引入了 端到端 的全卷積網絡,并流行開來
重新利用 ImageNet 的預訓練網絡用于語義分割
使用 反卷積層 進行上采樣
引入跳躍連接來改善上采樣粗糙的像素定位
比較重要的發現是,分類網絡中的全連接層可以看作對輸入的全域卷積操作,這種轉換能使計算更為高效,并且能重新利用ImageNet的預訓練網絡。經過多層卷積及池化操作后,需要進行上采樣,FCN使用反卷積(可學習)取代簡單的線性插值算法進行上采樣。
2)SegNet 2015年
編碼-譯碼架構
主要貢獻:將池化層結果應用到譯碼過程。引入了更多的編碼信息。使用的是pooling indices而不是直接復制特征,只是將編碼過程中 pool 的位置記下來,在 uppooling 是使用該信息進行 pooling 。
3)U-Net 2015
U-Net有更規整的網絡結構,通過將編碼器的每層結果拼接到譯碼器中得到更好的結果。
4)Dilated Convolutions 2015年
通過膨脹卷積操作聚合多尺度的信息
主要貢獻:
使用膨脹卷積
提出 ’context module‘ ,用來聚合多尺度的信息
池化在分類網絡中能夠擴大感知域,同樣降低了分辨率,所以提出了膨脹卷積層。
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。