IoT and ADAS? - Internet of Things: Explained!
來源:大牛講堂
按:作者黃暢博士,地平線機器人技術聯合創始人&算法副總裁,深度學習專家、前百度主任架構師(T10),長期從事電腦視覺、機器學習、模式辨識和資訊檢索方面的研究。
本科、碩士以及博士,畢業於中國清華大學計算機科學與技術系,曾經在美國南加州大學和 NEC 美國研究院擔任研究員。
2012年加入百度美國研發中心,2013年參與組建百度深度學習研究院(IDL),任高級科學家、主任研發架構師。
黃暢博士在繼山世光教授以及他的博士生鄔書哲的演講之後,又補充介紹了DenseBox系列物體檢測算法。
大家可能對這個方法不是特別熟悉,其實早在2014年的時候,地平線就已經開始圍繞這個方法,做了各種各樣的工作,不斷迭代並產生了許多新的改進,這些改進在後來的一些公開的算法中,也能看到不少影子。
DenseBox已經在地平線的ADAS系統中,得到了廣泛引用。
1.ADAS輔助駕駛系統中的具體問題
黃暢博士圍繞一個具體的應用——ADAS即高級輔助駕駛系統來講目標檢測。在ADAS的應用場景中,物體檢測面臨的問題更加困難,這個問題並不僅僅,來自於對檢測精度更高的要求,也來自於檢測問題本身更加複雜。
不僅要辨識是什麼東西,還需要要做精準的定位。精確的定位,能夠幫助人們知道物體的距離, 這對ADAS系統中的前向碰撞預警,是十分重要的。
電腦視覺當中有很多的問題,比如說檢測、跟蹤、辨識、分割,如果在這裡面,選一個最重要的問題,恐怕絕大部分的同學都會選擇物體檢測。
物體檢測在各種各樣的應用系統當中,往往是第一步,也是最重要一步。物體檢測相對於圖像辨識,它的難度更大,因為檢測還需要對物體進行精確的定位,還是個搜索問題。
在ADAS 產品當中,車輛檢測是一個非常重要的問題,同時也面臨巨大的挑戰。以KITTI車輛檢測數據集為例,比如說這個車輛,在畫面當中只出現一部分,這個是Truncation 導致的問題;然後車輛大小差距很大,這是Scale Variation導致的問題;然後車輛因為視角的原因,會被很多車輛遮擋,這是Occlusion導致的問題;這些都是物體檢測面臨的挑戰。
那麼如果直接嘗試用 Faster R-CNN或者YOLO,會出現什麼樣的問題呢? 首先不能很好地處理面積非常小的物體,因為這些方法,尤其是YOLO,最終在分類的時候,是基於低解析度的特徵圖像,這導致原圖像中面積很小的物體,在經過多次的卷積之後,其資訊很難在低解析度的特徵圖中進行保存。
2.地平線的解決方案
地平線提出的方法叫做 DenseBox(V2)。相比起 YOLO及SSD,最明顯的不同在於DenseBox(V2)輸出預測圖的解析度很高。用DenseBox(V2)的方法,輸出大小為原始圖像的八分之一, 即在原圖中每移動8個像素,輸出中就有一個對應的檢測框,這就保證能夠在結果中保留小的物體,以及嚴重遮擋的物體。
2.1 標注生成與模型設計
要訓練一個檢測物體的神經網路,首先要用結構化的資訊去描述圖像。對於那些關注的物體,地平線會在合適的尺度,和合適的位置進行像素分類,即判斷物體中心,是否在這個像素附近。
其實有點像把物體檢測問題,變成一個圖像分割問題來看待。對於很可能包含物體的圖像區域,還需要知道物體的檢測框在哪裡。針對檢測框,地平線用兩個點來描述,即框的左上角和右下角。
地平線設計的網路還有一個特點,就是對於不同的尺度輸出,有不同的分支。網路底層的卷積被所有分支共享,用來學習低層的圖像特徵,到了中間以後,會逐步分出三個分支, 去描述三個尺度上物體的分布。
以左邊的圖為例,一大一小的兩輛車,都可以在網路中找到合適的尺度去定位。除了產生正樣本的區域, 即左圖中紅色的區域外, 還會產生灰色的區域(gray zone) 或者是說模糊的區間。這些灰色地帶被判別為正樣本,或者負樣本,都是不合理的, 訓練的時候,模型不應該對這些區域的預測正確與否,產生懲罰。
正如前面所提到,除了產生正負樣本區域以外,還需要回歸物體框的位置。地平線用相對距離去描述框的位置,相對於當前這個物體的中心,框的兩個角點水平和垂直方向距離是多少。
在實際應用中,地平線發現一個很重要的小技巧,可以提升檢測框的定位精度。
不僅僅要對正樣本做回歸,對於灰度區域(gray zone)也需要做回歸。這麼做的目的是希望檢測器,即使把灰度區域當成正樣本,那麼還要求檢測框的位置是準確的。
地平線在設計網路的時候,也借鑒了全卷積網路,做圖像分割的方法。如果只做簡單的全卷積,在高層的特徵空間裡,很難保留物體的細節特徵。這對於小物體的檢測,以及遮擋物體的定位,都會帶來不利的影響。
圖像分割中常常使用特徵融合的方法,即把淺層的特徵與高層的特徵,經過尺度變換後拼在一起。拼接的方式基本有兩種,一種是像GoogLeNet一樣,按channel維度拼起來,第二種就是孫健的ResNet那樣,把它們直接相加。
現在這種做法也變成了趨勢,越來越多人做視覺任務,都用了類似的方法。經過多層卷積,下採樣後,得到低解析度的高維表達,可以抽象出物體的高層語意表達,捕獲物體的上下文空間資訊,相當於是一個bottom-up的表達抽象過程。然後再逐步把前面層的特徵組合起來,補充細節解析度,這相當於再做一個top-down的修正。
2.2 模型訓練
地平線採用多任務學習(multi-task learning)的方式,對網路進行端到端(end-to-end)的訓練。多任務訓練體現,在同時進行分類和回歸的學習,以及不同尺度對應的網路分支,也會進行監督學習。
多任務學習有助於網路訓練的整體穩定,同時還能加快收斂。除此之外對於分類任務,地平線也用了在線難負樣本挖掘(online hard negative mining)方法訓練CNN。
這個方法最近被證實,在訓練CNN檢測器的時候很有效。其實在很早以前大家用boosting、DPM等方法的時候,就已經這麼做了,地平線也很早就在我們的方法裡頭用了這個策略。
具體來說,會首先保持正負樣本比例為1:1,然後讓所有的負樣本,一半從最難(即分類最糟糕)的一部分中採樣,另一半則為隨機採樣。另外,我們用hinge loss來做分類,用簡單的L2 loss 做檢測框的回歸。
還有個細節就是地平線在訓練中,還用了梯度修剪(clip gradient)的方法來緩和訓練過程中梯度不穩定的情況。
2.3 性能測評
上圖是地平線用DenseBox(V2)的方法,在KITTI數據集上的實驗結果,這個方法在很長一段時間內,在車輛檢測這個任務上,都是排名第一。
地平線主要試驗了兩個模型版本,一個版本是叫Direwolf,它的參數大概有22M個,另外一個模型叫Peregrine,參數大概是1.4M個,但是計算量,只有前者的三十分之一, 在GPU上可以做到即時。
相比於同一時期的其他方法, 例如Faster R-CNN等,不能達到即時檢測,準確度甚至比Peregrine還是要差一點。
3.物體檢測與ADAS
除了車輛檢測之外,地平線還關注車道線,以及行人檢測。不僅如此,地平線還對於可行駛區域在圖像中的分割問題,也非常感興趣,因為在ADAS問題中,它和物體檢測技術是非常互補的。
物體檢測可以處理像車、交通標誌牌、行人等形狀規則的剛體(rigid object) ;對於像路面,馬路欄竿等結構不規則的非剛體,圖像分割是更合適的選擇。
同時可行駛區域的分割,也可以提供相對保守的策略,保證行駛的安全。前段時間特斯拉的嚴重交通事故,就是因為過於依賴物體檢測技術造成的。
DenseBox是一個完整的,基於CNN的物體檢測框架,它通過精心的網路設計,能夠處理不同尺度的檢測,實現更精確的定位回歸。模型訓練中所採用特徵融合,多任務訓練,難負樣本挖掘等方法,也是被廣泛證明有效的。
同時它也KITTI上的結果也從另一個角度說明,只要模型設計和訓練得當,小模型已經有足夠好的效果。但是對於ADAS而言,光有檢測是遠遠不夠的,往往需要通過系統的冗餘,採取相對保守的策略,來規避最差的情況。
黃暢博士認為,在ADAS應用中,不應該只是在平均期望的意義下優化問題,二是應該努力規避最差的情況。駕駛本身就是高風險活動,一旦出錯將造成嚴重的後果。
因此,整個系統的冗餘是非常必要的,這個冗餘來自於不同的傳感器,來自於不同的方法,來自於系統中不同的任務和目標。
4.總結
最後,黃暢博士對上面的介紹做一個簡單的總結:
DenseBox是一個完整的,基於CNN的物體檢測框架,它通過精心的網路設計,能夠處理不同尺度的檢測,實現更精確的定位回歸。模型訓練中所採用特徵融合,多任務訓練,難負樣本挖掘等方法,也是被廣泛證明有效的。同時它也KITTI上的結果也從另一個角度說明,只要模型設計和訓練得當,小模型已經有足夠好的效果。但是對於ADAS而言,光有檢測是遠遠不夠的,往往需要通過系統的冗餘,採取相對保守的策略,來規避最差的情況。
0 comments:
張貼留言