1、前言算法
圖像分割(Image Segmentation)是計算機視覺領域中的一項重要基礎技術,是圖像理解中的重要一環。圖像分割是將數字圖像細分爲多個圖像子區域的過程,經過簡化或改變圖像的表示形式,讓圖像可以更加容易被理解。更簡單地說,圖像分割就是爲數字圖像中的每個像素附加標籤,使得具備相同標籤的像素具備某種共同的視覺特性。網絡
圖像分割技術自 60 年代數字圖像處理誕生開始便有了研究,隨着近年來深度學習研究的逐步深刻,圖像分割技術也隨之有了巨大的發展。早期的圖像分割算法不能很好地分割一些具備抽象語義的目標,好比文字、動物、行人、車輛。這是由於早期的圖像分割算法基於簡單的像素值或一些低層的特徵,如邊緣、紋理等,人工設計的一些描述很難準確描述這些語義,這一經典問題被稱之爲「語義鴻溝」。框架
得益於深度學習可以「自動學習特徵」的這一特色,第三代圖像分割很好地避免了人工設計特徵帶來的「語義鴻溝」,從最初只能基於像素值以及低層特徵進行分割,到如今可以完成一些根據高層語義的分割需求。函數
(圖像分割的發展歷史)學習
高德地圖擁有圖像/視頻大數據,在衆多業務場景上都須要理解圖像中的內容。例如,在數據的自動化生產中,一般須要尋找文字、路面、房屋、橋樑、指示牌、路面標線等目標。這些數據裏有些是經過採集車輛或衛星拍攝,也有些數據則是經過用戶手機拍攝,以下圖所示:字體
面對這些場景語義複雜、內容差別巨大的圖像,高德是如何經過圖像分割對其進行理解的?本文介紹了圖像分割在高德地圖從解決一些小問題的「手段」,逐步成長爲高度自動化數據生產線的強大技術助力。大數據
2、探索期:一些早期的嘗試優化
在街邊的數據採集中,咱們須要自動化生產出採集到的小區、店鋪等 POI (Point of Interest)數據。咱們經過 OCR 算法識別其中文字,但苦惱於沒法肯定採集圖像中到底有幾個 POI。例如,下圖中「領秀麗人」與「燕子童裝」兩家店鋪,人眼能夠很容易區分,可是對於機器則否則。一些簡單的策略,好比背景顏色,容易帶來不少的錯誤。ui
例如,遇到兩個樣式十分相近的掛牌的時候,咱們利用無監督的 gPb-owt-ucm 算法 [1] 在檢測多級輪廓的基礎上結合改進的分水嶺算法將圖像切分爲多個區域,並利用 Cascade Boosting 的文字檢測結果將圖中帶有文字的區域進行了分割。spa
3、成長期:天然場景下的語義分割
於 2014 年末問世的全卷積神經網絡 [2](FCNs, Fully Convolutional Networks)無疑是繼 2012 年問鼎 ImageNet 大賽以來深度學習發展的又一里程碑。FCNs 提供了第一個端到端式的深度學習圖像分割解決方案。FCNs 在 CNN 的基礎上能夠從任意尺寸的輸入進行逐像素的分類。咱們也在第一時間將其落地到高德自身的應用場景中,例如文字區域的分割。天然場景下的文字因爲其背景、光照複雜,文字朝向、字體多樣,使得人工構建特徵十分困難。
很快地,咱們發現 FCNs 還並不能很好地知足咱們的需求。雖然 FCNs 在解決語義鴻溝問題上提供瞭解決方案,但在通常狀況下只能給出一個「粗糙」的區域分割結果,不能實現很好的「實例分割」,對於目標虛警、目標粘連、目標多尺度、邊緣精度等問題上也沒有很好地解決。一個典型的例子就是在分割文字區域時,「捱得近」的文字區域特別容易粘在一塊兒,致使在計算圖像中的文本行數時形成計數錯誤。
所以,咱們提出了一個多任務網絡來實現本身的實例分割框架。針對目標粘連的問題,咱們在原始網絡中追加了一個分割任務,其目標是分割出每一個文本行的「中軸線」,而後經過中軸線區域來拆分粘連的文本行區域。拆分的方法則是一個相似於 Dijkstra 的算法求解每一個文本區域像素到區域內中軸線的距離,並以最短距離的中軸線做爲像素歸屬。
另一個比較困擾的問題是 FCNs 結果中的虛警,即非文字區域被分割爲文字區域。雖然相較於一些傳統方法,FCNs 結果中的虛警已經少了不少,但爲了達到更好的分割正確率,咱們在原有網絡基礎上增長了一個並行的 R-CNN 子網絡進行文字的檢測,並利用這些檢測結果抑制虛警的產生(False Alarms Suppression)。
爲了經過端到端的學習使得網絡達到更好的效果,咱們設計了一個一致性損失函數(Consistency Loss Function),來保證網絡主幹下分割子網絡和檢測子網絡可以相互指導、調優。從優化後分割網絡輸出的能量圖能夠看到,虛警的機率明顯下降了。若想要了解詳細細節,能夠參考咱們 17 年公佈在 arxiv 上的文章[3]。
4、成熟期:分割的精細化與實例化
得益於 Mask R-CNN 框架 [4] 的提出,實例化的圖像分割變得更加容易。以以前提到的商戶掛牌的分割爲例,掛牌區域的分割也十分容易出現粘連,且掛牌樣式多樣,不存在文本行這樣明顯的「中軸線」。目標檢測方法能夠對提取掛牌的外包矩形。但問題在於,天然場景下掛牌的拍攝每每存在非垂直視角,所以在圖像上並非一個矩形,一般的檢測算法則會帶來不許確的邊緣估計。Mask R-CNN 經過良好地整合檢測與分割兩個分支,實現了通用的實例化圖像分割框架。其中目標檢測分支經過 RPN 提取目標區域,並對其進行分類實現目標的實例化;而後在這些目標區域中進行分割,從而提取出精準的邊緣。
一些更加複雜的場景理解需求,也對圖像分割分割精細程度提出了更高的要求。這主要體如今兩個方面:(1)邊緣的準確度(2)不一樣尺度目標的召回能力。
在高精地圖的數據數據生產須要分割出圖像中的路面,然而高精地圖對於精度的要求在釐米級,換算到圖像上偏差僅在 1~2 個像素點。觀察原始分割的結果不難發現,分割的不許確位置通常都是出如今區域邊緣上,區域內部是比較容易學習的。
所以,咱們設計了一個特殊的損失函數,人爲地增大真值邊緣區域產生的懲罰性偏差,從而增強對邊緣的學習效果,如圖所示,左側爲可行駛路面區域分割,右側是路面及地面標線分割。
道路場景下須要理解的目標種類繁多,一方面其自己有大有小,另外一方面因爲拍攝的景深變化,呈如今圖像上的尺度也大小各異。特別的是,有些特殊目標,例如燈杆、車道線等目標是「細長」的,在圖像上具備較大長度,但寬度很小。這些目標的特性都使得精細的圖像分割變得困難。
首先,因爲受到網絡感覺野的限制,過大和太小的目標都不容易準確分割,好比道路場景下的路面與燈杆,衛星影像中的道路與建築羣。針對該問題,目前的 PSPNet [5], DeepLab [6], FPN [7] 等網絡結構都能在不一樣程度上解決。
其次,因爲目標尺度不一樣,致使分割網絡樣本數量的比例極不均衡(每個像素能夠認爲是一個樣本),咱們將原先用於目標檢測任務的 Focal Loss [8] 遷移到圖像分割網絡中來。Focal Loss 的特色在於可讓偏差集中在訓練的很差的數據上。這一特性使得難以學習的小尺度目標可以被更加準確地分割出來。
5、將來的展望
圖像分割技術目前朝着愈來愈精確的方向上發展,例如 Mask Scoring R-CNN [9]、Hybrid Task Cascade [10] 的提出,在 Mask R-CNN 的基礎上持續優化了其分割的精確程度。然而站在應用角度,基於深度學習的圖像分割相較於當量的分類任務則顯得「笨重」。
出於圖像分割任務對精度的要求,輸入圖像不會像分類任務同樣被壓縮至一個很小的尺寸,帶來的則是計算量的指數級增長,使得圖像分割任務的實時性較難保證。針對這個問題,ICNet, Mobile 等網絡結構經過快速下采樣減小了卷積初期的計算量,但也帶來了效果上的折損。基於知識蒸餾(Knowledge Distillation)的訓練方法,則像個更好的優化方案,經過大網絡指導小網絡學習,使得小網絡的訓練效果優於單獨訓練。知識蒸餾在訓練過程當中規避了網絡剪枝所須要的經驗與技巧,直接使用較低開銷的小網絡完成原先只能大網絡實現的複雜任務。
對於高德地圖來講,圖像分割已是一個不可或缺的基礎技術,並在各個數據自動化生產線中獲得了普遍應用,助力高德地圖的高度自動化數據生產。將來,咱們也將持續在地圖應用場景下打造更加精準、輕量的圖像分割技術方案。
6、參考文獻
[1] Arbelaez, Pablo, et al. "Contour detection and hierarchical image segmentation." IEEE transactions on pattern analysis and machine intelligence 33.5 (2010): 898-916.
[2] Long, Jonathan, Evan Shelhamer, and Trevor Darrell. "Fully convolutional networks for semantic segmentation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2015.
[3] Jiang, Fan, Zhihui Hao, and Xinran Liu. "Deep scene text detection with connected component proposals." arXiv preprint arXiv:1708.05133 (2017).
[4] He, Kaiming, et al. "Mask r-cnn." Proceedings of the IEEE international conference on computer vision. 2017.
[5] Zhao, Hengshuang, et al. "Pyramid scene parsing network." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
[6] Chen, Liang-Chieh, et al. "Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs." IEEE transactions on pattern analysis and machine intelligence 40.4 (2017): 834-848.
[7] Lin, Tsung-Yi, et al. "Feature pyramid networks for object detection." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
[8] Lin, Tsung-Yi, et al. "Focal loss for dense object detection." Proceedings of the IEEE international conference on computer vision. 2017.
[9] Huang, Zhaojin, et al. "Mask scoring r-cnn." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019.
[10] Chen, Kai, et al. "Hybrid task cascade for instance segmentation." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019.