日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

无人驾驶环境感知 | 01 车道线检测网络LanNet原理及实现

發(fā)布時(shí)間:2023/12/16 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 无人驾驶环境感知 | 01 车道线检测网络LanNet原理及实现 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 一、LaneNet 算法詳解
      • 1.1 LaneNet 簡(jiǎn)介
      • 1.2 整體結(jié)構(gòu)分析
      • 1.3 LaneNet 網(wǎng)絡(luò)結(jié)構(gòu)
      • 1.4 H-Net 網(wǎng)絡(luò)結(jié)構(gòu)
      • 1.5 LaneNet 性能優(yōu)點(diǎn)
    • 二、手把手帶你實(shí)現(xiàn) LaneNet
      • 2.1 項(xiàng)目介紹
      • 2.2 環(huán)境搭建
      • 2.3 準(zhǔn)備工作
      • 2.4 模型測(cè)試
    • 1024,祝大家節(jié)日快樂(lè)!喜歡就給我點(diǎn)個(gè)贊吧,您的支持是我創(chuàng)作的最大動(dòng)力!



資源匯總:

論文下載地址:https://arxiv.org/abs/1802.05591
github項(xiàng)目地址:https://github.com/MaybeShewill-CV/lanenet-lane-detection
LanNet論文翻譯:車(chē)道線檢測(cè)網(wǎng)絡(luò)之LaneNet

關(guān)注下方公主號(hào)【AI 修煉之路】,回復(fù)【LaneNet】,獲得LanNet資料合集


一、LaneNet 算法詳解

1.1 LaneNet 簡(jiǎn)介

傳統(tǒng)的車(chē)道線檢測(cè)方法依賴于手工提取的特征來(lái)識(shí)別,如顏色的特征、結(jié)構(gòu)張量、輪廓等,這些特征還可能與霍夫變換、各種算子或卡爾曼濾波器相結(jié)合。在識(shí)別車(chē)道線之后,采用后處理技術(shù)來(lái)過(guò)濾錯(cuò)誤檢測(cè)并將其分組在一起以形成最終車(chē)道。然而,由于道路場(chǎng)景的變化,這些傳統(tǒng)的方法容易出現(xiàn)魯棒性問(wèn)題!

更新的方法利用深度學(xué)習(xí)模型,這些模型被訓(xùn)練用于像素級(jí)車(chē)道分割。但這些方法僅限于檢測(cè)預(yù)定義的固定數(shù)量的車(chē)道,例如當(dāng)前車(chē)道,并且不能應(yīng)對(duì)車(chē)道改變。

基于此,2018年Davy Neven等人提出一種新的車(chē)道線檢測(cè)網(wǎng)絡(luò)LaneNet,LaneNet主要做出了如下兩個(gè)貢獻(xiàn)

  • 將車(chē)道檢測(cè)問(wèn)題歸結(jié)為一個(gè)實(shí)例分割問(wèn)題,其中每條車(chē)道都形成了自己的實(shí)例,可以端到端地進(jìn)行訓(xùn)練。
  • 構(gòu)建了一個(gè)新的網(wǎng)絡(luò)H-Net,用于學(xué)習(xí)給定輸入圖像的透視變換參數(shù),該透視變換能夠?qū)ζ露鹊缆飞系能?chē)道線進(jìn)行良好地?cái)M合,克服了魯棒性不好的問(wèn)題。

1.2 整體結(jié)構(gòu)分析

作者提出了一個(gè)多分支的網(wǎng)絡(luò)結(jié)構(gòu),包含一個(gè)二值化分割網(wǎng)絡(luò)(lane segmentation)和一個(gè)實(shí)例分割網(wǎng)絡(luò)(lane embedding),從而實(shí)現(xiàn)端到端、任意數(shù)量的車(chē)道線檢測(cè)。具體來(lái)說(shuō),二值分割網(wǎng)絡(luò)輸出所有的車(chē)道線像素,而實(shí)例分割網(wǎng)絡(luò)將輸出的車(chē)道線像素分配到不同的車(chē)道線實(shí)例中。整體的網(wǎng)絡(luò)結(jié)構(gòu)圖如下:

另一方面,數(shù)據(jù)集輸入到H-Net網(wǎng)絡(luò)中,學(xué)習(xí)到透視變換參數(shù)H矩陣。用于不同車(chē)道線實(shí)例的像素,進(jìn)行車(chē)道線擬合,從而得到上圖所示連續(xù)點(diǎn)狀的車(chē)道線。

