當前位置:
首頁 > 知識 > 使用深度學習來理解道路場景

使用深度學習來理解道路場景

本文為AI研習社編譯的技術博客,原標題 Road scene understanding using Deep Learning,作者為 Bogdan Djukic。

翻譯 | 王禕 校對 | 陶玉龍 整理 |餘杭

將語義分割的最終輸出應用到道路識別場景中

場景理解

語義分割是深度學習的方法之一,通過語義分割,我們可以對圖片中的每一個像素賦予含義,即將像素劃分到一個預先設定的類中。從上邊的 GIF 圖可以看出,我們在語義切分的過程中將像素分為兩類(分別是道路和非道路),其中我們將識別為道路的部分標上了顏色。

通過語義分割的方法,我們可以根據特定的需求來將場景進行切分。通過這一點,汽車可以識別出當前場景下哪一塊是可行駛區域,這一點對無人駕駛汽車來說尤為重要。


工作原理

語義分割的方法之一就是使用全卷積網路(FCN),一篇來自於伯克利大學的論文很好地闡釋了其原理和架構。我們接下來的實現就會基於這篇論文來展開。

傳統的卷積網路是由卷積層和幾個全連接層組合而成的。這類架構對於分類問題來說很有用(諸如:這是一條路嗎?),但是對於需要在圖片中定位道路這種問題(諸如:路在哪裡?),我們就需要一個新的網路來維護這些特殊信息。這就是 FCN 產生的由來,也向人們傳達了語義分割最先進的成果。

如何構建 FCN

要構建 FCN,有以下三個要點:

將全連接層都替換為1x1卷積層

通過顛倒卷積層的順序引入上採樣

添加跳躍連接

接下來讓我們詳細地看看應該如何實現上述步驟。

我們的FCN架構包含兩個部分:編碼器和解碼器

FCN 架構

對於編碼器的構建,我們利用已在 ImageNet 數據集上預訓練的 VGG16 模型進行編碼,我們將 VGG16 模型上的全連接層全部用卷積來替代。編碼器將圖片中的特徵抽取出來,並且把它應用在解碼器中。

構建完編碼器後,下一步就是構建解碼器,解碼器是通過轉置卷積層,對編碼器末層進行上採樣來實現的。卷積轉置本質上來說就是反向卷積

FCN架構是由預訓練模型、全連接層替換和卷積轉置構成的架構

在最後,我們會在某些特定的層之間添加跳躍層,其中這些特定層需要能夠允許網路使用不同的像素大小。跳躍層在降低信息流失的同時也保證了網路可以很好地縱觀整個圖片。由於傳統的卷積網路往往會聚焦於圖片中的某一部分,因此添加跳躍層能夠很好地提升切分效果。

FCN 中的跳躍連接

由於跳躍層的添加可能會極大地影響到模型的大小,因此添加的時候要謹慎一點。


最終成果

利用 FCN 進行道路理解被作為 Udacity Self Driving nano degree program 項目的一部分而得以實現。其中我使用 Python 和 TensorFlow 構建並訓練了模型。我的模型訓練是在 NVIDIA 1080Ti 上進行的,訓練 30 遍花了不到 1 個小時的時間。輸出如下圖:

結論

相關代碼可以參見我的 GitHub 主頁:

https://towardsdatascience.com/road-scene-understating-using-deep-learning-c3610f6b1c4


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI研習社 的精彩文章:

微軟研究院發布開放數據項目,公開 15 類內部研究數據集
如何從數據挖掘比賽中脫穎而出?快來 get 阿里媽媽廣告演算法賽亞軍套路吧!

TAG:AI研習社 |