Codes pour "l'apprentissage des CNN de détection de voie légers par distillation de l'attention personnelle"
Ce repo contient également la mise en œuvre de TensorFlow de "Spatial As Deep: Spatial CNN pour la compréhension des scènes du trafic". (Scnn-tensorflow)
Erfnet-Culane-Pytorch a été publié. (Il peut atteindre 73.1 F1-Mesure dans le jeu de tests de Culane)
ENET-LABEL-TORCH, ENET-TUSIMPLE-TORCH et ENET-BDD100K-TORCH ont été publiés.
Caractéristiques clés:
(1) ENET-LABEL est un modèle de détection de voie de poids léger basé sur ENET et adopte la distillation de l'attention de soi (plus de détails peuvent être trouvés dans notre article).
(2) Il a 20 × moins de paramètres et fonctionne 10 × plus rapidement par rapport au SCNN de pointe, et atteint 72,0 (mesure F1) sur l'ensemble de tests de Culane (mieux que SCNN qui atteint 71,6). Il atteint également une précision de 96,64% dans l'ensemble de tests Tusimple (meilleur que SCNN, ce qui atteint 96,53%) et 36,56% de précision dans l'ensemble de tests BDD100K (mieux que SCNN, ce qui atteint 35,79%).
(3) L'application de l'Enet-SAD à l'ensemble de données de llamas donne une carte de 0,635 dans la tâche de segmentation du marqueur de voie multi-classes, qui est bien meilleure que l'algorithme de base qui atteint 0,500 MAP. Les détails peuvent être trouvés dans ce dépôt.
(N'hésitez pas à essayer notre modèle !!!)
CUDA_VISIBLE_DEVICES="0,1,2,3" python file_name.py . Merci @ 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
Téléchargez le vgg.npy ici et placez-le dans SCNN-Tensorflow / Lane-Detection-Model / Data.
Téléchargez le modèle pré-formé ici.
Les étiquettes au sol de l'ensemble de tests Tusimple sont désormais disponibles chez Tusimple. La formation annotée (#Frame = 3268) et les étiquettes de validation (#Frame = 358) peuvent être trouvées ici, veuillez les utiliser (list-name.txt) pour remplacer le train_gt.txt et val_gt.txt dans train_lanenet.py. De plus, vous devez redimensionner l'image à 256 x 512 au lieu de 288 x 800 dans Tusimple. N'oubliez pas de modifier l'indice maximal des lignes et des colonnes, et des explications détaillées peuvent être vues ici. Veuillez évaluer votre pred.json à l'aide des étiquettes et de ce script. En outre, pour générer pred.json, vous pouvez vous référer à ce problème.
L'ensemble de données est disponible chez Culane.
L'ensemble de données est disponible sur 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
Notez que path / vers / image_name_list doit être comme test_img.txt. Maintenant, vous obtenez les cartes de probabilité de notre modèle. Pour obtenir les performances finales, vous devez suivre SCNN pour obtenir des lignes de courbe des cartes de probabilité ainsi que de calculer la précision, le rappel et la mesure F1.
Rappel: vous devez vérifier Lanenet_Data_Processor.py et Lanenet_Data_Processor_test.py pour s'assurer que le traitement du chemin d'image est correct. Vous êtes recommandé d'utiliser le chemin absolu dans votre liste de chemins d'image. En outre, ce code a besoin de la taille du lot utilisée dans la formation et les tests pour être cohérentes. Pour activer la taille arbitraire du lot dans la phase de test, veuillez vous référer à ce problème.
CUDA_VISIBLE_DEVICES="0" python tools/train_lanenet.py --net vgg --dataset_dir path/to/CULane-dataset/
Notez que PATH / TO / CULANE-DATASET / doit contenir des fichiers comme Train_gt.txt et Val_gt.txt.
| Modèle | Précision | Fp | FN |
|---|---|---|---|
| SCNN-TORCH | 96,53% | 0,0617 | 0,0180 |
| Scnn-tensorflow | - | - | - |
| Torch en élaboration | 96,64% | 0,0602 | 0,0205 |
Le modèle pré-formé pour les tests est ici. (À venir!) Notez que dans Tusimple, Scnn-Torch est basé sur RESNET-101 tandis que Scnn-TensorFlow est basé sur VGG-16. Dans Culane et BDD100K, SCNN-TORCH et SCNN-TENSORFLOW sont basés sur VGG-16.
| Catégorie | SCNN-TORCH | Scnn-tensorflow | Torch en élaboration | Erfnet-Culane-Pytorch |
|---|---|---|---|---|
| Normale | 90.6 | 90.2 | 90.7 | 91.5 |
| Bondé | 69.7 | 71.9 | 70.8 | 71.6 |
| Nuit | 66.1 | 64.6 | 65.9 | 67.1 |
| Sans ligne | 43.4 | 45.8 | 44.7 | 45.1 |
| Ombre | 66.9 | 73.8 | 70.6 | 71.3 |
| Flèche | 84.1 | 83.8 | 85.8 | 87.2 |
| Lumière éblouissante | 58.5 | 59.5 | 64.4 | 66.0 |
| Courbe | 64.4 | 63.4 | 65.4 | 66.3 |
| Croisement | 1990 | 4137 | 2729 | 2199 |
| Total | 71.6 | 71.3 | 72.0 | 73.1 |
| Exécution (MS) | 133.5 | - | 13.4 | 10.2 |
| Paramètre (m) | 20.72 | - | 0,98 | 2.49 |
Le modèle pré-formé pour les tests est ici. Notez que vous devez échanger l'ordre de VGG-mean dans test_lanenet.py et modifier l'ordre des images d'entrée de RGB à BGR car le modèle pré-formé utilise OpenCV pour lire les images. Vous pouvez encore augmenter les performances en vous référant à ce problème.
| Modèle | Précision | Iou |
|---|---|---|
| SCNN-TORCH | 35,79% | 15.84 |
| Scnn-tensorflow | - | - |
| Torch en élaboration | 36,56% | 16.02 |
La précision et l'IOU des pixels de voie sont calculés. Le modèle pré-formé pour les tests est ici. (à venir!)
Si vous utilisez les codes, veuillez citer les publications suivantes:
@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}
}
Ce repo est construit sur SCNN et LANENET.
Si vous avez des problèmes dans la reproduction des résultats, soulevez simplement un problème dans ce dépôt.