SSD
More modular!
该存储库实现了SSD(单拍的多伯克斯检测器)。该实施受到SSD.Pytorch,Pytorch-SSD和MaskRCNN基准的项目的严重影响。该存储库旨在成为基于SSD的研究的代码基础。

示例SSD输出(VGG_SSD300_VOC0712)。
| 损失 | 学习率 | 指标 |
|---|---|---|
![]() | ![]() | ![]() |
DistributedDataParallel ,您可以使用任意GPU进行训练或测试,培训模式将相应地改变。backbone , Detector , BoxHead , BoxPredictor等。您可以用自己的代码替换每个组件,而无需更改代码库。例如,您可以添加ExtricNET作为骨干网,只需添加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_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我提供的配置文件假设我们正在单个GPU上运行。在更改GPU的数量时,超参数(LR,MAX_ITER,...)也将根据本文更改:准确,大型Minibatch SGD:1小时内训练Imagenet。
# 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测试 | 可可测试-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 | 模型 |
| 有效网络-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}}
}