EfficientDet:可扩展且高效的目标检测
简介
这是我们对论文《EfficientDet:可扩展且高效的目标检测》中描述的模型的 PyTorch 实现 论文链接(注意:我们还提供了预训练权重,可以在 ./trained_models 中查看)
我们模型输出的示例。
数据集
数据集 | 类别数 | 训练图像数量 | 验证图像数量 |
---|---|---|---|
COCO2017 | 80 | 118k | 5k |
在仓库下创建一个数据文件夹,
cd {repo_root}
mkdir data
- COCO:
从 COCO 网站 下载 COCO 图像和标注。确保按以下结构放置文件:
COCO ├── annotations │ ├── instances_train2017.json │ └── instances_val2017.json │── images ├── train2017 └── val2017
如何使用我们的代码
使用我们的代码,您可以:
- 通过运行 python train.py 来训练您的模型
- 通过运行 python mAP_evaluation.py 来评估 COCO 数据集的 mAP
- 通过运行 python test_dataset.py --pretrained_model path/to/trained_model 来测试 COCO 数据集的模型
- 通过运行 python test_video.py --pretrained_model path/to/trained_model --input path/to/input/file --output path/to/output/file 来测试视频的模型
实验
我们使用 3 个 NVIDIA GTX 1080Ti 训练了我们的模型。以下是 COCO val2017 数据集的 mAP(平均精确度均值)
平均精确度 | IoU=0.50:0.95 | 区域=全部 | 最大检测数=100 | 0.314 |
---|---|---|---|---|
平均精确度 | IoU=0.50 | 区域=全部 | 最大检测数=100 | 0.461 |
平均精确度 | IoU=0.75 | 区域=全部 | 最大检测数=100 | 0.343 |
平均精确度 | IoU=0.50:0.95 | 区域=小 | 最大检测数=100 | 0.093 |
平均精确度 | IoU=0.50:0.95 | 区域=中 | 最大检测数=100 | 0.358 |
平均精确度 | IoU=0.50:0.95 | 区域=大 | 最大检测数=100 | 0.517 |
平均召回率 | IoU=0.50:0.95 | 区域=全部 | 最大检测数=1 | 0.268 |
平均召回率 | IoU=0.50:0.95 | 区域=全部 | 最大检测数=10 | 0.382 |
平均召回率 | IoU=0.50:0.95 | 区域=全部 | 最大检测数=100 | 0.403 |
平均召回率 | IoU=0.50:0.95 | 区域=小 | 最大检测数=100 | 0.117 |
平均召回率 | IoU=0.50:0.95 | 区域=中 | 最大检测数=100 | 0.486 |
平均召回率 | IoU=0.50:0.95 | 区域=大 | 最大检测数=100 | 0.625 |
结果
以下展示了一些预测结果:
要求
- python 3.6
- pytorch 1.2
- opencv (cv2)
- tensorboard
- tensorboardX(如果您不使用 SummaryWriter,可以跳过这个库)
- pycocotools
- efficientnet_pytorch
参考文献
- Mingxing Tan, Ruoming Pang, Quoc V. Le. "EfficientDet: 可扩展且高效的目标检测." EfficientDet.
- 我们的实现借鉴了 RetinaNet.Pytorch 的部分内容
引用
@article{EfficientDetSignatrix,
Author = {Signatrix GmbH},
Title = {EfficientDet目标检测的PyTorch实现},
Journal = {https://github.com/signatrix/efficientdet},
Year = {2020}
}