天天看點

基于深度學習的圖像分割在高德的實踐

一、前言

圖像分割(Image Segmentation)是計算機視覺領域中的一項重要基礎技術,是圖像了解中的重要一環。圖像分割是将數字圖像細分為多個圖像子區域的過程,通過簡化或改變圖像的表示形式,讓圖像能夠更加容易被了解。更簡單地說,圖像分割就是為數字圖像中的每一個像素附加标簽,使得具有相同标簽的像素具有某種共同的視覺特性。

圖像分割技術自 60 年代數字圖像處理誕生開始便有了研究,随着近年來深度學習研究的逐漸深入,圖像分割技術也随之有了巨大的發展。早期的圖像分割算法不能很好地分割一些具有抽象語義的目标,比如文字、動物、行人、車輛。這是因為早期的圖像分割算法基于簡單的像素值或一些低層的特征,如邊緣、紋理等,人工設計的一些描述很難準确描述這些語義,這一經典問題被稱之為“語義鴻溝”。

得益于深度學習能夠“自動學習特征”的這一特點,第三代圖像分割很好地避免了人工設計特征帶來的“語義鴻溝”,從最初隻能基于像素值以及低層特征進行分割,到現在能夠完成一些根據高層語義的分割需求。

基于深度學習的圖像分割在高德的實踐

(圖像分割的發展曆史)

高德地圖擁有圖像/視訊大資料,在衆多業務場景上都需要了解圖像中的内容。例如,在資料的自動化生産中,通常需要尋找文字、路面、房屋、橋梁、訓示牌、路面标線等目标。這些資料裡有些是通過采集車輛或衛星拍攝,也有些資料則是通過使用者手機拍攝,如下圖所示:

基于深度學習的圖像分割在高德的實踐

面對這些場景語義複雜、内容差異巨大的圖像,高德是如何通過圖像分割對其進行了解的?本文介紹了圖像分割在高德地圖從解決一些小問題的“手段”,逐漸成長為高度自動化資料生産線的強大技術助力。

二、探索期:一些早期的嘗試

在街邊的資料采集中,我們需要自動化生産出采集到的小區、店鋪等 POI (Point of Interest)資料。我們通過 OCR 算法識别其中文字,但苦惱于無法确定采集圖像中到底有幾個 POI。例如,下圖中“領秀麗人”與“燕子童裝”兩家店鋪,人眼可以很容易區分,但是對于機器則不然。一些簡單的政策,比如背景顔色,容易帶來很多的錯誤。

基于深度學習的圖像分割在高德的實踐

例如,遇到兩個樣式十分相近的挂牌的時候,我們利用無監督的 gPb-owt-ucm 算法 [1] 在檢測多級輪廓的基礎上結合改進的分水嶺算法将圖像切分為多個區域,并利用 Cascade Boosting 的文字檢測結果将圖中帶有文字的區域進行了分割。

三、成長期:自然場景下的語義分割

于 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]。

基于深度學習的圖像分割在高德的實踐

四、成熟期:分割的精細化與執行個體化

得益于 Mask R-CNN 架構 [4] 的提出,執行個體化的圖像分割變得更加容易。以之前提到的商戶挂牌的分割為例,挂牌區域的分割也十分容易出現粘連,且挂牌樣式多樣,不存在文本行這樣明顯的“中軸線”。目标檢測方法可以對提取挂牌的外包矩形。但問題在于,自然場景下挂牌的拍攝往往存在非垂直視角,是以在圖像上并不是一個矩形,通常的檢測算法則會帶來不準确的邊緣估計。Mask R-CNN 通過良好地整合檢測與分割兩個分支,實作了通用的執行個體化圖像分割架構。其中目标檢測分支通過 RPN 提取目标區域,并對其進行分類實作目标的執行個體化;然後在這些目标區域中進行分割,進而提取出精準的邊緣。

一些更加複雜的場景了解需求,也對圖像分割分割精細程度提出了更高的要求。這主要展現在兩個方面:(1)邊緣的準确度(2)不同尺度目标的召回能力。

在高精地圖的資料資料生産需要分割出圖像中的路面,然而高精地圖對于精度的要求在厘米級,換算到圖像上誤差僅在 1~2 個像素點。觀察原始分割的結果不難發現,分割的不準确位置一般都是出現在區域邊緣上,區域内部是比較容易學習的。

是以,我們設計了一個特殊的損失函數,人為地增大真值邊緣區域産生的懲罰性誤差,進而加強對邊緣的學習效果,如圖所示,左側為可行駛路面區域分割,右側是路面及地面标線分割。

基于深度學習的圖像分割在高德的實踐

道路場景下需要了解的目标種類繁多,一方面其本身有大有小,另一方面由于拍攝的景深變化,呈現在圖像上的尺度也大小各異。特别的是,有些特殊目标,例如燈杆、車道線等目标是“細長”的,在圖像上具有較大長度,但寬度很小。這些目标的特性都使得精細的圖像分割變得困難。

基于深度學習的圖像分割在高德的實踐

首先,由于受到網絡感受野的限制,過大和過小的目标都不容易準确分割,比如道路場景下的路面與燈杆,衛星影像中的道路與建築群。針對該問題,目前的 PSPNet [5], DeepLab [6], FPN [7] 等網絡結構都能在不同程度上解決。

其次,由于目标尺度不同,導緻分割網絡樣本數量的比例極不均衡(每一個像素可以認為是一個樣本),我們将原先用于目标檢測任務的 Focal Loss [8] 遷移到圖像分割網絡中來。Focal Loss 的特點在于可以讓誤差集中在訓練的不好的資料上。這一特性使得難以學習的小尺度目标能夠被更加準确地分割出來。

基于深度學習的圖像分割在高德的實踐

五、未來的展望

圖像分割技術目前朝着越來越精确的方向上發展,例如 Mask Scoring R-CNN [9]、Hybrid Task Cascade [10] 的提出,在 Mask R-CNN 的基礎上持續優化了其分割的精确程度。然而站在應用角度,基于深度學習的圖像分割相較于當量的分類任務則顯得“笨重”。

出于圖像分割任務對精度的要求,輸入圖像不會像分類任務一樣被壓縮至一個很小的尺寸,帶來的則是計算量的指數級增加,使得圖像分割任務的實時性較難保證。針對這個問題,ICNet, Mobile 等網絡結構通過快速下采樣減少了卷積初期的計算量,但也帶來了效果上的折損。基于知識蒸餾(Knowledge Distillation)的訓練方法,則像個更好的優化方案,通過大網絡指導小網絡學習,使得小網絡的訓練效果優于單獨訓練。知識蒸餾在訓練過程中規避了網絡剪枝所需要的經驗與技巧,直接使用較低開銷的小網絡完成原先隻能大網絡實作的複雜任務。

對于高德地圖來說,圖像分割已經是一個不可或缺的基礎技術,并在各個資料自動化生産線中得到了廣泛應用,助力高德地圖的高度自動化資料生産。未來,我們也将持續在地圖應用場景下打造更加精準、輕量的圖像分割技術方案。

六、參考文獻

[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.

繼續閱讀