計算機視覺 - 語義分割 (semantic segmentation)

轉載自:http://blog.geohey.com/ji-suan-ji-shi-jue-zhi-yu-yi-fen-ge/
計算機視覺之語義分割
2017年10月11日

人工智能被認爲是第四次工業革命,google,facebook等全球頂尖、最有影響力的技術公司都將目光轉向AI,雖然免不了存在泡沫,被部分媒體誇大宣傳,神經網絡在圖像識別,語音識別,自然語言處理,無人車等方面的貢獻是毋庸置疑的,隨着算法的不斷完善,部分垂直領域的研究已經落地應用。

在計算機視覺領域,目前神經網絡的應用主要有圖像識別,目標定位與檢測,語義分割。圖像識別就是告訴你圖像是什麼,目標定位與檢測告訴你圖像中目標在哪裏,語義分割則是從像素級別回答上面兩個問題。因爲項目需要對衛星遙感影像中的小麥和玉米進行語義分割,這幾天在做相關方向的研究,下面給大家簡單介紹下語義分割的相關知識。

語義分割是什麼

圖像語義分割(semantic segmentation),從字面意思上理解就是讓計算機根據圖像的語義來進行分割,例如讓計算機在輸入下面左圖的情況下,能夠輸出右圖。語義在語音識別中指的是語音的意思,在圖像領域,語義指的是圖像的內容,對圖片意思的理解,比如左圖的語義就是三個人騎着三輛自行車;分割的意思是從像素的角度分割出圖片中的不同對象,對原圖中的每個像素都進行標註,比如右圖中粉紅色代表人,綠色代表自行車。這裏寫圖片描述

語義分割當前應用

目前語義分割的應用領域主要有:

  • 地理信息系統
  • 無人車駕駛
  • 醫療影像分析
  • 機器人等領域

地理信息系統:可以通過訓練神經網絡讓機器輸入衛星遙感影像,自動識別道路,河流,莊稼,建築物等,並且對圖像中每個像素進行標註。(下圖左邊爲衛星遙感影像,中間爲真實的標籤,右邊爲神經網絡預測的標籤結果,可以看到,隨着訓練加深,預測準確率不斷提升。使用ResNet FCN網絡進行訓練)

無人車駕駛:語義分割也是無人車駕駛的核心算法技術,車載攝像頭,或者激光雷達探查到圖像後輸入到神經網絡中,後臺計算機可以自動將圖像分割歸類,以避讓行人和車輛等障礙。這裏寫圖片描述

醫療影像分析:隨着人工智能的崛起,將神經網絡與醫療診斷結合也成爲研究熱點,智能醫療研究逐漸成熟。在智能醫療領域,語義分割主要應用有腫瘤圖像分割,齲齒診斷等。(下圖分別是齲齒診斷,頭部CT掃描緊急護理診斷輔助和肺癌診斷輔助)齲齒診斷頭部CT掃描緊急護理診斷輔助,圖片來自qure.ai

語義分割數據集

在“數據,算法,計算力”這AI發展的三大驅動力中,眼下最重要的就是數據,數據集在人工智能中有着舉足輕重的地位,具體根據不同的應用領域,目前的數據集主要有:

  1. Pascal VOC系列: 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/ 一共有80個類別。這個數據集主要用於實例級別的分割(Instance-level Segmentation)以及圖片描述Image Caption)。
  3. Cityscapes: 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 FCN 所追求的是,輸入是一張圖片是,輸出也是一張圖片,學習像素到像素的映射,端到端的映射,網絡結構如下圖所示:這裏寫圖片描述

全卷積神經網絡主要使用了三種技術:

  1. 卷積化(Convolutional)
  2. 上採樣(Upsample)
  3. 跳躍結構(Skip Layer)

卷積化(Convolutional) 卷積化即是將普通的分類網絡,比如VGG16,ResNet50/101等網絡丟棄全連接層,換上對應的卷積層即可。這裏寫圖片描述

上採樣(Upsample) 有的說叫conv_transpose更爲合適。因爲普通的池化會縮小圖片的尺寸,比如VGG16 五次池化後圖片被縮小了32倍。爲了得到和原圖等大的分割圖,我們需要上採樣/反捲積。反捲積和卷積類似,都是相乘相加的運算。只不過後者是多對一,前者是一對多。而反捲積的前向和後向傳播,只用顛倒卷積的前後向傳播即可。圖解如下:這裏寫圖片描述

跳躍結構(Skip Layer) 這個結構的作用就在於優化結果,因爲如果將全卷積之後的結果直接上採樣得到的結果是很粗糙的,所以作者將不同池化層的結果進行上採樣之後來優化輸出。具體結構如下:這裏寫圖片描述而不同上採樣結構得到的結果對比如下:這裏寫圖片描述

這是第一種結構,也是深度學習應用於圖像語義分割的開山之作,獲得了CVPR2015的最佳論文。但還是無法避免有很多問題,比如,精度問題,對細節不敏感,以及像素與像素之間的關係,忽略空間的一致性等,後面的研究極大的改善了這些問題。

參考: 1. https://www.azavea.com/blog/2017/05/30/deep-learning-on-aerial-imagery/ 
2.https://zhuanlan.zhihu.com/p/22308032

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章