ที่เก็บนี้ใช้ SSD (เครื่องตรวจจับ multibox shot single) การดำเนินการได้รับอิทธิพลอย่างมากจากโครงการ SSD.Pytorch, Pytorch-SSD และ Maskrcnn-benchmark ที่เก็บนี้มีจุดมุ่งหมายที่จะเป็นฐานรหัสสำหรับการวิจัยตาม SSD

ตัวอย่างเอาต์พุต SSD (VGG_SSD300_VOC0712)
| การสูญเสีย | อัตราการเรียนรู้ | ตัวชี้วัด |
|---|---|---|
![]() | ![]() | ![]() |
DistributedDataParallel คุณสามารถฝึกอบรมหรือทดสอบด้วย GPU โดยพลการสคีมาการฝึกอบรมจะเปลี่ยนไปตามนั้นbackbone , Detector , BoxHead , BoxPredictor ฯลฯ คุณสามารถแทนที่ทุกองค์ประกอบด้วยรหัสของคุณเองโดยไม่ต้องเปลี่ยนฐานรหัส ตัวอย่างเช่นคุณสามารถเพิ่ม EfficientNet เป็น Backbone เพียงเพิ่ม efficient_net.py (เพิ่มแล้ว) และลงทะเบียนเฉพาะเฉพาะในไฟล์ config มันเสร็จสิ้นแล้ว!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 ในโครงการปัจจุบันคุณสามารถสร้าง symlinks ไปยัง 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ไฟล์การกำหนดค่าที่ฉันให้ไว้สมมติว่าเรากำลังทำงานบน GPU เดียว เมื่อเปลี่ยนจำนวน GPU, พารามิเตอร์ไฮเปอร์ (LR, Max_iter, ... ) ก็จะเปลี่ยนไปตามบทความนี้: Minibatch ขนาดใหญ่ SGD ขนาดใหญ่: การฝึกอบรม Imagenet ใน 1 ชั่วโมง
# 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 | 262MB | แบบอย่าง |
| VGG16 | 512 | 29.0 | 275MB | แบบอย่าง |
| กระดูกสันหลัง | ขนาดอินพุต | แผนที่ | ขนาดรุ่น | การดาวน์โหลด |
|---|---|---|---|---|
| VGG16 | 300 | 77.7 | 201MB | แบบอย่าง |
| VGG16 | 512 | 80.7 | 207MB | แบบอย่าง |
| Mobilenet v2 | 320 | 68.9 | 25.5MB | แบบอย่าง |
| Mobilenet v3 | 320 | 69.5 | 29.9MB | แบบอย่าง |
| Efficientnet-B3 | 300 | 73.9 | 97.1MB | แบบอย่าง |
หากคุณต้องการเพิ่มส่วนประกอบที่กำหนดเองของคุณโปรดดู Develop_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}}
}