هذا المستودع ينفذ SSD (كاشف متعدد اللقطات واحد). يتأثر التنفيذ بشدة بالمشاريع SSD.Pytorch و Pytorch-SSD و Maskrcnn-Benchmark. يهدف هذا المستودع إلى أن يكون قاعدة التعليمات البرمجية للأبحاث القائمة على SSD.

مثال SSD Output (VGG_SSD300_VOC0712).
| خسائر | معدل التعلم | المقاييس |
|---|---|---|
![]() | ![]() | ![]() |
DistributedDataParallel ، يمكنك التدريب أو الاختبار باستخدام GPU (S) التعسفي ، وسيتغير مخطط التدريب وفقًا لذلك.backbone ، Detector ، BoxHead ، BoxPredictor ، إلخ. يمكنك استبدال كل مكون برمز الخاص بك دون تغيير قاعدة التعليمات البرمجية. على سبيل المثال ، يمكنك إضافة كفاءة في العمود الفقري ، ما عليك سوى إضافة efficient_net.py (تمت إضافته بالفعل) وتسجيله ، ومحدد في ملف التكوين ، يتم ذلك!CMD .eval_step للتحقق من تحسين الأداء أم لا.git clone https://github.com/lufficc/SSD.git
cd SSD
# Required packages: torch torchvision yacs tqdm opencv-python vizer
pip install -r requirements.txt
# Done! That's ALL! No BUILD! No bothering SETUP!
# It's recommended to install the latest release of torch and torchvision. لمجموعة بيانات Pascal VOC ، اجعل بنية المجلد مثل هذا:
VOC_ROOT
|__ VOC2007
|_ JPEGImages
|_ Annotations
|_ ImageSets
|_ SegmentationClass
|__ VOC2012
|_ JPEGImages
|_ Annotations
|_ ImageSets
|_ SegmentationClass
|__ ...
عندما يكون VOC_ROOT افتراضيًا هو مجلد datasets في المشروع الحالي ، يمكنك إنشاء Symlinks إلى datasets أو export VOC_ROOT="/path/to/voc_root" .
لمجموعة بيانات Coco ، اجعل بنية المجلد مثل هذا:
COCO_ROOT
|__ annotations
|_ instances_valminusminival2014.json
|_ instances_minival2014.json
|_ instances_train2014.json
|_ instances_val2014.json
|_ ...
|__ train2014
|_ <im-1-name>.jpg
|_ ...
|_ <im-N-name>.jpg
|__ val2014
|_ <im-1-name>.jpg
|_ ...
|_ <im-N-name>.jpg
|__ ...
عندما يكون COCO_ROOT افتراضيًا هو مجلد datasets في المشروع الحالي ، يمكنك إنشاء ارتباطات إلى datasets أو export COCO_ROOT="/path/to/coco_root" .
# for example, train SSD300:
python train.py --config-file configs/vgg_ssd300_voc0712.yaml # for example, train SSD300 with 4 GPUs:
export NGPUS=4
python -m torch.distributed.launch --nproc_per_node= $NGPUS train.py --config-file configs/vgg_ssd300_voc0712.yaml SOLVER.WARMUP_FACTOR 0.03333 SOLVER.WARMUP_ITERS 1000تفترض ملفات التكوين التي أقدمها أننا نعمل على وحدة معالجة الرسومات المفردة. عند تغيير عدد وحدات معالجة الرسومات ، سيتغير أيضًا المعلمات المفرطة (LR ، MAX_ITER ، ...) وفقًا لهذه الورقة: SGD دقيقة ، كبيرة ، تدريب ImageNet في ساعة واحدة.
# for example, evaluate SSD300:
python test.py --config-file configs/vgg_ssd300_voc0712.yaml # for example, evaluate SSD300 with 4 GPUs:
export NGPUS=4
python -m torch.distributed.launch --nproc_per_node= $NGPUS test.py --config-file configs/vgg_ssd300_voc0712.yamlتوقع الصورة في مجلد بسيط:
python demo.py --config-file configs/vgg_ssd300_voc0712.yaml --images_dir demo --ckpt https://github.com/lufficc/SSD/releases/download/1.2/vgg_ssd300_voc0712.pth بعد ذلك ، سيتم تنزيل وتذوق vgg_ssd300_voc0712.pth تلقائيًا وسيتم حفظ الصور المتوقعة مع المربعات والدرجات وأسماء التسمية إلى مجلد demo/result افتراضيًا.
سترى إخراج مماثل:
(0001/0005) 004101.jpg: objects 01 | load 010ms | inference 033ms | FPS 31
(0002/0005) 003123.jpg: objects 05 | load 009ms | inference 019ms | FPS 53
(0003/0005) 000342.jpg: objects 02 | load 009ms | inference 019ms | FPS 51
(0004/0005) 008591.jpg: objects 02 | load 008ms | inference 020ms | FPS 50
(0005/0005) 000542.jpg: objects 01 | load 011ms | inference 019ms | FPS 53
| اختبار VOC2007 | Coco Test-Dev2015 | |
|---|---|---|
| SSD300* | 77.2 | 25.1 |
| SSD512* | 79.8 | 28.8 |
| العمود الفقري | حجم الإدخال | مربع AP | حجم النموذج | تحميل |
|---|---|---|---|---|
| VGG16 | 300 | 25.2 | 262 ميجابايت | نموذج |
| VGG16 | 512 | 29.0 | 275 ميجابايت | نموذج |
| العمود الفقري | حجم الإدخال | رسم خريطة | حجم النموذج | تحميل |
|---|---|---|---|---|
| VGG16 | 300 | 77.7 | 201 ميغابايت | نموذج |
| VGG16 | 512 | 80.7 | 207 ميجابايت | نموذج |
| Mobilenet V2 | 320 | 68.9 | 25.5 ميجابايت | نموذج |
| Mobilenet V3 | 320 | 69.5 | 29.9 ميجابايت | نموذج |
| كفاءة نيت-B3 | 300 | 73.9 | 97.1 ميغابايت | نموذج |
إذا كنت ترغب في إضافة مكوناتك المخصصة ، فيرجى الاطلاع على تطوير _guide.md لمزيد من التفاصيل.
إذا كان لديك مشكلات في تشغيل أو تجميع هذا الرمز ، فقد قمنا بتجميع قائمة بالمشكلات الشائعة في استكشاف الأخطاء وإصلاحها. إذا لم تكن مشكلتك موجودة هناك ، فلا تتردد في فتح مشكلة جديدة.
إذا كنت تستخدم هذا المشروع في بحثك ، فيرجى الاستشهاد بهذا المشروع.
@misc{lufficc2018ssd,
author = {Congcong Li},
title = {{High quality, fast, modular reference implementation of SSD in PyTorch}},
year = {2018},
howpublished = {url{https://github.com/lufficc/SSD}}
}