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}}
}