1.3 LaneNet 網(wǎng)絡(luò)結(jié)構(gòu)

LaneNet的整體網(wǎng)絡(luò)結(jié)構(gòu)如下:

二值化分割網(wǎng)絡(luò)

Lanenet的一個(gè)分支為二值化分割網(wǎng)絡(luò),該網(wǎng)絡(luò)將車(chē)道線像素與背景區(qū)分開(kāi)。由于目標(biāo)類(lèi)別是2類(lèi)(車(chē)道/背景),并且高度不平衡,因此參考了ENet,損失函數(shù)使用的是標(biāo)準(zhǔn)的交叉熵?fù)p失函數(shù)。

實(shí)例分割網(wǎng)絡(luò)

該分支網(wǎng)絡(luò)參考了《Semantic Instance Segmentation with a Discriminative Loss Function》,使用基于one-shot的方法做距離度量學(xué)習(xí),將該方法集成在標(biāo)準(zhǔn)的前饋神經(jīng)網(wǎng)絡(luò)中,可用于實(shí)時(shí)處理。該分支網(wǎng)絡(luò)訓(xùn)練后輸出一個(gè)車(chē)道線像素點(diǎn)距離,基于歸屬同一車(chē)道的像素點(diǎn)距離近,不同車(chē)道線像素點(diǎn)距離遠(yuǎn)的基本思想,利用聚類(lèi)損失函數(shù)聚類(lèi)得到各條車(chē)道線。

聚類(lèi)損失函數(shù)

損失函數(shù)如下:

?? ?[x]+=max(0,x)[x]_+=max(0, x)[x]+?=max(0,x)

?? ?Ltotal=Lvar+LdistL_{total}=L_{var}+L_{dist}Ltotal?=Lvar?+Ldist?

其中,各個(gè)參數(shù)表示如下:

  • C——表示車(chē)道線實(shí)例個(gè)數(shù);
  • NcN_cNc?——每個(gè)車(chē)道線實(shí)例中像素的個(gè)數(shù);
  • ucu_cuc?——每個(gè)車(chē)道線實(shí)例的像素中心;
  • LvarL_{var}Lvar?是方差損失,他的目的是為了降低類(lèi)內(nèi)距離
  • LdistL_{dist}Ldist?是距離損失,它的目的是增大類(lèi)間距離 (不同車(chē)道線之間的距離);

網(wǎng)絡(luò)結(jié)構(gòu)圖

LaneNet的架構(gòu)基于編碼器-解碼器網(wǎng)絡(luò)ENet,該網(wǎng)絡(luò)是由5個(gè)階段組成。前3個(gè)階段是編碼器網(wǎng)絡(luò),進(jìn)行了兩次下采樣;后兩個(gè)階段是解碼器網(wǎng)絡(luò),進(jìn)行了兩次上采樣。

LaneNet在該網(wǎng)絡(luò)的基礎(chǔ)上修改成了雙分支網(wǎng)絡(luò)。由于ENet的編碼器比解碼器包含更多的參數(shù),完全在兩個(gè)任務(wù)之間共享完整的編碼器將導(dǎo)致不令人滿意的結(jié)果。因此,LaneNet只在兩個(gè)分支之間共享前兩個(gè)階段(1和2),留下ENet編碼器的階段3和完整的ENet解碼器作為每個(gè)單獨(dú)分支的主干。分割分支的最后一層輸出單通道圖像,用于二值化分割;而實(shí)例分割分支的最后一層輸出N通道圖像,其中N是實(shí)例維度。每個(gè)分支的損失項(xiàng)都是相等加權(quán)的,并通過(guò)網(wǎng)絡(luò)反向傳播。

1.4 H-Net 網(wǎng)絡(luò)結(jié)構(gòu)

LaneNet網(wǎng)絡(luò)輸出的是每條車(chē)道線的像素集合,常規(guī)的處理是將圖像轉(zhuǎn)為鳥(niǎo)瞰圖,然后用二次或三次多項(xiàng)式擬合出彎曲的車(chē)道線。然而,目前所使用的透視變換矩陣的參數(shù)通常是預(yù)先設(shè)定、不會(huì)改變的,在面對(duì)水平線波動(dòng)的影響(如上下坡)等情況下的車(chē)道線擬合并不準(zhǔn)確,魯棒性不強(qiáng)。因此,作者提出了H-net模型,用來(lái)學(xué)習(xí)透視變換矩陣的參數(shù)H。


