Este repositório implementa SSD (detector multibox de tiro único). A implementação é fortemente influenciada pelos projetos ssd.pytorch, pytorch-ssd e maskrcnn-benchmark. Este repositório pretende ser a base de código para pesquisas baseadas no SSD.

Exemplo de saída SSD (VGG_SSD300_VOC0712).
| Perdas | Taxa de aprendizado | Métricas |
|---|---|---|
![]() | ![]() | ![]() |
DistributedDataParallel , você pode treinar ou testar com GPU (s) arbitrária (s), o esquema de treinamento mudará de acordo.backbone , Detector , BoxHead , BoxPredictor , etc. Você pode substituir todos os componentes por seu próprio código sem alterar a base de código. Por exemplo, você pode adicionar eficácia como backbone, basta adicionar efficient_net.py (já adicionado) e registrá -lo, específico no arquivo de configuração, está pronto!CMD de treinamento.eval_step para verificar o desempenho melhorando ou não.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 o conjunto de dados Pascal VOC, faça a estrutura da pasta como esta:
VOC_ROOT
|__ VOC2007
|_ JPEGImages
|_ Annotations
|_ ImageSets
|_ SegmentationClass
|__ VOC2012
|_ JPEGImages
|_ Annotations
|_ ImageSets
|_ SegmentationClass
|__ ...
Onde VOC_ROOT padrão é a pasta datasets no projeto atual, você pode criar symblinks para datasets ou export VOC_ROOT="/path/to/voc_root" .
Para o conjunto de dados Coco, faça a estrutura da pasta como esta:
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
|__ ...
Onde o padrão COCO_ROOT é a pasta datasets no projeto atual, você pode criar symblinks para datasets ou 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 1000Os arquivos de configuração que eu forneço assumem que estamos executando em GPU único. Ao alterar o número de GPUs, o hiper-parâmetro (LR, max_iter, ...) também será alterado de acordo com este artigo: SGD de minibatch preciso e preciso: treinamento de imagenet em 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.yamlA imagem prevente em uma pasta é simples:
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 Em seguida, ele baixará e cache vgg_ssd300_voc0712.pth Imagens previstas automaticamente e com caixas, pontuações e nomes de etiquetas serão salvos na pasta de demo/result por padrão.
Você verá uma saída semelhante:
(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
| Teste VOC2007 | Coco Test-Dev2015 | |
|---|---|---|
| SSD300* | 77.2 | 25.1 |
| SSD512* | 79.8 | 28.8 |
| Espinha dorsal | Tamanho de entrada | caixa ap | Tamanho do modelo | Download |
|---|---|---|---|---|
| VGG16 | 300 | 25.2 | 262 MB | modelo |
| VGG16 | 512 | 29.0 | 275 MB | modelo |
| Espinha dorsal | Tamanho de entrada | mapa | Tamanho do modelo | Download |
|---|---|---|---|---|
| VGG16 | 300 | 77.7 | 201MB | modelo |
| VGG16 | 512 | 80.7 | 207 MB | modelo |
| MobileNet V2 | 320 | 68.9 | 25,5 MB | modelo |
| MobileNet V3 | 320 | 69.5 | 29,9 MB | modelo |
| EficienteNET-B3 | 300 | 73.9 | 97,1 MB | modelo |
Se você deseja adicionar seus componentes personalizados, consulte Develop_guide.md para obter mais detalhes.
Se você tiver problemas em execução ou compilação deste código, compilamos uma lista de problemas comuns na solução de problemas.md. Se o seu problema não estiver presente lá, sinta -se à vontade para abrir um novo problema.
Se você usar este projeto em sua pesquisa, cite este projeto.
@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}}
}