Este repositorio implementa SSD (detector multibox de disparo único). La implementación está fuertemente influenciada por los proyectos ssd.pytorch, pytorch-ssd y maskrcnn-benchmark. Este repositorio tiene como objetivo ser la base de código para investigaciones basadas en SSD.

Ejemplo de salida SSD (VGG_SSD300_VOC0712).
| Pérdidas | Tasa de aprendizaje | Métrica |
|---|---|---|
![]() | ![]() | ![]() |
DistributedDataParallel , puede entrenar o probar con GPU (s) arbitraria (s), el esquema de capacitación cambiará en consecuencia.backbone , Detector , BoxHead , BoxPredictor , etc. Puede reemplazar cada componente con su propio código sin cambiar la base del código. Por ejemplo, puede agregar EficeTient Net como Backbone, solo agregar efficient_net.py (ya agregado) y registrarlo, específico en el archivo de configuración, ¡está listo!CMD de entrenamiento.eval_step para verificar la mejora del rendimiento o no.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. Para el conjunto de datos de VOC Pascal, haga la estructura de la carpeta así:
VOC_ROOT
|__ VOC2007
|_ JPEGImages
|_ Annotations
|_ ImageSets
|_ SegmentationClass
|__ VOC2012
|_ JPEGImages
|_ Annotations
|_ ImageSets
|_ SegmentationClass
|__ ...
Donde VOC_ROOT predeterminado es la carpeta datasets en el proyecto actual, puede crear enlaces simbólicos a datasets o export VOC_ROOT="/path/to/voc_root" .
Para el conjunto de datos de Coco, haga la estructura de la carpeta así:
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
|__ ...
Donde COCO_ROOT predeterminado es la carpeta datasets en el proyecto actual, puede crear enlaces simbólicos a datasets o 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 1000Los archivos de configuración que proporciono suponen que estamos ejecutando en una única GPU. Al cambiar el número de GPU, Hyper-Parameter (LR, Max_iter, ...) también cambiará de acuerdo con este documento: SGD de minibatch de gran minibatch preciso: entrenamiento de Imagenet en 1 hora.
# 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.yamlPredecir la imagen en una carpeta es simple:
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 Luego se descargará y caché vgg_ssd300_voc0712.pth automáticamente y las imágenes predichas con cuadros, puntajes y nombres de etiquetas se guardarán en la carpeta de demo/result de forma predeterminada.
Verá una salida similar:
(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
| Prueba VOC2007 | COCO TEST-DEV2015 | |
|---|---|---|
| SSD300* | 77.2 | 25.1 |
| SSD512* | 79.8 | 28.8 |
| Columna vertebral | Tamaño de entrada | AP de la caja | Tamaño del modelo | Descargar |
|---|---|---|---|---|
| VGG16 | 300 | 25.2 | 262 MB | modelo |
| VGG16 | 512 | 29.0 | 275 MB | modelo |
| Columna vertebral | Tamaño de entrada | mapa | Tamaño del modelo | Descargar |
|---|---|---|---|---|
| VGG16 | 300 | 77.7 | 201MB | modelo |
| VGG16 | 512 | 80.7 | 207MB | modelo |
| Mobilenet V2 | 320 | 68.9 | 25.5MB | modelo |
| Mobilenet V3 | 320 | 69.5 | 29.9MB | modelo |
| Eficientenet-b3 | 300 | 73.9 | 97.1MB | modelo |
Si desea agregar sus componentes personalizados, consulte Develop_Guide.md para obtener más detalles.
Si tiene problemas para ejecutar o compilar este código, hemos compilado una lista de problemas comunes en la solución de problemas. Si su problema no está presente allí, no dude en abrir un nuevo problema.
Si usa este proyecto en su investigación, cite este proyecto.
@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}}
}