Repositori ini mengimplementasikan SSD (detektor multibox tembakan tunggal). Implementasi ini sangat dipengaruhi oleh proyek SSD.PyTorch, Pytorch-SSD dan MaskRCNN-Benchmark. Repositori ini bertujuan untuk menjadi basis kode untuk penelitian berdasarkan SSD.

Contoh Output SSD (VGG_SSD300_VOC0712).
| Kerugian | Tingkat pembelajaran | Metrik |
|---|---|---|
![]() | ![]() | ![]() |
DistributedDataParallel , Anda dapat melatih atau menguji dengan GPU sewenang-wenang, skema pelatihan akan berubah sesuai.backbone , Detector , BoxHead , BoxPredictor , dll. Anda dapat mengganti setiap komponen dengan kode Anda sendiri tanpa mengubah basis kode. Misalnya, Anda dapat menambahkan EfficientNet sebagai tulang punggung, cukup tambahkan efficient_net.py (sudah ditambahkan) dan daftarkan, spesifik dalam file konfigurasi, sudah selesai!CMD pelatihan Anda.eval_step untuk memeriksa peningkatan kinerja atau tidak.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. Untuk dataset Pascal VOC, buat struktur folder seperti ini:
VOC_ROOT
|__ VOC2007
|_ JPEGImages
|_ Annotations
|_ ImageSets
|_ SegmentationClass
|__ VOC2012
|_ JPEGImages
|_ Annotations
|_ ImageSets
|_ SegmentationClass
|__ ...
Di mana VOC_ROOT default adalah folder datasets dalam proyek saat ini, Anda dapat membuat symlink ke datasets atau export VOC_ROOT="/path/to/voc_root" .
Untuk dataset Coco, buat struktur folder seperti ini:
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
|__ ...
Di mana default COCO_ROOT adalah folder datasets dalam proyek saat ini, Anda dapat membuat symlink ke datasets atau 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 1000File konfigurasi yang saya berikan mengasumsikan bahwa kami menjalankan pada GPU tunggal. Saat mengubah jumlah GPU, hyper-parameter (LR, Max_iter, ...) juga akan berubah sesuai dengan makalah ini: akurat, minibatch besar SGD: pelatihan ImageNet dalam 1 jam.
# 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.yamlMemprediksi gambar dalam folder sederhana:
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 Maka itu akan mengunduh dan cache vgg_ssd300_voc0712.pth secara otomatis dan diprediksi gambar dengan kotak, skor dan nama label akan disimpan ke folder demo/result secara default.
Anda akan melihat output serupa:
(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
| Tes VOC2007 | Coco Test-Dev2015 | |
|---|---|---|
| SSD300* | 77.2 | 25.1 |
| SSD512* | 79.8 | 28.8 |
| Tulang punggung | Ukuran input | Kotak AP | Ukuran model | Unduh |
|---|---|---|---|---|
| VGG16 | 300 | 25.2 | 262MB | model |
| VGG16 | 512 | 29.0 | 275MB | model |
| Tulang punggung | Ukuran input | peta | Ukuran model | Unduh |
|---|---|---|---|---|
| VGG16 | 300 | 77.7 | 201MB | model |
| VGG16 | 512 | 80.7 | 207MB | model |
| MobileNet v2 | 320 | 68.9 | 25.5MB | model |
| MobileNet v3 | 320 | 69.5 | 29.9MB | model |
| EfisiensiNet-b3 | 300 | 73.9 | 97.1MB | model |
Jika Anda ingin menambahkan komponen khusus Anda, silakan lihat develov_guide.md untuk detail lebih lanjut.
Jika Anda memiliki masalah yang menjalankan atau menyusun kode ini, kami telah menyusun daftar masalah umum dalam pemecahan masalah.md. Jika masalah Anda tidak ada di sana, jangan ragu untuk membuka masalah baru.
Jika Anda menggunakan proyek ini dalam penelitian Anda, silakan kutip proyek ini.
@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}}
}