هذا هو تنفيذ Pytorch لنماذج التجزئة الدلالية على مجموعة بيانات تحليل مشهد MIT ADE20K (http://sceneparsing.csail.mit.edu/).
ADE20K هي أكبر مجموعة بيانات مفتوحة المصدر للتجزئة الدلالية وحلية المشهد ، الذي ينشره فريق MIT Computer Vision. اتبع الرابط أدناه للعثور على المستودع لمجموعة البيانات والتطبيقات الخاصة بنا على Caffe و Torch7: https://github.com/csailvision/sceneparsing
إذا كنت ترغب ببساطة في اللعب مع العرض التوضيحي الخاص بنا ، فيرجى تجربة هذا الرابط: http://scenesegmentation.csail.mit.edu يمكنك تحميل صورتك الخاصة وتحليلها!
يمكنك أيضًا استخدام ملعب Colab Notebook هنا للتغلب على رمز تقسيم الصورة.
يمكن العثور على جميع النماذج المسبقة على: http://sceneparsing.csail.mit.edu/model/pytorch


يمكن العثور على ترميز الألوان للفئات الدلالية هنا: https://docs.google.com/spreadsheets
config/defaults.py .تحسب هذه الوحدة المتوسطة والمعيارية في جميع الأجهزة أثناء التدريب. نجد تجريبياً أن حجم الدُفعة الكبير المعقول مهم للتجزئة. نشكر Jiayuan Mao على مساهماته الكريمة ، يرجى الرجوع إلى مزامنة Batchnorm-Pytorch للحصول على التفاصيل.
التنفيذ سهل الاستخدام على النحو التالي:
لمهمة التجزئة الدلالية ، من الجيد الحفاظ على نسبة العرض إلى الارتفاع من الصور أثناء التدريب. لذلك نحن نعيد تنفيذ الوحدة DataParallel ، ونجعلها تدعم توزيع البيانات على وحدات معالجة الرسومات المتعددة في قول بيثون ، بحيث يمكن لكل وحدة معالجة الرسومات معالجة الصور بأحجام مختلفة. في الوقت نفسه ، يعمل Dataloader أيضًا بشكل مختلف.
الآن يساوي حجم الدُفعة ل dataloader دائمًا عدد وحدات معالجة الرسومات ، وسيتم إرسال كل عنصر إلى وحدة معالجة الرسومات. كما أنه متوافق مع المعالجة المتعددة. لاحظ أن فهرس ملفات Dataloader متعدد المعالجة يتم تخزينه في العملية الرئيسية ، وهو ما يتناقض مع هدفنا الذي يحافظ كل عامل على قائمة الملفات الخاصة به. لذلك نحن نستخدم خدعة أنه على الرغم من أن العملية الرئيسية لا تزال تمنح Dataloader فهرسًا لوظيفة __getitem__ ، فإننا نتجاهل هذا الطلب ونرسل قولًا عشوائيًا. وأيضًا ، فإن العمال المتعددين الذين تربطهم Dataloader لديهم نفس البذور ، ستجد أن العديد من العمال سوف ينتجون نفس البيانات تمامًا ، إذا استخدمنا الخدعة المذكورة أعلاه مباشرة. لذلك ، نضيف سطرًا واحدًا من التعليمات البرمجية التي تضع بذرة defaut لـ numpy.random قبل تنشيط عامل متعددي في Dataloader.
نقوم بتقسيم نماذجنا إلى تشفير ودلو المشفر ، حيث يتم عادةً تعديل المشفرات مباشرة من شبكات التصنيف ، وتتألف وحدة فك التشفير من الملاحظات النهائية والتشغيل. لقد قدمنا بعض النماذج التي تم تكوينها مسبقًا في مجلد config .
تشفير:
فك التشفير:
هام: RESNET الأساسي في مستودعنا هو مخصص (يختلف عن واحد في torchvision). سيتم تنزيل النماذج الأساسية تلقائيًا عند الحاجة.
| بنيان | الاختبار متعدد المقاييس | يعني IOU | دقة بكسل (٪) | النتيجة الإجمالية | سرعة الاستدلال (FPS) |
|---|---|---|---|---|---|
| mobilenetv2dilated + c1_deepsup | لا | 34.84 | 75.75 | 54.07 | 17.2 |
| نعم | 33.84 | 76.80 | 55.32 | 10.3 | |
| mobilenetv2dilated + ppm_deepsup | لا | 35.76 | 77.77 | 56.27 | 14.9 |
| نعم | 36.28 | 78.26 | 57.27 | 6.7 | |
| resnet18dilated + c1_deepsup | لا | 33.82 | 76.05 | 54.94 | 13.9 |
| نعم | 35.34 | 77.41 | 56.38 | 5.8 | |
| resnet18dilated + ppm_deepsup | لا | 38.00 | 78.64 | 58.32 | 11.7 |
| نعم | 38.81 | 79.29 | 59.05 | 4.2 | |
| resnet50dilated + ppm_deepsup | لا | 41.26 | 79.73 | 60.50 | 8.3 |
| نعم | 42.14 | 80.13 | 61.14 | 2.6 | |
| resnet101dilated + ppm_deepsup | لا | 42.19 | 80.59 | 61.39 | 6.8 |
| نعم | 42.53 | 80.91 | 61.72 | 2.0 | |
| upernet50 | لا | 40.44 | 79.80 | 60.12 | 8.4 |
| نعم | 41.55 | 80.23 | 60.89 | 2.9 | |
| upernet101 | لا | 42.00 | 80.79 | 61.40 | 7.8 |
| نعم | 42.66 | 81.01 | 61.84 | 2.3 | |
| HRNETV2 | لا | 42.03 | 80.77 | 61.40 | 5.8 |
| نعم | 43.20 | 81.47 | 62.34 | 1.9 |
يتم تسجيل التدريب على خادم مع 8 NVIDIA Pascal Titan XP GPU (ذاكرة وحدة معالجة الرسومات بحجم 12 جيجا بايت) ، وسرعة الاستدلال يتم تعيينها في GPU NVIDIA PASCAL TITAN XP ، دون تصور.
تم تطوير الكود تحت التكوينات التالية.
[--gpus GPUS] وفقًا لذلك)chmod +x demo_test.sh
./demo_test.shيقوم هذا البرنامج النصي بتنزيل نموذج مدرب (ResNet50dilated + PPM_Deepsup) وصورة اختبار ، ويقوم بتشغيل البرنامج النصي للاختبار ، ويحفظ التجزئة المتوقعة (.png) إلى دليل العمل.
$PATH_IMG ) ، يمكنك ببساطة القيام بما يلي: python3 -u test.py --imgs $PATH_IMG --gpu $GPU --cfg $CFG
chmod +x download_ADE20K.sh
./download_ADE20K.sh$GPUS ) وملف التكوين ( $CFG ) للاستخدام. أثناء التدريب ، يتم حفظ نقاط التفتيش بشكل افتراضي في المجلد ckpt . python3 train.py --gpus $GPUS --cfg $CFG --gpus 0-7 أو- --gpus 0,2,4,6 .على سبيل المثال ، يمكنك البدء بتكويناتنا المقدمة:
python3 train.py --gpus GPUS --cfg config/ade20k-mobilenetv2dilated-c1_deepsup.yamlpython3 train.py --gpus GPUS --cfg config/ade20k-resnet50dilated-ppm_deepsup.yamlpython3 train.py --gpus GPUS --cfg config/ade20k-resnet101-upernet.yamlpython3 train.py TRAIN.num_epoch 10 . VAL.visualize True في الوسيطة لإخراج التصورات كما هو موضح في الدعابة.على سبيل المثال:
python3 eval_multipro.py --gpus GPUS --cfg config/ade20k-mobilenetv2dilated-c1_deepsup.yamlpython3 eval_multipro.py --gpus GPUS --cfg config/ade20k-resnet50dilated-ppm_deepsup.yamlpython3 eval_multipro.py --gpus GPUS --cfg config/ade20k-resnet101-upernet.yaml يمكن تثبيت هذه المكتبة عبر pip للتكامل بسهولة مع قاعدة كود أخرى
pip install git+https://github.com/CSAILVision/semantic-segmentation-pytorch.git@masterالآن يمكن بسهولة استهلاك هذه المكتبة برمجيا. على سبيل المثال
from mit_semseg . config import cfg
from mit_semseg . dataset import TestDataset
from mit_semseg . models import ModelBuilder , SegmentationModule إذا وجدت الرمز أو النماذج المدربة مسبقًا مفيدة ، فيرجى الاستشهاد بالأوراق التالية:
الفهم الدلالي للمشاهد من خلال مجموعة بيانات ADE20K. B. Zhou ، H. Zhao ، X. Puig ، T. Xiao ، S. Fidler ، A. Barriuso and A. Torralba. المجلة الدولية على رؤية الكمبيوتر (IJCV) ، 2018. (https://arxiv.org/pdf/1608.05442.pdf)
@article{zhou2018semantic,
title={Semantic understanding of scenes through the ade20k dataset},
author={Zhou, Bolei and Zhao, Hang and Puig, Xavier and Xiao, Tete and Fidler, Sanja and Barriuso, Adela and Torralba, Antonio},
journal={International Journal on Computer Vision},
year={2018}
}
مشهد التحليل من خلال مجموعة بيانات ADE20K. B. Zhou ، H. Zhao ، X. Puig ، S. Fidler ، A. Barriuso and A. Torralba. رؤية الكمبيوتر والتعرف على الأنماط (CVPR) ، 2017. (http://people.csail.mit.edu/bzhou/publication/scene-parse-camera-ready.pdf)
@inproceedings{zhou2017scene,
title={Scene Parsing through ADE20K Dataset},
author={Zhou, Bolei and Zhao, Hang and Puig, Xavier and Fidler, Sanja and Barriuso, Adela and Torralba, Antonio},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
year={2017}
}