# 計算機視覺----語義分割
2017年10月11日
人工智能被認為是第四次工業革命,google,facebook等全球頂尖、最有影響力的技術公司都將目光轉向AI,雖然免不了存在泡沫,被部分媒體夸大宣傳,神經網絡在圖像識別,語音識別,自然語言處理,無人車等方面的貢獻是毋庸置疑的,隨著算法的不斷完善,部分垂直領域的研究已經落地應用。
在計算機視覺領域,目前神經網絡的應用主要有圖像識別,目標定位與檢測,語義分割。圖像識別就是告訴你圖像是什么,目標定位與檢測告訴你圖像中目標在哪里,語義分割則是從像素級別回答上面兩個問題。因為項目需要對衛星遙感影像中的小麥和玉米進行語義分割,這幾天在做相關方向的研究,下面給大家簡單介紹下語義分割的相關知識。
## 語義分割是什么
圖像語義分割(semantic segmentation),從字面意思上理解就是讓計算機根據圖像的語義來進行分割,例如讓計算機在輸入下面左圖的情況下,能夠輸出右圖。語義在語音識別中指的是語音的意思,在圖像領域,語義指的是圖像的內容,對圖片意思的理解,比如左圖的語義就是三個人騎著三輛自行車;分割的意思是從像素的角度分割出圖片中的不同對象,對原圖中的每個像素都進行標注,比如右圖中粉紅色代表人,綠色代表自行車。
## 語義分割當前應用
目前語義分割的應用領域主要有:
* 地理信息系統
* 無人車駕駛
* 醫療影像分析
* 機器人等領域
地理信息系統:可以通過訓練神經網絡讓機器輸入衛星遙感影像,自動識別道路,河流,莊稼,建筑物等,并且對圖像中每個像素進行標注。(下圖左邊為衛星遙感影像,中間為真實的標簽,右邊為神經網絡預測的標簽結果,可以看到,隨著訓練加深,預測準確率不斷提升。使用ResNet FCN網絡進行訓練)
無人車駕駛:語義分割也是無人車駕駛的核心算法技術,車載攝像頭,或者激光雷達探查到圖像后輸入到神經網絡中,后臺計算機可以自動將圖像分割歸類,以避讓行人和車輛等障礙。
醫療影像分析:隨著人工智能的崛起,將神經網絡與醫療診斷結合也成為研究熱點,智能醫療研究逐漸成熟。在智能醫療領域,語義分割主要應用有腫瘤圖像分割,齲齒診斷等。(下圖分別是齲齒診斷,頭部CT掃描緊急護理診斷輔助和肺癌診斷輔助)
## 語義分割數據集
在“數據,算法,計算力”這AI發展的三大驅動力中,眼下最重要的就是數據,數據集在人工智能中有著[舉足輕重](https://www.baidu.com/s?wd=%E4%B8%BE%E8%B6%B3%E8%BD%BB%E9%87%8D&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd)的地位,具體根據不同的應用領域,目前的數據集主要有:
1. Pascal VOC系列: [http://host.robots.ox.ac.uk/pascal/VOC/voc2012/](http://host.robots.ox.ac.uk/pascal/VOC/voc2012/) 通常采用PASCAL VOC 2012,最開始有1464 張具有標注信息的訓練圖片,2014 年增加到10582張訓練圖片。主要涉及了日常生活中常見的物體,包括汽車,狗,船等20個分類。
2. Microsoft COCO: [http://link.zhihu.com/?target=http%3A//mscoco.org/explore/](http://link.zhihu.com/?target=http%3A//mscoco.org/explore/) 一共有80個類別。這個數據集主要用于實例級別的分割(Instance-level Segmentation)以及圖片描述Image Caption)。
3. Cityscapes:?[https://www.cityscapes-dataset.com/](https://www.cityscapes-dataset.com/)?適用于汽車自動駕駛的訓練數據集,包括19種都市街道場景:road、side-walk、building、wal、fence、pole、traficlight、trafic sign、vegetation、terain、sky、person、rider、car、truck、bus、train、motorcycle 和 bicycle。該數據庫中用于訓練和校驗的精細標注的圖片數量為3475,同時也包含了 2 萬張粗糙的標記圖片。
## 語義分割中的深度學習技術
* 全卷積神經網絡 FCN(2015)
論文:[Fully Convolutional Networks for Semantic Segmentation](https://link.zhihu.com/?target=https://arxiv.org/abs/1411.4038) FCN 所追求的是,輸入是一張圖片是,輸出也是一張圖片,學習像素到像素的映射,端到端的映射,網絡結構如下圖所示:
全卷積神經網絡主要使用了三種技術:
1. 卷積化(Convolutional)
2. 上采樣(Upsample)
3. 跳躍結構(Skip Layer)
卷積化(Convolutional)?卷積化即是將普通的分類網絡,比如VGG16,ResNet50/101等網絡丟棄全連接層,換上對應的卷積層即可。
上采樣(Upsample)?有的說叫conv\_transpose更為合適。因為普通的池化會縮小圖片的尺寸,比如VGG16 五次池化后圖片被縮小了32倍。為了得到和原圖等大的分割圖,我們需要上采樣/反卷積。反卷積和卷積類似,都是相乘相加的運算。只不過后者是多對一,前者是一對多。而反卷積的前向和后向傳播,只用顛倒卷積的前后向傳播即可。圖解如下:
跳躍結構(Skip Layer)?這個結構的作用就在于優化結果,因為如果將全卷積之后的結果直接上采樣得到的結果是很粗糙的,所以作者將不同池化層的結果進行上采樣之后來優化輸出。具體結構如下:而不同上采樣結構得到的結果對比如下:
這是第一種結構,也是深度學習應用于圖像語義分割的開山之作,獲得了CVPR2015的最佳論文。但還是無法避免有很多問題,比如,精度問題,對細節不敏感,以及像素與像素之間的關系,忽略空間的一致性等,后面的研究極大的改善了這些問題。
* SegNet(2015) 論文:[A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation](https://arxiv.org/abs/1511.00561)?主要貢獻:將最大池化指數轉移至解碼器中,改善了分割分辨率。
* 空洞卷積(2015) 論文:[Multi-Scale Context Aggregation by Dilated Convolutions](https://arxiv.org/abs/1511.07122)主要貢獻:使用了空洞卷積,這是一種可用于密集預測的卷積層;提出在多尺度聚集條件下使用空洞卷積的“背景模塊”。
* DeepLab(2016) 論文:[DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs](https://link.zhihu.com/?target=https://arxiv.org/abs/1606.00915)?主要貢獻:使用了空洞卷積;提出了在空間維度上實現金字塔型的空洞池化atrous spatial pyramid pooling(ASPP);使用了全連接[條件隨機場](https://www.baidu.com/s?wd=%E6%9D%A1%E4%BB%B6%E9%9A%8F%E6%9C%BA%E5%9C%BA&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd)。
參考: 1.?[https://blog.csdn.net/sinat_35496345/article/details/79609529](https://blog.csdn.net/sinat_35496345/article/details/79609529)
> 注意: https://zhuanlan.zhihu.com/p/27794982 這篇博文梳理了語義分割的深度學習方法,是根據論文發表的順序來總結的。大家必須看一下。
# 語義分割要實現的目標:
1. **識別出不同對象**
2. **給出對象邊界(像素級別的分類能力)**
所以這一節的論文都是圍繞著這一目標來進行改進的。
- 序言
- 第一章 機器學習概述
- 第二章 機器學習環境搭建
- 環境搭建
- 第三章 機器學習之基礎算法
- 第一節:基礎知識
- 第二節:k近鄰算法
- 第三節:決策樹算法
- 第四節:樸素貝葉斯
- 第五節:邏輯斯蒂回歸
- 第六節:支持向量機
- 第四章 機器學習之深度學習算法
- 第一節: CNN
- 4.1.1 CNN介紹
- 4.1.2 CNN反向傳播
- 4.1.3 DNN實例
- 4.1.4 CNN實例
- 第五章 機器學習論文與實踐
- 第一節: 語義分割
- 5.1 FCN
- 5.1.1 FCN--------實現FCN16S
- 5.1.2 FCN--------優化FCN16S
- 5.2 DeepLab
- 5.2.1 DeepLabv2
- 第六章 機器學習在實際項目中的應用