自動駕駛感測器之攝像頭(十一)車載攝像頭影象識別主流演算法
歡迎關注我的微信公眾號:
阿寶1990
,每天給你汽車乾貨,我們始於車,但不止於車
前面章節闡述了攝像頭內部的工作原理,一系列的影象效果的處理,包括白平衡、畸變校正、色彩還原等一系列影象的處理,如果我們是做一臺手機基本上到這裡就結束了,處理完就給到顯示屏做顯示,但是這裡的影象需要給到CPU主機做自動駕駛,涉及到自動駕駛的視覺技術,視覺技術需要解決的是“攝像頭拍到的是什麼物體。
攝像頭拍到的影象,需要機器識別能讀懂是什麼物體,需要進行後續影象分割、物體分類、目標跟蹤、世界模型、多感測器融合、線上標定、視覺SLAM、ISP 等一系列步驟進行匹配與深度學習,其核心環節在於物體識別與匹配,或者運用AI 自監督學習來達到感知分析物體的目的,需要解決的是“我拍到的東西是什麼”的問題。
#FormatImgID_1##FormatImgID_2#
影象分隔技術:
數字影象處理是一個跨學科的領域,儘管其發展歷史不長,但由於影象處理在軍事、遙感、氣象等大型應用中有不斷增長的需求,並且心理學、生理學、計算機科學等諸多領域的學者們以數字影象為基礎研究視覺感知,因此,針對影象處理和分析問題的新方法層出不窮,逐漸形成了自己的科學體系。
影象分割是影象分析的第一步,是計算機視覺的基礎,是影象理解的重要組成部分,同時也是影象處理中最困難的問題之一。所謂影象分割是指根據灰度、彩色、空間紋理、幾何形狀等特徵把影象劃分成若干個互不相交的區域,
簡單的說就是在一副影象中,把目標從背景中分離出來。這裡屬於影象演算法中的萬里長征第一步,也是最重要的一步。
基於深度學習的影象分割
目前,受到廣泛關注的深度學習也應用於影象分割問題中。神經網路是深度學習中的重要方法,基於神經網路的影象分割方法的基本思想是透過訓練多層感知機來得到線性決策函式,然後用決策函式對畫素進行分類來達到分割的目的。這種方法需要大量的訓練資料。神經網路存在巨量的連線,容易引入空間資訊,能較好地解決影象中的噪聲和不均勻問題。
首先要了解什麼是神經網路,什麼是深度學習。
百度百科中對深度學習的定義是深度學習(DL, Deep Learning)是機器學習(ML, Machine Learning)領域中一個新的研究方向,它被引入機器學習使其更接近於最初的目標——人工智慧(AI, Artificial Intelligence)。這個定義太大了,反而讓人有點不懂,簡答來說,深度學習就是透過多層神經網路上運用各種機器學習演算法學習樣本資料的內在規律和表示層次,從而實現各種任務的演算法集合。各種任務都是啥,有:資料探勘,計算機視覺,語音識別,自然語言處理等。
可能有人會問那麼深度學習,機器學習還有人工智慧的關係是怎麼樣的呢?在這個部落格中有詳細介紹:一篇文章看懂人工智慧、機器學習和深度學習,我們這裡直接拿出結論:
AI:讓機器展現出人類智力
機器學習:抵達AI目標的一條路徑
深度學習:實現機器學習的技術
深度學習從大類上可以歸入神經網路,不過在具體實現上有許多變化,並不像大家聽到的一樣,覺得這兩個概念其實是同一個東西:
從廣義上說深度學習的網路結構也是多層神經網路的一種。更簡單來說,多層神經網路 做的步驟是:特徵對映到值。特徵是 人工 挑選。深度學習 做的步驟是 訊號->特徵->值。特徵是由 網路自己 選擇。
深度學習的核心是 特徵學習,旨在透過分層網路獲取分層次的特徵資訊,從而解決以往需要人工設計特徵的重要難題
。深度學習是一個框架,包含多個重要演算法:
Convolutional Neural Networks(CNN)卷積神經網路
AutoEncoder自動編碼器
Sparse Coding稀疏編碼
Restricted Boltzmann Machine(RBM)限制波爾茲曼機
Deep Belief Networks(DBN)深度信念網路
Recurrent neural Network(RNN)多層反饋迴圈神經網路神經網路
對不同的任務(影象,語音,文字),需要選用不同的網路模型才能達到更好的效果。
此外,最近幾年 增強學習(Reinforcement Learning) 與深度學習的結合也創造了許多了不起的成果,AlphaGo就是其中之一。
人類視覺原理
深度學習的許多研究成果,離不開對大腦認知原理的研究,尤其是視覺原理的研究。
1981 年的諾貝爾醫學獎,頒發給了 David Hubel(出生於加拿大的美國神經生物學家) 和TorstenWiesel,以及 Roger Sperry。前兩位的主要貢獻,是“發現了視覺系統的資訊處理”——可視皮層是分級的。如下圖所示:
進而透過大量試驗研究,發現了人類的視覺原理,具體如下:從原始訊號 攝入 開始(瞳孔攝入畫素 Pixels),接著做 初步處理(大腦皮層某些細胞發現邊緣和方向),然後 抽象(大腦判定,眼前的物體的形狀,是圓形的),然後 進一步抽象(大腦進一步判定該物體是隻氣球)。
下面是人腦進行人臉識別的一個示例。如下圖所示:
總的來說,人的視覺系統的資訊處理是 分級 的。從低階的V1區
提取邊緣特徵
,再到
V2區的 形狀或者目標的部分
等,再到更高層,整個目標、目標的行為 等。也就是說高層的特徵是低層特徵的組合,從低層到高層的特徵表示越來越抽象,越來越能表現語義或者意圖。而抽象層面越高,存在的可能猜測就越少,就越利於分類。
對於不同的物體,人類視覺也是透過這樣 逐層分級,來進行認知的。如下圖所示:
那麼可以很自然的想到:可以不可以模仿人類大腦的這個特點,構造多層的神經網路,較低層的識別初級的影象特徵,若干底層特徵組成更上一層特徵,最終透過多個層級的組合,最終在頂層做出分類呢?答案是肯定的,這也是許多深度學習演算法(包括CNN)的靈感來源。
神經網路
首先什麼是神經網路呢?神經網路也指的是 人工神經網路(Artificial Neural Networks,簡稱ANNs),是一種模仿生物神經網路行為特徵的演算法數學模型,由 神經元、節點與節點之間的連線(突觸) 所構成,如下圖所示:
每個神經網路單元抽象出來的數學模型如下,也叫 感知器,它接收多個輸入,產生一個輸出,這就好比是神經末梢感受各種外部環境的變化(外部刺激),然後產生電訊號,以便於轉導到神經細胞(又叫神經元)。如下圖所示:
單個的感知器就構成了一個簡單的模型,但在現實世界中,實際的決策模型則要複雜得多,往往是由多個感知器組成的多層網路,如下圖所示,這也是經典的神經網路模型,由 輸入層、隱含層、輸出層 構成。如下圖所示:
人工神經網路可以對映任意複雜的非線性關係,具有很強的魯棒性、記憶能力、自學習等能力,在分類、預測、模式識別等方面有著廣泛的應用。
具體在影象分隔中的神經網路演算法:
具體原理如下:
透過下采樣+上取樣:Convlution + Deconvlution/Resize結合多尺度特徵融合:特徵逐點相加/特徵channel維度拼接畫素級別的segbement map:對每一個畫素點進行判斷類別。
網路結構的選擇將直接影響影象分割效果,常見的網路結構包括:VGG、FCN、Deconvnet、SegNet、Mask-RCNN。Image Segmentation(影象分割)網路結構比較。
在影象分割的發展過程中,按照目的不同,逐漸從普通分割發展到語義分割,再從語義分割發展到例項分割:
1、普通分割將不同分屬不同物體的畫素區域分開。如前景與後景分割開,狗的區域與貓的區域與背景分割開。
2、語義分割在普通分割的基礎上,分類出每一塊區域的語義(即這塊區域是什麼物體)。如把畫面中的所有物體都指出它們各自的類別。
3、例項分割在語義分割的基礎上,給每個物體編號。如這個是該畫面中的汽車A,那個是畫面中的汽車B。
例項分割是目前最具挑戰的任務之一,下面將主要對基於Mask R-CNN的主流影象分割方法和例項分割新方法Deep Snake進行介紹。
影象分割技術發展至今,Mask R-CNN 的Pipeline幾乎是目前做instance segmentation的大多數工作參考的方案。
Mask R-CNN將Object Detection與Semantic Segmentation合在了一起做。它的特點主要有以下幾點:
第一,神經網路有了多個通道輸出。Mask R-CNN使用類似Faster R-CNN的框架,Faster R-CNN的輸出是物體的bounding box和類別,而Mask R-CNN則多了一個通道,用來預測物體的語義分割圖。也就是說神經網路同時學習兩項任務,可以互相得到反饋,訓練模型引數權重。
第二,在語義分割中使用Binary Mask。原來的語義分割預測類別需要使用0 1 2 3 4等數字代表各個類別。在Mask R-CNN中,檢測分支會預測類別。這時候分割只需要用0 1預測這個物體的形狀面具就行了。
第三,Mask R-CNN基本的pipeline是先檢測物體矩形框,然後在矩形框中做逐畫素分割。並且提出了RoiAlign用來替換Faster R-CNN中的RoiPooling。RoiPooling的思想是將輸入影象中任意一塊區域對應到神經網路特徵圖中的對應區域。RoiPooling使用了化整的近似來尋找對應區域,導致對應關係與實際情況有偏移。這個偏移在分類任務中可以容忍,但對於精細度更高的分割則影響較大。為了解決這個問題,RoiAlign不再使用化整操作,而是使用線性插值來尋找更精準的對應區域。效果就是可以得到更好地對應。實驗也證明了效果不錯。
但是這樣的處理方式其實有一些侷限性,也是今天本文主要介紹的Deep Snake在處理例項分割時擅長解決的問題:
1、在Mask R-CNN矩形框中做逐畫素分割會受限於矩形框的準確度。
如果矩形框精度差,如覆蓋到一部分物體,那就算框中的分割精度做的再高,也無法得到正確的instance mask。
2、逐畫素分割在生產和後續計算中計算量巨大
因為逐畫素分割計算量大,所以網路一般將矩形框區域downsample為28x28的網格,然後進行分割,之後再把分割結果upsample到原圖大小。這個upsample根據Mask R-CNN論文裡的統計是有15ms的,比較費時。另一個問題是,在28x28網格上做分割會損失精度。即使28x28的網格上的分割結果完全正確,upsample到原圖的mask仍然是很粗糙的。
3、逐畫素分割不適用於一些物體
比如細胞和文字,因此不適合OCR(光學字元識別)。
Deep Snake
針對主流影象分割方法在例項分割中面對的問題,Deep Snake考慮到逐畫素分割有諸多限制,因此選擇用contour來表示物體的形狀。contour是一組有序的點,而且是首尾相連的。比如圖片中貓的邊緣就是一個contour。
與稠密畫素相比contour的兩大優勢
1、計算量遠遠小於稠密畫素,引數量也比較少。
這樣使得例項的分割的速度上限更高,也能更廉價地使用分割結果。這裡舉個例子就是跟蹤任務。現在跟蹤任務主要還是使用box做跟蹤,用物體的畫素點做跟蹤任務計算量會很大。如果把畫素點換成用contour做跟蹤任務就會好很多。因此contour也更適用於細胞、文字這些物體的分割。
2、傳統的影象分割領域一直都有用contour做分割。
有一個很經典的論文是Snakes:Active contour models。 [2]。而本文中介紹的方法DeepSnake,顧名思義其實就是用深度學習的方法實現了傳統Snake。傳統Snake做影象分割的時候要求先給定一個初始的 contour。這個contour大概圍繞著目標物體
Deep Snake的最佳化
傳統Snake的一個很大問題是他的目標函式和最最佳化都是人工設定的,對資料的噪聲比較敏感,容易收斂到區域性最優點。為了解決這個問題,Deep Snake用深度學習來做這個最佳化過程。
contour是一組有序的、首尾相連的點,可以看作一個cycle graph。這種cycle graph每個節點的鄰居節點為2,順序固定,所以可以定義卷積核。論文引入Circular convolution來處理contour,下圖是Circular convolution的示例圖:
1、Blue nodes 代表定義在contour的 輸入特徵值
2、Yellow nodes 代表卷積核,Green nodes為卷積輸出,circular convolution為
和傳統Snake類似,給定一個初始 contour,基於圖片的特徵圖,給contour的每個節點提取一個特徵值,得到一個定義在contour上的特徵。然後用Circular convolution構成的網路進行contour上的特徵工程,最後對映為指向物體輪廓的補償,用於變形contour。
傳統的Snake要求有一個比較準確的初始化 contour才能比變形得比較好,所以初始化contour對後續的變形十分關鍵。
受到ExtremeNet的影響,作者用物體extreme points來構造初始contour。物體的extreme point是物體在圖片中最上邊、最左邊、最下邊和最右邊的點。在每個點上延伸出一條線段,然後將線段連線起來,得到一個八邊形,把這個八邊形作為initial contour。
Pipeline for instance segmentation
1、透過預測extreme point來得到initial contour,然後將initial contour變形為物體邊緣:
2、用detector檢測得到一個矩形框,將矩形框四條邊的中點連線起來,就得到一個菱形contour。透過Deep Snake來處理這個輪廓,從而得到extreme point。用extreme point構造Octagon contour,然後用Deep Snake來處理這個contour,從而得到物體輪廓。
參考資料:
1、
https://
mp。weixin。qq。com/s/RVIO
lT_Yr5GmpNQ12mfBFQ
2、
https://
mp。weixin。qq。com/s/y1CC
WyG8pJ8tONZTiiYXfw
3、
https://
mp。weixin。qq。com/s/ZZX6
NyGKTpC8awscJV6PFg
4、
https://
mp。weixin。qq。com/s/bQ_-
FJbxDr-h9tYw1G1KZA
5、
https://
mp。weixin。qq。com/s/GfJ_
u81VoxgE4BCAYm4IOQ
6、
https://
mp。weixin。qq。com/s/ewmX
5qFkidvL8z21SE8DFg
7、
https://
mp。weixin。qq。com/s/XRZ1
97HIiYDuBF55MaNsog
8、
https://
mp。weixin。qq。com/s/YS_2
agnfZl6Otm6tvGy_7A
9、
https://
mp。weixin。qq。com/s/2E0a
Qeb_9BFAvbVlu-tdIg
10、
https://
mp。weixin。qq。com/s/bxub
sR_8orap8GRsUB1xHQ
11、
https://
mp。weixin。qq。com/s/eNjb
HZaaaa2YRt_X0Ke1pw
12、
https://
mp。weixin。qq。com/s/oq_f
MnMMlF0HC_J5VJ-xUQ
13、
https://
mp。weixin。qq。com/s/iA1c
Ozz5tLiUREQIaNsNXw
14、
https://
mp。weixin。qq。com/s/XWpw
gZ_nlx7pjewVtjckWQ
https://
mp。weixin。qq。com/s/FiW0
S6PRjdFWW8eeCiJWxQ