이 저장소는 SSD (단일 샷 Multibox Detector)를 구현합니다. 구현은 SSD.Pytorch, Pytorch-SSD 및 MaskRCNN-Benchmark 프로젝트에 의해 크게 영향을받습니다. 이 저장소는 SSD를 기반으로 한 연구의 코드 기반이되는 것을 목표로합니다.

예제 SSD 출력 (VGG_SSD300_VOC0712).
| 사상자 수 | 학습 속도 | 메트릭 |
|---|---|---|
![]() | ![]() | ![]() |
DistributedDataParallel 사용하고 임의의 GPU를 사용하여 훈련하거나 테스트 할 수 있습니다. 교육 스키마는 그에 따라 변경됩니다.backbone , Detector , BoxHead , BoxPredictor 등을 추상화합니다. 모든 구성 요소를 코드베이스를 변경하지 않고 자신의 코드로 교체 할 수 있습니다. 예를 들어, 효율적인 넷을 백본으로 추가하고 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 에 Symlinks를 생성하거나 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 Default가 현재 프로젝트의 datasets 세트 폴더 인 경우 datasets 에 Symlinks를 만들거나 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, ...) 도이 논문에 따라 변경 될 것입니다. 정확하고 큰 미니 배트 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 테스트 | Coco Test-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 | 모델 |
| 효율적인 NET-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}}
}