[تحديث:] لقد قمت بتبسيط الرمز إلى Pytorch 1.5 و TorchVision 0.6 ، واستبدلت OPS Roipool و NMS المخصصة مع واحد من TorchVision. إذا كنت تريد رمز الإصدار القديم ، يرجى الخروج من الفرع v1.0
هذا المشروع هو تطبيق R-CNN أسرع مبسط على أساس ChainerCV والمشاريع الأخرى. آمل أن يكون بمثابة رمز بدء لأولئك الذين يريدون معرفة تفاصيل R-CNN الأسرع. يهدف إلى:
ولديه الميزات التالية:

VGG16 Train on trainval واختبار في test الانقسام.
ملاحظة : يظهر التدريب عشوائيًا كبيرًا ، فقد تحتاج إلى القليل من الحظ والمزيد من عروض التدريب للوصول إلى أعلى خريطة. ومع ذلك ، يجب أن يكون من السهل تجاوز الحد الأدنى.
| تطبيق | رسم خريطة |
|---|---|
| ورقة الأصل | 0.699 |
| تدريب مع نموذج الكافيين المسبق | 0.700-0.712 |
| تدريب مع نموذج Torchvision PretRained | 0.685-0.701 |
| تم تحويل النموذج من ChainerCV (تم الإبلاغ عنه 0.706) | 0.7053 |
| تطبيق | GPU | الاستدلال | التدريب |
|---|---|---|---|
| ورقة الأصل | K40 | 5 إطارًا في الثانية | نا |
| هذا [1] | Titan XP | 14-15 إطارًا في الثانية | 6 إطارًا في الثانية |
| Pytorchip-faster-rcnn | Titan XP | 15-17 إطارًا في الثانية | 6 إطارًا في الثانية |
[1]: تأكد من تثبيت Cupy بشكل صحيح وعمل برنامج واحد فقط على وحدة معالجة الرسومات. سرعة التدريب حساسة لحالة GPU الخاصة بك. انظر استكشاف الأخطاء وإصلاحها لمزيد من المعلومات. Morever إنه بطيء في بداية البرنامج - يحتاج إلى وقت للاحماء.
يمكن أن يكون أسرع عن طريق إزالة التصور وتسجيل التسجيل ومتوسط الخسارة وما إلى ذلك.
فيما يلي مثال على إنشاء Environ من نقطة الصفر مع anaconda
# create conda env
conda create --name simp python=3.7
conda activate simp
# install pytorch
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
# install other dependancy
pip install visdom scikit-image tqdm fire ipdb pprint matplotlib torchnet
# start visdom
nohup python -m visdom.server &
إذا لم تستخدم أناكوندا ، ثم:
قم بتثبيت Pytorch باستخدام GPU (رمز GPU فقط) ، راجع موقع الويب الرسمي
تثبيت تبعيات أخرى: pip install visdom scikit-image tqdm fire ipdb pprint matplotlib torchnet
ابدأ Visdom للتصور
nohup python -m visdom.server & قم بتنزيل طراز pretrained من Google Drive أو Baidu NetDisk (Passwd: SCXN)
انظر Demo.ipynb لمزيد من التفاصيل.
قم بتنزيل التدريب والتحقق من الصحة وبيانات الاختبار و Vocdevkit
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar استخراج كل هذه القطرات في دليل واحد يدعى VOCdevkit
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tarيجب أن يكون لهذا الهيكل الأساسي
$VOCdevkit / # development kit
$VOCdevkit /VOCcode/ # VOC utility code
$VOCdevkit /VOC2007 # image sets, annotations, etc.
# ... and several other directories ... تعديل عنصر voc_data_dir cfg في utils/config.py ، أو تمريره إلى البرنامج باستخدام وسيطة مثل- --voc-data-dir=/path/to/VOCdevkit/VOC2007/ .
إذا كنت ترغب في استخدام نموذج Caffe-Pretrain كوزن أولي ، فيمكنك التشغيل أدناه لتحويل أوزان VGG16 من Caffe ، وهو نفس استخدام ورق الأصل.
python misc/convert_caffe_pretrain.pyستقوم هذه البرامج النصية بتنزيل النموذج المسبق وتحويله إلى التنسيق المتوافق مع TorchVision. إذا كنت في الصين ولم تتمكن
بعد ذلك ، يمكنك تحديد مكان تخزين Caffe-PretRaind vgg16_caffe.pth المخزنة في utils/config.py عن طريق تعيين caffe_pretrain_path . المسار الافتراضي على ما يرام.
إذا كنت ترغب في استخدام طراز ما قبل المفعول من TorchVision ، فيمكنك تخطي هذه الخطوة.
لاحظ أن نموذج الكافيين المسبق قد أظهر أداء أفضل قليلاً.
ملاحظة : يتطلب نموذج CAFFE صورًا في BGR 0-255 ، بينما يتطلب طراز TorchVision صورًا في RGB و 0-1. راجع data/dataset.py لمزيد من التفاصيل.
python train.py train --env= ' fasterrcnn ' --plot-every=100 يمكنك الرجوع إلى utils/config.py لمزيد من الوسيطة.
بعض الحجج الرئيسية:
--caffe-pretrain=False : استخدم نموذج ما قبل المثل من الكافيين أو torchvision (الافتراضي: Torchvison)--plot-every=n : تصور التنبؤ ، والخسارة وما إلى ذلك كل دفعات n .--env : Visdome ENV للتصور--voc_data_dir : حيث تخزين بيانات VOC--use-drop : استخدم التسرب في رأس العائد على حق--use-Adam : استخدم ADAM بدلاً من SGD ، SGD الافتراضي. (تحتاج إلى تعيين lr منخفضة للغاية لآدم)--load-path : مسار النموذج المسبق ، None افتراضي ، إذا تم تحديده ، فسيتم تحميله. يمكنك فتح المتصفح ، وزيارة http://<ip>:8097 ومعرفة تصور إجراء التدريب على النحو التالي:

Dataloader: received 0 items of ancdata
انظر المناقشة ، تم إصلاحه بشكل كبير في Train.py. لذلك أعتقد أنك متحرر من هذه المشكلة.
دعم Windows
ليس لدي جهاز Windows مع GPU لتصحيحه واختباره. إنه موضع ترحيب إذا كان بإمكان أي شخص تقديم طلب سحب واختباره.
يعتمد هذا العمل على العديد من الأعمال الممتازة ، والتي تشمل:
مرخصة بموجب معهد ماساتشوستس للتكنولوجيا ، راجع الترخيص لمزيد من التفاصيل.
ترحيب المساهمة.
إذا واجهت أي مشكلة ، فلا تتردد في فتح مشكلة ، ولكنها مشغولة جدًا مؤخرًا.
صححني إذا كان أي شيء خطأ أو غير واضح.
هيكل النموذج