Этот репозиторий реализует SSD (один выстрел Multibox Detector). На реализацию сильно влияют проекты SSD.Pytorch, Pytorch-SSD и Maskrcnn-Benchmark. Этот репозиторий направлена на то, чтобы стать кодовой базой для исследований, основанных на SSD.

Пример вывода SSD (VGG_SSD300_VOC0712).
| Убытки | Скорость обучения | Метрики |
|---|---|---|
![]() | ![]() | ![]() |
DistributedDataParallel , вы можете тренироваться или тестировать с произвольным графическим процессором, схема обучения изменится соответствующим образом.backbone , Detector , BoxHead , BoxPredictor и т. Д. Вы можете заменить каждый компонент своим собственным кодом без изменения базы кода. Например, вы можете добавить EfficeNet в качестве магистрали, просто добавьте 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 в текущем проекте, вы можете создавать символические ссылки на 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, ...) также изменится в соответствии с этой статьей: Точный большой Minibatch SGD: Training 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 |
| Магистраль | Входной размер | ящик | Размер модели | Скачать |
|---|---|---|---|---|
| VGG16 | 300 | 25.2 | 262 МБ | модель |
| VGG16 | 512 | 29,0 | 275 МБ | модель |
| Магистраль | Входной размер | карта | Размер модели | Скачать |
|---|---|---|---|---|
| VGG16 | 300 | 77.7 | 201mb | модель |
| VGG16 | 512 | 80.7 | 207 МБ | модель |
| Mobilenet v2 | 320 | 68.9 | 25,5 МБ | модель |
| Mobilenet v3 | 320 | 69,5 | 29,9 МБ | модель |
| EfficeNet-B3 | 300 | 73,9 | 97,1 МБ | модель |
Если вы хотите добавить свои пользовательские компоненты, см. Develop_guide.md для получения более подробной информации.
Если у вас есть проблемы с запуском или составлением этого кода, мы составили список общих проблем в устранении неполадок. 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}}
}