このリポジトリはSSD(シングルショットマルチボックス検出器)を実装します。この実装は、SSD.Pytorch、Pytorch-SSD、Maskrcnnベンチマークのプロジェクトの影響を強く受けています。このリポジトリは、SSDに基づく研究のコードベースになることを目的としています。

例SSD出力(VGG_SSD300_VOC0712)。
| 損失 | 学習率 | メトリック |
|---|---|---|
![]() | ![]() | ![]() |
DistributedDataParallelを使用して、任意のGPUでトレーニングまたはテストすることができます。トレーニングスキーマはそれに応じて変更されます。backbone 、 Detector 、 BoxHead 、 BoxPredictorなどを抽象化します。コードベースを変更せずに、すべてのコンポーネントを独自のコードに置き換えることができます。たとえば、EfficientNetをBackBoneとして追加したり、 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デフォルトは現在のプロジェクトの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の数を変更すると、Hyper-Parameter(LR、Max_iter、...)もこのペーパーに従って変更されます。
# 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 | モデル |
| EfficientNet-B3 | 300 | 73.9 | 97.1MB | モデル |
カスタムコンポーネントを追加する場合は、詳細についてはdevelop_guide.mdを参照してください。
このコードの実行またはコンパイルの問題がある場合は、トラブルシューティングの一般的な問題のリストをまとめました。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}}
}