รหัสสำหรับ "การเรียนรู้การตรวจจับเลนที่มีน้ำหนักเบา CNNs โดยการกลั่นความสนใจตนเอง"
repo นี้ยังมีการใช้ tensorflow ของ "Spatial As Deep: CNN เชิงพื้นที่สำหรับการทำความเข้าใจฉากการจราจร" (SCNN-Tensorflow)
Erfnet-Culane-Pytorch ได้รับการปล่อยตัวแล้ว (สามารถทำได้ 73.1 F1-measure ในชุดทดสอบ Culane)
ENET-LABEL-TORCH, ENET-TUSIMPLE-TORCH และ ENET-BDD100K-TORCH ได้รับการปล่อยตัว
คุณสมบัติที่สำคัญ:
(1) ENET-LABEL เป็นรูปแบบการตรวจจับเลน น้ำหนักเบา ตาม ENET และใช้ การกลั่นด้วยความสนใจตนเอง (รายละเอียดเพิ่มเติมสามารถพบได้ในกระดาษของเรา)
(2) มีพารามิเตอร์น้อยกว่า 20 ×ทำงานเร็วขึ้น 10 ×เมื่อเทียบกับ SCNN ที่ทันสมัยและบรรลุ 72.0 (F1-Measure) ในชุดการทดสอบ Culane (ดีกว่า SCNN ซึ่งประสบความสำเร็จ 71.6) นอกจากนี้ยังบรรลุความแม่นยำ 96.64% ในชุดการทดสอบ Tusimple (ดีกว่า SCNN ซึ่งบรรลุ 96.53%) และความแม่นยำ 36.56% ในชุดการทดสอบ BDD100K (ดีกว่า SCNN ซึ่งบรรลุ 35.79%)
(3) การใช้ชุดข้อมูล ENET-SAD กับ LLAMAS ให้ผลผลิต 0.635 MAP ในงานการแบ่งส่วนเลนหลายคลาสซึ่งดีกว่าอัลกอริทึมพื้นฐานซึ่งบรรลุ 0.500 แผนที่ รายละเอียดสามารถพบได้ใน repo นี้
(อย่าลังเลที่จะลองแบบจำลองของเรา !!!)
CUDA_VISIBLE_DEVICES="0,1,2,3" python file_name.py ขอบคุณ @ yujincheng08 conda create -n tensorflow_gpu pip python=3.5
source activate tensorflow_gpu
pip install --upgrade tensorflow-gpu==1.3.0
pip3 install -r SCNN-Tensorflow/lane-detection-model/requirements.txt
ดาวน์โหลด vgg.npy ที่นี่และวางไว้ใน SCNN-tensorflow/Lane-Detection-Model/Data
ดาวน์โหลดรุ่นที่ผ่านการฝึกอบรมมาก่อนที่นี่
ฉลากความจริงพื้นดินของชุดทดสอบ Tusimple มีให้บริการที่ Tusimple การฝึกอบรมที่มีคำอธิบายประกอบ (#Frame = 3268) และฉลากการตรวจสอบความถูกต้อง (#frame = 358) สามารถพบได้ที่นี่โปรดใช้พวกเขา (list-name.txt) เพื่อแทนที่ train_gt.txt และ val_gt.txt ใน train_lanenet.py นอกจากนี้คุณต้องปรับขนาดภาพเป็น 256 x 512 แทนที่จะเป็น 288 x 800 ใน Tusimple อย่าลืมเปลี่ยนดัชนีสูงสุดของแถวและคอลัมน์และคำอธิบายโดยละเอียดสามารถดูได้ที่นี่ โปรดประเมิน pred.json ของคุณโดยใช้ป้ายกำกับและสคริปต์นี้ นอกจากนี้ในการสร้าง pred.json คุณสามารถอ้างถึงปัญหานี้
ชุดข้อมูลทั้งหมดมีอยู่ที่ Culane
ชุดข้อมูลทั้งหมดมีอยู่ที่ BDD100K
cd SCNN-Tensorflow/lane-detection-model
CUDA_VISIBLE_DEVICES="0" python tools/test_lanenet.py --weights_path path/to/model_weights_file --image_path path/to/image_name_list --save_dir to_be_saved_dir
โปรดทราบว่าเส้นทาง/to/image_name_list ควรเป็นเหมือน test_img.txt ตอนนี้คุณจะได้รับแผนที่ความน่าจะเป็นจากโมเดลของเรา เพื่อให้ได้ประสิทธิภาพสุดท้ายคุณต้องติดตาม SCNN เพื่อรับเส้นโค้งจากแผนที่ความน่าจะเป็นเช่นเดียวกับการคำนวณความแม่นยำการเรียกคืนและการวัด F1
คำเตือน: คุณควรตรวจสอบ lanenet_data_processor.py และ lanenet_data_processor_test.py เพื่อให้แน่ใจว่าการประมวลผลของเส้นทางภาพนั้นถูกต้อง คุณขอแนะนำให้ใช้เส้นทางสัมบูรณ์ในรายการเส้นทางภาพของคุณ นอกจากนี้รหัสนี้ต้องการขนาดแบทช์ที่ใช้ในการฝึกอบรมและการทดสอบให้สอดคล้องกัน เพื่อเปิดใช้งานขนาดแบทช์โดยพลการในขั้นตอนการทดสอบโปรดดูปัญหานี้
CUDA_VISIBLE_DEVICES="0" python tools/train_lanenet.py --net vgg --dataset_dir path/to/CULane-dataset/
โปรดทราบว่าเส้นทาง/to/culane-dataset/ควรมีไฟล์เช่น train_gt.txt และ val_gt.txt
| แบบอย่าง | ความแม่นยำ | FP | FN |
|---|---|---|---|
| scnn-torch | 96.53% | 0.0617 | 0.0180 |
| SCNN-tensorflow | - | - | - |
| enet-label-torch | 96.64% | 0.0602 | 0.0205 |
โมเดลที่ผ่านการฝึกอบรมล่วงหน้าสำหรับการทดสอบอยู่ที่นี่ (เร็ว ๆ นี้!) โปรดทราบว่าใน Tusimple, Scnn-Torch นั้นขึ้นอยู่กับ RESNET-101 ในขณะที่ SCNN-TensorFlow นั้นขึ้นอยู่กับ VGG-16 ใน Culane และ BDD100K ทั้ง SCNN-TORCH และ SCNN-Tensorflow ขึ้นอยู่กับ VGG-16
| หมวดหมู่ | scnn-torch | SCNN-tensorflow | enet-label-torch | Erfnet-Culane-Pytorch |
|---|---|---|---|---|
| ปกติ | 90.6 | 90.2 | 90.7 | 91.5 |
| แออัด | 69.7 | 71.9 | 70.8 | 71.6 |
| กลางคืน | 66.1 | 64.6 | 65.9 | 67.1 |
| ไม่มีสาย | 43.4 | 45.8 | 44.7 | 45.1 |
| เงา | 66.9 | 73.8 | 70.6 | 71.3 |
| ลูกศร | 84.1 | 83.8 | 85.8 | 87.2 |
| แสงตาพร่า | 58.5 | 59.5 | 64.4 | 66.0 |
| โค้ง | 64.4 | 63.4 | 65.4 | 66.3 |
| ทางแยก | 2533 | 4137 | 2729 | 2199 |
| ทั้งหมด | 71.6 | 71.3 | 72.0 | 73.1 |
| รันไทม์ (MS) | 133.5 | - | 13.4 | 10.2 |
| พารามิเตอร์ (M) | 20.72 | - | 0.98 | 2.49 |
โมเดลที่ผ่านการฝึกอบรมล่วงหน้าสำหรับการทดสอบอยู่ที่นี่ โปรดทราบว่าคุณต้องแลกเปลี่ยนลำดับของ VGG-mean ใน test_lanenet.py และเปลี่ยนลำดับของภาพอินพุตจาก RGB เป็น BGR เนื่องจากโมเดลที่ผ่านการฝึกอบรมมาก่อนใช้ OpENCV เพื่ออ่านภาพ คุณสามารถเพิ่มประสิทธิภาพเพิ่มเติมโดยอ้างถึงปัญหานี้
| แบบอย่าง | ความแม่นยำ | iou |
|---|---|---|
| scnn-torch | 35.79% | 15.84 |
| SCNN-tensorflow | - | - |
| enet-label-torch | 36.56% | 16.02 |
คำนวณความแม่นยำและ IOU ของพิกเซลเลน โมเดลที่ผ่านการฝึกอบรมล่วงหน้าสำหรับการทดสอบอยู่ที่นี่ (เร็วๆ นี้!)
หากคุณใช้รหัสโปรดอ้างอิงสิ่งพิมพ์ต่อไปนี้:
@article{hou2019learning,
title={Learning Lightweight Lane Detection CNNs by Self Attention Distillation},
author={Hou, Yuenan and Ma, Zheng and Liu, Chunxiao and Loy, Chen Change},
journal={arXiv preprint arXiv:1908.00821},
year={2019}
}
@inproceedings{pan2018SCNN,
author = {Xingang Pan, Jianping Shi, Ping Luo, Xiaogang Wang, and Xiaoou Tang},
title = {Spatial As Deep: Spatial CNN for Traffic Scene Understanding},
booktitle = {AAAI Conference on Artificial Intelligence (AAAI)},
month = {February},
year = {2018}
}
@misc{hou2019agnostic,
title={Agnostic Lane Detection},
author={Yuenan Hou},
year={2019},
eprint={1905.03704},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
repo นี้สร้างขึ้นบน SCNN และ Lanenet
หากคุณมีปัญหาใด ๆ ในการทำซ้ำผลลัพธ์เพียงแค่ยกประเด็นใน repo นี้