H有6個(gè)自由度,放置零是為了強(qiáng)制約束,即在變換下水平線保持水平。

H-NET的網(wǎng)絡(luò)體系結(jié)構(gòu)較小,由3x3卷積、BN層 和 Relu 的連續(xù)塊構(gòu)成。使用最大池化層來(lái)降低維度,并在最后添加2個(gè)全連接層。完整的網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示:

最后一個(gè)全連接層的結(jié)點(diǎn)數(shù)是6,對(duì)應(yīng)的就是H矩陣中的6個(gè)參數(shù)。

1.5 LaneNet 性能優(yōu)點(diǎn)

檢測(cè)速度。在英偉達(dá)1080Ti顯卡上進(jìn)行測(cè)試,檢測(cè)一幀大小為512x512的彩色圖片,耗時(shí)19ms,因此每秒可處理50幀左右。

檢測(cè)精度。 通過(guò)使用LaneNet結(jié)合三階多項(xiàng)式擬合和H-Net的變換矩陣,在tuSimple挑戰(zhàn)中檢測(cè)精度達(dá)到96.4%,獲得了第四名,與第一名相比只有0.5%的差異。結(jié)果可以在下表中看到。

二、手把手帶你實(shí)現(xiàn) LaneNet

2.1 項(xiàng)目介紹

該項(xiàng)目在github上已經(jīng)開(kāi)源,獲得了1.3k的星標(biāo),想試試的同學(xué)可克隆下來(lái):https://github.com/MaybeShewill-CV/lanenet-lane-detection,如果打不開(kāi),也可以從我的百度云網(wǎng)盤(pán)下載:LaneNet資料合集 ,提取碼:o1kf

代碼結(jié)構(gòu)和各部分功能如下:

lanenet-lane-detection ├── config //配置文件 ├── data //一些樣例圖片和曲線擬合參數(shù)文件 ├── data_provider // 用于加載數(shù)據(jù)以及制作 tfrecords ├── lanenet_model │ ├── lanenet.py //網(wǎng)絡(luò)布局 inference/compute_loss/compute_acc │ ├── lanenet_front_end.py // backbone 布局 │ ├── lanenet_back_end.py // 網(wǎng)絡(luò)任務(wù)和Loss計(jì)算 inference/compute_loss │ ├── lanenet_discriminative_loss.py //discriminative_loss實(shí)現(xiàn) │ ├── lanenet_postprocess.py // 后處理操作,包括聚類(lèi)和曲線擬合 ├── model //保存模型的目錄semantic_segmentation_zoo ├── semantic_segmentation_zoo // backbone 網(wǎng)絡(luò)定義 │ ├── __init__.py │ ├── vgg16_based_fcn.py //VGG backbone │ └─+ mobilenet_v2_based_fcn.py //mobilenet_v2 backbone │ └── cnn_basenet.py // 基礎(chǔ) block ├── tools //訓(xùn)練、測(cè)試主函數(shù) │ ├── train_lanenet.py //訓(xùn)練 │ ├── test_lanenet.py //測(cè)試 │ └──+ evaluate_dataset.py // 數(shù)據(jù)集評(píng)測(cè) accuracy │ └── evaluate_lanenet_on_tusimple.py // 數(shù)據(jù)集檢測(cè)結(jié)果保存 │ └── evaluate_model_utils.py // 評(píng)測(cè)相關(guān)函數(shù) calculate_model_precision/calculate_model_fp/calculate_model_fn │ └── generate_tusimple_dataset.py // 原始數(shù)據(jù)轉(zhuǎn)換格式 ├─+ showname.py //模型變量名查看 ├─+ change_name.py //模型變量名修改 ├─+ freeze_graph.py//生成pb文件 ├─+ convert_weights.py//對(duì)權(quán)重進(jìn)行轉(zhuǎn)換,為了模型的預(yù)訓(xùn)練 └─+ convert_pb.py //生成pb文

2.2 環(huán)境搭建

根據(jù)開(kāi)源作者描述,其測(cè)試的環(huán)境為:

  • ubuntu 16.04
  • python3.5
  • cuda-9.0
  • cudnn-7.0
  • GTX-1070 GPU
  • tensorflow 1.12.0

