帶你讀AI論文丨LaneNet基於實體分割的端到端車道線檢測
摘要:LaneNet是一種端到端的車道線檢測方法,包含 LanNet + H-Net 兩個網路模型。
本文分享自華為雲社群《》,作者:一顆小樹x。
前言
這是一種端到端的車道線檢測方法,包含LanNet+H-Net兩個網路模型。
LanNet是一種多工模型,它將例項分割任務拆解成“語義分割”和“對畫素進行向量表示”,然後將兩個分支的結果進行聚類,得到例項分割的結果。
H-Net是個小網路,負責預測變換矩陣H,使用轉換矩陣H對同屬一條車道線的所有畫素點進行重新建模。即:學習給定輸入影像的透視變換引數,該透視變換能夠對坡度道路上的車道線進行良好地擬合。
整體的網路結構如下:
論文地址:TowardsEnd-to-EndLaneDetection:anInstanceSegmentationApproach
開源資料集TuSimple:
開原始碼:
一、LanNet
LanNet對輸入影像進行例項分割,其中網路結構分為兩個方向,一個是語義分割,另一個是對畫素進行向量表示,最後將兩個分支的結果進行聚類,得到例項分割的結果。LaneNet輸出例項分割的結果,為每個車道線畫素分配一個車道線ID。
1.1網路結構
先看看網路結構:
分支1:語義分割,Segmentation,對畫素進行二分類,判斷畫素屬於車道線還是背景;
分支2:對畫素進行向量,Embedding,對畫素進行嵌入式表示,把影像特徵表示為嵌入空間中,特徵之間的關係對映在嵌入空間。
聚類,基於Mean-Shift演算法實現的,把將兩個分支的結果進行聚類,得到例項分割的結果。
LaneNet是基於ENet的encoder-decoder模型,如下圖所示,ENet由5個stage組成,其中stage2和stage3基本相同,stage1,2,3屬於encoder,stage4,5屬於decoder。
1.2語義分割
這部分是對畫素進行二分類,判斷畫素屬於車道線還是背景;並且高度不平衡,因此參考了ENet,損失函式使用的是標準的交叉熵損失函式。
設計語義分割模型時,為了處理遮擋問題,論文對被車輛遮擋的車道線和虛線進行了還原(估計);
Loss使用softmax_cross_entropy,為了解決樣本分佈不均衡的問題,使用了boundedinverseclassweight對loss進行加權:
其中,p為對應類別在總體樣本中出現的機率,c是超引數。
Loss的設計參考了:論文ENet:ADeepNeuralNetworkArchitectureforReal-TimeSemanticSegmentation
1.3畫素對映到嵌入空間
當分割識別得到車道後,為了知道哪些畫素歸這條車道,哪些歸那條車道,需要訓練一個車道instanceembedding分支網路。它能輸出一個車道線畫素點距離,歸屬同一車道的畫素點距離近,反之遠,基於這個策略,可聚類得到各條車道線。
為了區分車道線上的畫素屬於哪條車道,為每個畫素初始化一個embedding向量,並且在設計loss時,使屬同一條車道線的表示向量距離儘可能小,屬不同車道線的表示向量距離儘可能大。
這部分的loss函式是由三部分組成:方差損失、距離損失、迴歸損失:
其中,C是車道線數量,Nc是屬同一條車道線的畫素點數量,μc是車道線的均值向量,xi是畫素向量(pixelembedding)。
該loss函式源自於論文《SemanticInstanceSegmentationwithaDiscriminativelossfunction》
方差loss(Lvar):當畫素向量(pixelembedding)xi與對應車道線均值向量μc的距離大於δv時,模型會進行更新,使得xi靠近μc;
距離loss(Ldist):當不同車道線均值向量μca和μcb之間的距離小於δd時,模型會進行更新,使得μca與μcb遠離彼此;
方差loss(Lvar)使得畫素向量向車道線的均值向量μc靠近,距離loss(Ldist)則會推動聚類中心遠離彼此。
1.4聚類
embedding(畫素對映到嵌入空間)已經為聚類提供好的特徵向量了,利用這些特徵向量我們可以利用任意聚類演算法來完成例項分割的目標。
聚類是基於Mean-Shift演算法實現的,把將兩個分支的結果進行聚類,得到例項分割的結果。
首先使用meanshift聚類,使得簇中心沿著密度上升的方向移動,防止將離群點選入相同的簇中;之後對畫素向量進行劃分,直到將所有的車道線畫素分配給對應的車道。
二、H-Net
LaneNet的輸出是每條車道線的畫素集合,還需要根據這些畫素點回歸出一條車道線。傳統的做法是將圖片投影到俯檢視(鳥瞰圖)中,然後使用2階或者3階多項式進行擬合。在這種方法中,變換矩陣H只被計算一次,所有的圖片使用的是相同的變換矩陣,這會導致地平面(山地,丘陵)變化下的誤差。
為了解決這個問題,論文訓練了一個可以預測變換矩陣H的神經網路H-Net,網路的輸入是圖片,輸出是變換矩陣H:
透過置0對轉置矩陣進行約束,即水平線在變換下保持水平。(即座標y的變換不受座標x的影響)
由上式可以看出,轉置矩陣H只有6個引數,因此H-Net的輸出是一個6維的向量。H-Net由6層普通卷積網路和一層全連線網路構成,其網路結構如圖所示:
三、模型效果
車道線檢測效果,與其他模型對比
模型的精度高達96.4%,這個效果挺不錯了。
模型速度:
2018年:在NVIDIA1080TI上測得的512X256影像的速度。總的來說,車道檢測可以以52FPS的速度執行。檢測速度比較快了,實時性較高。
2020年:新增實時分割模型BiseNetV2作為Lanenet主幹,新模型在單幅影像推理過程中可以達到78fps。可以在此處找到基於BiseNetV2訓練的新Lanenet模型。
模型效果:
四、開原始碼
開原始碼:
該開原始碼是使用LaneNet深度神經網路模型,進行實時車道檢測(非官方版)
該模型由編碼器-解碼器階段、二進位制語義分割階段和使用判別損失函式進行實時車道檢測任務的例項語義分割組成。
程式碼的執行環境:(以下是親測的)
系統:ubuntu16.04(x64)
語言:Python3.6
深度框架:TensorFlow1.15.0(GPU版本)
其他依賴庫:cv2、matplotlib、scikit_learn、numpy等。
實踐過程:
1)建立conda環境
condacreate-nLineNetpython=3.6
2)進入剛才建立的環境
condaactivateLineNet
3)根據requirements.txt要求去安裝相關的依賴庫(這裡我也阿里雲加速安裝了)
pip3install-rrequirements.txt-i
看了一下這個的檔案,發現有點問題。
tensoflow重複了:tensorflow_gpu==1.15.0、tensorflow==1.15.0,根據使用情況刪除一個,我是準確使用GPU加速的,於是刪掉tensorflow==1.15.0。
4)安裝英偉達的cudatoolkit10.0版本
condainstallcudatoolkit=10.0
5)安裝英偉達深度學習軟體包7.6版本
condainstallcudnn=7.6.5
6)設定lanenet_model環境變數
exportPYTHONPATH="${PYTHONPATH}:your_path/lanenet-lane-detection/lanenet_model"
your_path是lanenet-lane-detection資料夾所在的絕對路徑。
7)下載模型
連結:提取碼:1024
一共4個檔案,30M左右。
然後在lanenet-lane-detection目錄下,新建一個子目錄,名為model_weights,存在這個4個模型檔案,待會用到。
8)測試模型
pythontools/test_lanenet.py--weights_pathmodel_weights/tusimple_lanenet.ckpt--image_path./data/tusimple_test_image/3.jpg
成功使用GPU加速:
語義分割和畫素嵌入效果:
實體分割效果:
模型效果:
參考:
cnblogs.com/xuanyuyt/p/11523192.html
LaneNet:TowardsEnd-to-EndLaneDetection:anInstanceSegmentationApproach
ENet:ADeepNeuralNetworkArchitectureforReal-TimeSemanticSegmentation
DiscriminativeLoss:SemanticInstanceSegmentationwithaDiscriminativelossfunction
論文地址:TowardsEnd-to-EndLaneDetection:anInstanceSegmentationApproach
開原始碼:
本文只提供參考學習,謝謝。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/756/viewspace-2795903/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 帶你讀AI論文:基於Transformer的直線段檢測AIORM
- 帶你讀論文 | 端到端語音識別模型模型
- Lane-Detection 近期車道線檢測論文閱讀總結
- 帶你讀論文丨基於視覺匹配的自適應文字識別視覺
- 端到端文字識別CRNN論文解讀RNN
- AAAI 2019 論文解讀 | 基於區域分解整合的目標檢測AI
- pytorch實現yolov3(5) 實現端到端的目標檢測PyTorchYOLO
- CVPR 2019|PoolNet:基於池化技術的顯著性檢測 論文解讀
- 帶你讀AI論文丨S&P21 Survivalism: Living-Off-The-Land 經典離地攻擊AI
- 應雲而生,一文看懂端到端的可觀測體系構建
- 一文搞懂基於透視變換的車道線擬合
- 輪廓檢測論文解讀 | 整體巢狀邊緣檢測HED | CVPR | 2015巢狀
- 論文復現丨基於ModelArts實現Text2SQLSQL
- 帶你讀論文:基於深度學習的影像分類中資料增強的有效性深度學習
- 基於AI的移動端自動化測試框架的設計與實踐AI框架
- 全景分割這一年,端到端之路
- 帶你看論文丨全域性資訊對於圖網路文件解析的影響
- 《基於深度學習的目標檢測綜述》論文獲發表深度學習
- All in one:如何搭建端到端可觀測體系
- 關於 B 端&C 端功能通用測試規則討論
- 省錢利器!基於TensorFlow的端到端驗證碼識別
- 一副AI耳機賣1200元?端側AI大模型+硬體= ?這場論壇帶你一探究竟AI大模型
- 一文讀懂目標檢測模型(附論文資源)模型
- Android 端測試基礎知識分享,附帶 mac 軟體分享AndroidMac
- 基於Web實現遠端與硬體互動Web
- 基於深度學習的入侵檢測系統綜述文獻概述——AI科研之路深度學習AI
- AI驅動的京東端到端補貨技術建設實踐AI
- 論文解讀丨表格識別模型TableMaster模型AST
- 論文解讀 | 基於神經網路的知識推理神經網路
- 基於Python實現的口罩佩戴檢測Python
- 一個端到端的基於 form 表單的檔案上傳程式,包含客戶端和伺服器端ORM客戶端伺服器
- Nature論文解讀 | 基於深度學習和心臟影像預測生存概率深度學習
- 基於頭肩部檢測的過線客流統計
- NLP帶來的“科幻感”超乎你的想象 - ACL2020論文解讀(一)
- 基於WIFI無線組網的水雨情遠端監測預警系統WiFi
- 目標檢測相關論文
- FCOS論文復現:通用物體檢測演算法演算法
- 基於GAN的字型風格遷移 | CVPR 2018論文解讀