深度:自動(dòng)駕駛特斯拉背后核心技術(shù)解析
說(shuō)起特斯拉,大家可能立馬會(huì)想到今年 5 月份發(fā)生在特斯拉 Model S 無(wú)人駕駛上的一宗奪命車(chē)禍。初步的調(diào)查表明,在強(qiáng)烈的日照條件下,駕駛員和無(wú)人駕駛系統(tǒng)都未能注意到牽引式掛車(chē)的白色車(chē)身,因此未能及時(shí)啟動(dòng)剎車(chē)系統(tǒng)。而由于牽引式掛車(chē)正在橫穿公路,且車(chē)身較高,這一特殊情況導(dǎo)致 Model S 從掛車(chē)底部通過(guò)時(shí),其前擋風(fēng)玻璃與掛車(chē)底部發(fā)生撞擊,導(dǎo)致駕駛員不幸遇難。
本文引用地址:http://m.butianyuan.cn/article/201710/367780.htm無(wú)獨(dú)有偶,8 月 8 日美國(guó)密蘇里州的一名男子、特斯拉 Model X 車(chē)主約書(shū)亞?尼利(Joshua Neally)在上班途中突發(fā)肺栓塞。在 Model X 的 Autopilot 無(wú)人駕駛功能的幫助下,他安全抵達(dá)了醫(yī)院。這「一抑一揚(yáng)」著實(shí)讓人回味無(wú)窮,略有些「敗也蕭何,成也蕭何」之意。
好奇的讀者一定會(huì)有疑問(wèn):這「一成一敗」背后的原理到底是什么?是無(wú)人駕駛系統(tǒng)中的哪個(gè)部分發(fā)生了失誤而造成車(chē)禍?又是哪部分技術(shù)支撐了無(wú)人駕駛過(guò)程呢?
今天,我們就來(lái)談?wù)劅o(wú)人駕駛系統(tǒng)中的一項(xiàng)重要核心技術(shù)——圖像語(yǔ)義分割(semanTIc image segmentaTIon)。圖像語(yǔ)義分割作為計(jì)算機(jī)視覺(jué)(computer vision)中圖像理解(image understanding)的重要一環(huán),不僅在工業(yè)界的需求日益凸顯,同時(shí)語(yǔ)義分割也是當(dāng)下學(xué)術(shù)界的研究熱點(diǎn)之一。
什么是圖像語(yǔ)義分割?
圖像語(yǔ)義分割可以說(shuō)是圖像理解的基石性技術(shù),在無(wú)人駕駛系統(tǒng)(具體為街景識(shí)別與理解)、無(wú)人機(jī)應(yīng)用(著陸點(diǎn)判斷)以及穿戴式設(shè)備應(yīng)用中舉足輕重。
我們都知道,圖像是由許多像素(pixel)組成,而「語(yǔ)義分割」顧名思義就是將像素按照?qǐng)D像中表達(dá)語(yǔ)義含義的不同進(jìn)行分組(grouping)/分割(segmentation)。下圖取自圖像分割領(lǐng)域的標(biāo)準(zhǔn)數(shù)據(jù)集之一 PASCAL VOC。其中,左圖為原始圖像,右圖為分割任務(wù)的真實(shí)標(biāo)記(ground truth):紅色區(qū)域表示語(yǔ)義為「person」的圖像像素區(qū)域,藍(lán)綠色代表「motorbike」語(yǔ)義區(qū)域,黑色表示「background」,白色(邊)則表示未標(biāo)記區(qū)域。
顯然,在圖像語(yǔ)義分割任務(wù)中,其輸入為一張 H×W×3 的三通道彩色圖像,輸出則是對(duì)應(yīng)的一個(gè) H × W 矩陣,矩陣的每一個(gè)元素表明了原圖中對(duì)應(yīng)位置像素所表示的語(yǔ)義類(lèi)別(semantic label)。因此,圖像語(yǔ)義分割也稱(chēng)為「圖像語(yǔ)義標(biāo)注」(image semantic labeling)、「像素語(yǔ)義標(biāo)注」(semantic pixel labeling)或「像素語(yǔ)義分組」(semantic pixel grouping)。
從上圖和題圖中,大家可以明顯看出圖像語(yǔ)義分割任務(wù)的難點(diǎn)便在于這「語(yǔ)義」二字。在真實(shí)圖像中,表達(dá)某一語(yǔ)義的同一物體常由不同部件組成(如,building,motorbike,person 等),同時(shí)這些部分往往有著不同的顏色、紋理甚至亮度(如building),這給圖像語(yǔ)義的精確分割帶來(lái)了困難和挑戰(zhàn)。
前 DL 時(shí)代的語(yǔ)義分割
從最簡(jiǎn)單的像素級(jí)別「閾值法」(thresholding methods)、基于像素聚類(lèi)的分割方法(clustering-based segmentation methods)到「圖劃分」的分割方法(graph partitioning segmentation methods),在深度學(xué)習(xí)(deep learning, DL)「一統(tǒng)江湖」之前,圖像語(yǔ)義分割方面的工作可謂「百花齊放」。在此,我們僅以「normalized cut」[1]和「grab cut」 [2]這兩個(gè)基于圖劃分的經(jīng)典分割方法為例,介紹一下前 DL 時(shí)代語(yǔ)義分割方面的研究。
Normalized cut (N-cut)方法是基于圖劃分(graph partitioning)的語(yǔ)義分割方法中最著名的方法之一,于 2000 年 Jianbo Shi 和 Jitendra Malik 發(fā)表于相關(guān)領(lǐng)域頂級(jí)期刊 TPAMI。通常,傳統(tǒng)基于圖劃分的語(yǔ)義分割方法都是將圖像抽象為圖(graph)的形式 G=(V,E) (V 為圖節(jié)點(diǎn),E 為圖的邊),然后借助圖理論(graph theory)中的理論和算法進(jìn)行圖像的語(yǔ)義分割。
常用的方法為經(jīng)典的最小割算法(min-cut algorithm)。不過(guò),在邊的權(quán)重計(jì)算時(shí),經(jīng)典 min-cut 算法只考慮了局部信息。如下圖所示,以二分圖為例(將 G 分為不相交的 , 兩部分),若只考慮局部信息,那么分離出一個(gè)點(diǎn)顯然是一個(gè) min-cut,因此圖劃分的結(jié)果便是類(lèi)似 或 這樣離群點(diǎn),而從全局來(lái)看,實(shí)際想分成的組卻是左右兩大部分。
針對(duì)這一情形,N-cut 則提出了一種考慮全局信息的方法來(lái)進(jìn)行圖劃分(graph partitioning),即,將兩個(gè)分割部分 A,B , 與全圖節(jié)點(diǎn)的連接權(quán)重(assoc(A,V) 和 assoc(B,V))考慮進(jìn)去:
如此一來(lái),在離群點(diǎn)劃分中,中的某一項(xiàng)會(huì)接近 1,而這樣的圖劃分顯然不能使得是一個(gè)較小的值,故達(dá)到考慮全局信息而摒棄劃分離群點(diǎn)的目的。這樣的操作類(lèi)似于機(jī)器學(xué)習(xí)中特征的規(guī)范化(normalization)操作,故稱(chēng)為normalized cut。N-cut不僅可以處理二類(lèi)語(yǔ)義分割,而且將二分圖擴(kuò)展為 K 路( -way)圖劃分即可完成多語(yǔ)義的圖像語(yǔ)義分割,如下圖例。
Grab cut 是微軟劍橋研究院于 2004 年提出的著名交互式圖像語(yǔ)義分割方法。與 N-cut 一樣,grab cut 同樣也是基于圖劃分,不過(guò) grab cut 是其改進(jìn)版本,可以看作迭代式的語(yǔ)義分割算法。Grab cut 利用了圖像中的紋理(顏色)信息和邊界(反差)信息,只要少量的用戶交互操作即可得到比較好的前后背景分割結(jié)果。
在 grab cut 中,RGB 圖像的前景和背景分別用一個(gè)高斯混合模型(gaussian mixture model, GMM)來(lái)建模。兩個(gè) GMM 分別用以刻畫(huà)某像素屬于前景或背景的概率,每個(gè) GMM 高斯部件(gaussian component)個(gè)數(shù)一般設(shè)為 。
接下來(lái),利用吉布斯能量方程(gibbs energy function)對(duì)整張圖像進(jìn)行全局刻畫(huà),而后迭代求取使得能量方程達(dá)到最優(yōu)值的參數(shù)作為兩個(gè) GMM 的最優(yōu)參數(shù)。GMM 確定后,某像素屬于前景或背景的概率就隨之確定下來(lái)。
在與用戶交互的過(guò)程中,grab cut 提供兩種交互方式:一種以包圍框(bounding box)為輔助信息;另一種以涂寫(xiě)的線條(scribbled line)作為輔助信息。以下圖為例,用戶在開(kāi)始時(shí)提供一個(gè)包圍框,grab cut 默認(rèn)的認(rèn)為框中像素中包含主要物體/前景,此后經(jīng)過(guò)迭代圖劃分求解,即可返回扣出的前景結(jié)果,可以發(fā)現(xiàn)即使是對(duì)于背景稍微復(fù)雜一些的圖像,grab cut 仍有不俗表現(xiàn)。
不過(guò),在處理下圖時(shí),grab cut 的分割效果則不能令人滿意。此時(shí),需要額外人為的提供更強(qiáng)的輔助信息:用紅色線條/點(diǎn)標(biāo)明背景區(qū)域,同時(shí)用白色線條標(biāo)明前景區(qū)域。在此基礎(chǔ)上,再次運(yùn)行 grab cut 算法求取最優(yōu)解即可得到較為滿意的語(yǔ)義分割結(jié)果。grab cut 雖效果優(yōu)良,但缺點(diǎn)也非常明顯,一是僅能處理二類(lèi)語(yǔ)義分割問(wèn)題,二是需要人為干預(yù)而不能做到完全自動(dòng)化。
DL 時(shí)代的語(yǔ)義分割
其實(shí)大家不難看出,前 DL 時(shí)代的語(yǔ)義分割工作多是根據(jù)圖像像素自身的低階視覺(jué)信息(low-level visual cues)來(lái)進(jìn)行圖像分割。由于這樣的方法沒(méi)有算法訓(xùn)練階段,因此往往計(jì)算復(fù)雜度不高,但是在較困難的分割任務(wù)上(如果不提供人為的輔助信息),其分割效果并不能令人滿意。
在計(jì)算機(jī)視覺(jué)步入深度學(xué)習(xí)時(shí)代之后,語(yǔ)義分割同樣也進(jìn)入了全新的發(fā)展階段,以全卷積神經(jīng)網(wǎng)絡(luò)(fully convolutional networks,F(xiàn)CN)為代表的一系列基于卷積神經(jīng)網(wǎng)絡(luò)「訓(xùn)練」的語(yǔ)義分割方法相繼提出,屢屢刷新圖像語(yǔ)義分割精度。下面就介紹三種在 DL時(shí)代語(yǔ)義分割領(lǐng)域的代表性做法。
全卷積神經(jīng)網(wǎng)絡(luò)
全卷積神經(jīng)網(wǎng)絡(luò) FCN 可以說(shuō)是深度學(xué)習(xí)在圖像語(yǔ)義分割任務(wù)上的開(kāi)創(chuàng)性工作,出自 UC Berkeley 的 Trevor Darrell 組,發(fā)表于計(jì)算機(jī)視覺(jué)領(lǐng)域頂級(jí)會(huì)議 CVPR 2015,并榮獲best paper honorable mention。
FCN 的思想很直觀,即直接進(jìn)行像素級(jí)別端到端(end-to-end)的語(yǔ)義分割,它可以基于主流的深度卷積神經(jīng)網(wǎng)絡(luò)模型(CNN)來(lái)實(shí)現(xiàn)。正所謂「全卷積神經(jīng)網(wǎng)絡(luò)」,在FCN中,傳統(tǒng)的全連接層 fc6 和 fc7 均是由卷積層實(shí)現(xiàn),而最后的 fc8 層則被替代為一個(gè) 21 通道(channel)的 1x1 卷積層,作為網(wǎng)絡(luò)的最終輸出。之所以有 21 個(gè)通道是因?yàn)?PASCAL VOC 的數(shù)據(jù)中包含 21 個(gè)類(lèi)別(20個(gè)object類(lèi)別和一個(gè)「background」類(lèi)別)。
下圖為 FCN 的網(wǎng)絡(luò)結(jié)構(gòu),若原圖為 H×W×3,在經(jīng)過(guò)若干堆疊的卷積和池化層操作后可以得到原圖對(duì)應(yīng)的響應(yīng)張量(activation tensor) ,其中, 為第i層的通道數(shù)??梢园l(fā)現(xiàn),由于池化層的下采樣作用,使得響應(yīng)張量的長(zhǎng)和寬遠(yuǎn)小于原圖的長(zhǎng)和寬,這便給像素級(jí)別的直接訓(xùn)練帶來(lái)問(wèn)題。
為了解決下采樣帶來(lái)的問(wèn)題,F(xiàn)CN 利用雙線性插值將響應(yīng)張亮的長(zhǎng)寬上采樣到原圖大小,另外為了更好的預(yù)測(cè)圖像中的細(xì)節(jié)部分,F(xiàn)CN 還將網(wǎng)絡(luò)中淺層的響應(yīng)也考慮進(jìn)來(lái)。具體來(lái)說(shuō),就是將 Pool4 和 Pool3 的響應(yīng)也拿來(lái),分別作為模型 FCN-16s 和 FCN-8s 的輸出,與原來(lái) FCN-32s 的輸出結(jié)合在一起做最終的語(yǔ)義分割預(yù)測(cè)(如下圖所示)。
下圖是不同層作為輸出的語(yǔ)義分割結(jié)果,可以明顯看出,由于池化層的下采樣倍數(shù)的不同導(dǎo)致不同的語(yǔ)義分割精細(xì)程度。如 FCN-32s,由于是 FCN 的最后一層卷積和池化的輸出,該模型的下采樣倍數(shù)最高,其對(duì)應(yīng)的語(yǔ)義分割結(jié)果最為粗略;而 FCN-8s 則因下采樣倍數(shù)較小可以取得較為精細(xì)的分割結(jié)果。
Dilated Convolutions
FCN 的一個(gè)不足之處在于,由于池化層的存在,響應(yīng)張量的大?。ㄩL(zhǎng)和寬)越來(lái)越小,但是FCN的設(shè)計(jì)初衷則需要和輸入大小一致的輸出,因此 FCN 做了上采樣。但是上采樣并不能將丟失的信息全部無(wú)損地找回來(lái)。
對(duì)此,dilated convolution 是一種很好的解決方案——既然池化的下采樣操作會(huì)帶來(lái)信息損失,那么就把池化層去掉。但是池化層去掉隨之帶來(lái)的是網(wǎng)絡(luò)各層的感受野(receptive field)變小,這樣會(huì)降低整個(gè)模型的預(yù)測(cè)精度。Dilated convolution 的主要貢獻(xiàn)就是,如何在去掉池化下采樣操作的同時(shí),而不降低網(wǎng)絡(luò)的感受野。
以 3×3 的卷積核為例,傳統(tǒng)卷積核在做卷積操作時(shí),是將卷積核與輸入張量中「連續(xù)」的 3×3 的 patch 逐點(diǎn)相乘再求和(如下圖a,紅色圓點(diǎn)為卷積核對(duì)應(yīng)的輸入「像素」,綠色為其在原輸入中的感知野)。而 dilated convolution 中的卷積核則是將輸入張量的 3×3 patch 隔一定的像素進(jìn)行卷積運(yùn)算。
如下圖 b 所示,在去掉一層池化層后,需要在去掉的池化層后將傳統(tǒng)卷積層換做一個(gè)「dilation=2」的 dilated convolution 層,此時(shí)卷積核將輸入張量每隔一個(gè)「像素」的位置作為輸入 patch 進(jìn)行卷積計(jì)算,可以發(fā)現(xiàn)這時(shí)對(duì)應(yīng)到原輸入的感知野已經(jīng)擴(kuò)大(dilate)為 ;同理,如果再去掉一個(gè)池化層,就要將其之后的卷積層換成「dilation=4」的 dilated convolution 層,如圖 c 所示。這樣一來(lái),即使去掉池化層也能保證網(wǎng)絡(luò)的感受野,從而確保圖像語(yǔ)義分割的精度。
從下面的幾個(gè)圖像語(yǔ)義分割效果圖可以看出,在使用了 dilated convolution 這一技術(shù)后可以大幅提高語(yǔ)義類(lèi)別的辨識(shí)度以及分割細(xì)節(jié)的精細(xì)度。
以條件隨機(jī)場(chǎng)為代表的后處理操作
當(dāng)下許多以深度學(xué)習(xí)為框架的圖像語(yǔ)義分割工作都是用了條件隨機(jī)場(chǎng)(conditional random field,CRF)作為最后的后處理操作來(lái)對(duì)語(yǔ)義預(yù)測(cè)結(jié)果進(jìn)行優(yōu)化。
一般來(lái)講,CRF 將圖像中每個(gè)像素點(diǎn)所屬的類(lèi)別都看作一個(gè)變量 ,然后考慮任意兩個(gè)變量之間的關(guān)系,建立一個(gè)完全圖(如下圖所示)。
在全鏈接的 CRF 模型中,對(duì)應(yīng)的能量函數(shù)為:
其中是一元項(xiàng),表示像素對(duì)應(yīng)的語(yǔ)義類(lèi)別,其類(lèi)別可以由 FCN 或者其他語(yǔ)義分割模型的預(yù)測(cè)結(jié)果得到;而第二項(xiàng)為二元項(xiàng),二元項(xiàng)可將像素之間的語(yǔ)義聯(lián)系/關(guān)系考慮進(jìn)去。例如,「天空」和「鳥(niǎo)」這樣的像素在物理空間是相鄰的概率,應(yīng)該要比「天空」和「魚(yú)」這樣像素的相鄰概率大。最后通過(guò)對(duì) CRF 能量函數(shù)的優(yōu)化求解,得到對(duì) FCN 的圖像語(yǔ)義預(yù)測(cè)結(jié)果進(jìn)行優(yōu)化,得到最終的語(yǔ)義分割結(jié)果。
值得一提的是,已經(jīng)有工作[5]將原本與深度模型訓(xùn)練割裂開(kāi)的 CRF 過(guò)程嵌入到神經(jīng)網(wǎng)絡(luò)內(nèi)部,即,將 FCN+CRF 的過(guò)程整合到一個(gè)端到端的系統(tǒng)中,這樣做的好處是 CRF 最后預(yù)測(cè)結(jié)果的能量函數(shù)可以直接用來(lái)指導(dǎo) FCN 模型參數(shù)的訓(xùn)練,而取得更好的圖像語(yǔ)義分割結(jié)果。
展望
俗話說(shuō),「沒(méi)有免費(fèi)的午餐」(no free lunch)?;谏疃葘W(xué)習(xí)的圖像語(yǔ)義分割技術(shù)雖然可以取得相比傳統(tǒng)方法突飛猛進(jìn)的分割效果,但是其對(duì)數(shù)據(jù)標(biāo)注的要求過(guò)高:不僅需要海量圖像數(shù)據(jù),同時(shí)這些圖像還需提供精確到像素級(jí)別的標(biāo)記信息(semantic labels)。因此,越來(lái)越多的研究者開(kāi)始將注意力轉(zhuǎn)移到弱監(jiān)督(weakly-supervised)條件下的圖像語(yǔ)義分割問(wèn)題上。在這類(lèi)問(wèn)題中,圖像僅需提供圖像級(jí)別標(biāo)注(如,有「人」,有「車(chē)」,無(wú)「電視」)而不需要昂貴的像素級(jí)別信息即可取得與現(xiàn)有方法可比的語(yǔ)義分割精度。
另外,示例級(jí)別(instance level)的圖像語(yǔ)義分割問(wèn)題也同樣熱門(mén)。該類(lèi)問(wèn)題不僅需要對(duì)不同語(yǔ)義物體進(jìn)行圖像分割,同時(shí)還要求對(duì)同一語(yǔ)義的不同個(gè)體進(jìn)行分割(例如需要對(duì)圖中出現(xiàn)的九把椅子的像素用不同顏色分別標(biāo)示出來(lái))。
最后,基于視頻的前景/物體分割(video segmentation)也是今后計(jì)算機(jī)視覺(jué)語(yǔ)義分割領(lǐng)域的新熱點(diǎn)之一,這一設(shè)定其實(shí)更加貼合無(wú)人駕駛系統(tǒng)的真實(shí)應(yīng)用環(huán)境。
按:本文作者魏秀參,謝晨偉南京大學(xué)計(jì)算機(jī)系機(jī)器學(xué)習(xí)與數(shù)據(jù)挖掘所(LAMDA),研究方向?yàn)橛?jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)。
References:
[1] Jianbo Shi and Jitendra Malik. Normalized Cuts and Image Segmentation, IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 22, No. 8, 2000.
[2] Carsten Rother, Vladimir Kolmogorov and Andrew Blake. GrabCut--Interactive Foreground Extraction using Iterated Graph Cuts, ACM Transactions on Graphics, 2004.
[3] Jonathan Long, Evan Shelhamer and Trevor Darrell. Fully Convolutional Networks for Semantic Segmentation. IEEE Conference on Computer Vision and Pattern Recognition, 2015.
[4] Fisher Yu and Vladlen Koltun. Multi-scale Context Aggregation by Dilated Convolutions. International Conference on Representation Learning, 2016.
[5] Shuai Zheng, Sadeep Jayasumana, Bernardino Romera-Paredes, Vibhav Vineet, Zhizhong Su, Dalong Du, Chang Huang and Philip H. S. Torr. Conditional Random Fields as Recurrent Neural Networks. International Conference on Computer Vision, 2015.
評(píng)論