رموز "تعلم CNNs لاكتشاف حارة خفيفة الوزن عن طريق تقطير انتباه الذات"
يحتوي هذا الريبو أيضًا على تنفيذ Tensorflow لـ "المكاني على أنه عميق: 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 خريطة في مهمة تجزئة علامة الممرات متعددة الطبقات ، والتي هي أفضل بكثير من خوارزمية خط الأساس التي تحقق 0.500 MAP. يمكن العثور على التفاصيل في هذا الريبو.
(لا تتردد في تجربة نموذجنا !!!)
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 Testing Set في Tusimple. يمكن العثور على التدريب المشروح (#frame = 3268) وعلامات التحقق من الصحة (#frame = 358) هنا ، يرجى استخدامها (list-name.txt) لاستبدال Train_gt.txt و Val_Gt.txt في Train_Lanenet.py. علاوة على ذلك ، تحتاج إلى تغيير حجم الصورة إلى 256 × 512 بدلاً من 288 × 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
لاحظ أن المسار/إلى/image_name_list يجب أن يكون مثل test_img.txt. الآن ، تحصل على خرائط الاحتمالات من نموذجنا. للحصول على الأداء النهائي ، تحتاج إلى متابعة SCNN للحصول على خطوط منحنى من خرائط الاحتمالات وكذلك حساب الدقة والاستدعاء و F1-Measure.
تذكير: يجب عليك التحقق من 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/
لاحظ أن المسار/إلى/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 |
| مفترق طرق | 1990 | 4137 | 2729 | 2199 |
| المجموع | 71.6 | 71.3 | 72.0 | 73.1 |
| وقت التشغيل (MS) | 133.5 | - | 13.4 | 10.2 |
| المعلمة (م) | 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}
}
تم بناء هذا الريبو على Scnn و Lanenet.
إذا كان لديك أي مشاكل في إعادة إنتاج النتائج ، فما عليك سوى إثارة مشكلة في هذا الريبو.