我使用的環(huán)境與配置為:

  • ubuntu16.04系統(tǒng)
  • PyCharm 2020
  • python3.6
  • tensorflow1.13.1-gpu
  • cuda-10.0
  • cudnn7.6.4
  • opencv4.0.0
  • RTX 2070 GPU

想嘗試的朋友,可以參考上面兩種配置,也可以自行嘗試其他的版本。

2.3 準(zhǔn)備工作

如果想要自行訓(xùn)練的同學(xué),可以下載TuSimple數(shù)據(jù)集,進(jìn)行訓(xùn)練。同樣,我們也可以直接使用官方訓(xùn)練好的模型,來(lái)輸入圖片,看看測(cè)試效果。為了方便,下面我們直接加載已經(jīng)訓(xùn)練好的模型,進(jìn)行本地測(cè)試。

(1) 下載TuSimple數(shù)據(jù)集,如果不訓(xùn)練可以跳過(guò)這一步。

(2) 下載訓(xùn)練好的模型,下載鏈接:LaneNet資料合集 ,提取碼:o1kf

下載完后,我們將模型文件tusimple_lanenet放在工程目錄下的model文件中,如下圖所示:

2.4 模型測(cè)試

完成環(huán)境配置和模型部署后,我們就可以進(jìn)行測(cè)試了!

(1) 先對(duì)TusSample數(shù)據(jù)集中的圖片進(jìn)行測(cè)試

  • 第一步,在原工程目錄下的data文件中新建一個(gè)Mytest文件夾,然后任意選取TusSample數(shù)據(jù)集中的一張圖片放入其中,例如1.jpg,如下圖所示:

  • 第二步,使用PyCharm打開(kāi)下載好的項(xiàng)目工程,配置好環(huán)境后,打開(kāi)終端,如下圖所示:

  • 第三步,在終端輸入以下命令,執(zhí)行程序:
python tools/test_lanenet.py --weights_path model/tusimple_lanenet/tusimple_lanenet.ckpt --image_path data/Mytest/1.jpg

最后車(chē)道線檢測(cè)效果如下:

(2)對(duì)自己的圖片進(jìn)行測(cè)試

  • 第一步,選擇自己拍攝的一張車(chē)道線圖片2.jpg,放入剛才新建好的Mytest文件夾下,如下圖所示:


第二步,打開(kāi)終端,輸入命令,執(zhí)行程序:

python tools/test_lanenet.py --weights_path model/tusimple_lanenet/tusimple_lanenet.ckpt --image_path data/Mytest/2.jpg

對(duì)自己的拍攝的圖片檢測(cè)效果如下:


測(cè)試分析:

從圖中可以看出,對(duì)自己的圖片進(jìn)行檢測(cè)時(shí),最終的檢測(cè)結(jié)果雖然能夠完美地與實(shí)際車(chē)道線重合,但是延伸至了空中。

產(chǎn)生這種情況最主要的原因是:沒(méi)有自己制作數(shù)據(jù)集進(jìn)行訓(xùn)練,從而得到更有針對(duì)性的模型造成的。由于這里我使用的測(cè)試模型是在TuSimple數(shù)據(jù)集下訓(xùn)練得到的,所以我們對(duì)TuSimple中的圖片測(cè)試效果會(huì)很好,比如前面的1.jpg。

如果我們想要對(duì)自己的圖片進(jìn)行測(cè)試,得到更好的效果,那么就需要自己的數(shù)據(jù)集。比較好的辦法是:

  • 首先在TuSimple數(shù)據(jù)集下進(jìn)行訓(xùn)練,得到的訓(xùn)練模型作為預(yù)訓(xùn)練模型,這一部分工作其實(shí)已經(jīng)做好了,大家直接下載預(yù)訓(xùn)練模型即可
  • 然后,在預(yù)訓(xùn)練模型的基礎(chǔ)上,加載自己制作的數(shù)據(jù)集,再進(jìn)行訓(xùn)練,直到達(dá)到預(yù)期的效果。

采用這種遷移學(xué)習(xí)的思想,往往能夠事半功倍!

1024,祝大家節(jié)日快樂(lè)!喜歡就給我點(diǎn)個(gè)贊吧,您的支持是我創(chuàng)作的最大動(dòng)力!

總結(jié)

以上是生活随笔為你收集整理的无人驾驶环境感知 | 01 车道线检测网络LanNet原理及实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。