Codes für "Lernen leichter Spurerkennung CNNs durch Self -Destillation"
Dieses Repo enthält auch die Tensorflow -Implementierung von "räumlich als tiefes: räumlicher CNN für das Verständnis der Verkehrszene". (SCNN-TensorFlow)
Erfnet-Culane-Pytorch wurde veröffentlicht. (Es kann 73,1 F1-Messungen im Culan-Testssatz erreichen)
ENET-Label-Torch, Enet-Tusimple-Torch und ENET-BDD100K-TORCH wurden veröffentlicht.
Schlüsselmerkmale:
(1) ENET-Label ist ein leichtes Erkennungsmodell, das auf ENET basiert und die Destillation der Selbstbehandlung annimmt (weitere Details finden Sie in unserem Artikel).
(2) Es hat 20 × weniger Parameter und läuft 10 × schneller im Vergleich zum hochmodernen SCNN und erreicht 72,0 (F1-Messung) beim Culan-Testset (besser als SCNN, das 71,6 erreicht). Es erreicht auch eine Genauigkeit von 96,64% im Tusimple -Test (besser als SCNN, das 96,53% erreicht) und 36,56% der Genauigkeit des BDD100K -Tests (besser als SCNN, das 35,79% erreicht).
(3) Die Anwendung von ENET-SAD auf Lamas-Datensatz ergibt 0,635 MAP in der Aufgabe der Multi-Class-Spur-Marker-Segmentierungsaufgabe, was viel besser ist als der Basisalgorithmus, der 0,500 Karte erreicht. Details finden Sie in diesem Repo.
(Zögern Sie nicht, unser Modell auszuprobieren !!!)
CUDA_VISIBLE_DEVICES="0,1,2,3" python file_name.py . Danke @ 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
Laden Sie die VGG.NPY hier herunter und geben Sie es in SCNN-TensorFlow/Lane-Detection-Modell/Daten.
Laden Sie das vorgebildete Modell hier herunter.
Die Bodenwahrheitsbezeichnungen des Tusimple-Testsets sind jetzt bei Tusimple erhältlich. Das annotierte Training (#Frame = 3268) und Validierungsbezeichnungen (#Frame = 358) finden Sie hier. Bitte verwenden Sie sie (list-name.txt), um die train_gt.txt und val_gt.txt in train_lanenet.py zu ersetzen. Darüber hinaus müssen Sie das Bild auf 256 x 512 anstelle von 288 x 800 Tusimple ändern. Denken Sie daran, den maximalen Index von Zeilen und Spalten zu ändern, und hier sind detaillierte Erklärungen zu sehen. Bitte bewerten Sie Ihre Pred.json mit den Etiketten und diesem Skript. Um Pred.json zu generieren, können Sie sich auf dieses Problem beziehen.
Der gesamte Datensatz ist bei Culane erhältlich.
Der gesamte Datensatz ist unter BDD100K verfügbar.
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
Beachten Sie, dass Pfad/TO/Image_Name_List wie test_img.txt sein sollte. Jetzt erhalten Sie die Wahrscheinlichkeitskarten aus unserem Modell. Um die endgültige Leistung zu erhalten, müssen Sie SCNN folgen, um Kurvenlinien von Wahrscheinlichkeitskarten zu erhalten und Präzision, Rückruf und F1-Messung zu berechnen.
Erinnerung: Sie sollten lanenet_data_processor.py und lanenet_data_processor_test.py überprüfen, um sicherzustellen, dass die Verarbeitung des Bildpfads stimmt. Es wird empfohlen, den absoluten Pfad in Ihrer Bildpfadliste zu verwenden. Außerdem erfordert dieser Code eine Chargengröße, die für das Training und das Testen verwendet wird, um konsistent zu sein. Um eine beliebige Chargengröße in der Testphase zu ermöglichen, finden Sie in dieser Ausgabe.
CUDA_VISIBLE_DEVICES="0" python tools/train_lanenet.py --net vgg --dataset_dir path/to/CULane-dataset/
Beachten Sie, dass Pfad/TO/CULANE-DATASET/SOLLTE DATENE wie train_gt.txt und val_gt.txt enthalten sollte.
| Modell | Genauigkeit | FP | Fn |
|---|---|---|---|
| SCNN-TORCH | 96,53% | 0,0617 | 0,0180 |
| SCNN-TensorFlow | - | - | - |
| Enet-Label-Torch | 96,64% | 0,0602 | 0,0205 |
Das vorgebreitete Testmodell ist hier. (Bald!) Beachten Sie, dass Scnn-Torch in Tusimple auf Resnet-101 basiert, während Scnn-TensorFlow auf VGG-16 basiert. In Culane und BDD100K basieren sowohl Scnn-Torch als auch Scnn-TensorFlow auf VGG-16.
| Kategorie | SCNN-TORCH | SCNN-TensorFlow | Enet-Label-Torch | Erfnet-Culane-Pytorch |
|---|---|---|---|---|
| Normal | 90.6 | 90.2 | 90.7 | 91.5 |
| Überfüllt | 69.7 | 71,9 | 70,8 | 71.6 |
| Nacht | 66.1 | 64.6 | 65,9 | 67.1 |
| Keine Linie | 43.4 | 45,8 | 44.7 | 45.1 |
| Schatten | 66,9 | 73,8 | 70,6 | 71.3 |
| Pfeil | 84.1 | 83.8 | 85,8 | 87,2 |
| Blendendes Licht | 58,5 | 59,5 | 64.4 | 66.0 |
| Kurve | 64.4 | 63.4 | 65.4 | 66,3 |
| Kreuzung | 1990 | 4137 | 2729 | 2199 |
| Gesamt | 71.6 | 71.3 | 72.0 | 73.1 |
| Laufzeit (MS) | 133.5 | - | 13.4 | 10.2 |
| Parameter (m) | 20.72 | - | 0,98 | 2.49 |
Das vorgebreitete Testmodell ist hier. Beachten Sie, dass Sie die Reihenfolge von VGG-Mean in test_lanenet.py austauschen und die Reihenfolge der Eingabebilder von RGB zu BGR ändern müssen, da das vorgebildete Modell OpenCV zum Lesen von Bildern verwendet. Sie können die Leistung weiter steigern, indem Sie sich auf dieses Problem beziehen.
| Modell | Genauigkeit | Iou |
|---|---|---|
| SCNN-TORCH | 35,79% | 15.84 |
| SCNN-TensorFlow | - | - |
| Enet-Label-Torch | 36,56% | 16.02 |
Die Genauigkeit und IOU von Lane Pixel werden berechnet. Das vorgebreitete Testmodell ist hier. (bald kommen!)
Wenn Sie die Codes verwenden, geben Sie bitte die folgenden Veröffentlichungen an:
@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}
}
Dieses Repo basiert auf SCNN und Lanenet.
Wenn Sie Probleme bei der Reproduktion der Ergebnisse haben, wecken Sie einfach ein Problem in diesem Repo.