Skip to content

Latest commit

 

History

History

detection

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

Megengine Object Detection Models

介绍

本目录包含了采用MegEngine实现的如下经典网络结构,并提供了在COCO2017数据集上的完整训练和测试代码:

网络在COCO2017验证集上的性能和结果如下:

模型 mAP
@5-95
batch
/gpu
retinanet-res18-coco-3x-800size 35.3 2
retinanet-res34-coco-3x-800size 38.4 2
retinanet-res50-coco-3x-800size 39.3 2
retinanet-res101-coco-3x-800size 41.4 2
retinanet-resx101-coco-2x-800size 42.3 2
faster-rcnn-res18-coco-3x-800size 35.7 2
faster-rcnn-res34-coco-3x-800size 39.6 2
faster-rcnn-res50-coco-3x-800size 40.1 2
faster-rcnn-res101-coco-3x-800size 42.6 2
faster-rcnn-resx101-coco-2x-800size 44.1 2
freeanchor-res18-coco-3x-800size 38.1 2
freeanchor-res34-coco-3x-800size 41.1 2
freeanchor-res50-coco-3x-800size 42.1 2
freeanchor-res101-coco-3x-800size 43.9 2
freeanchor-resx101-coco-2x-800size 44.9 2
fcos-res18-coco-3x-800size 37.6 2
fcos-res34-coco-3x-800size 41.0 2
fcos-res50-coco-3x-800size 42.2 2
fcos-res101-coco-3x-800size 44.3 2
fcos-resx101-coco-2x-800size 44.8 2
atss-res18-coco-3x-800size 38.3 2
atss-res34-coco-3x-800size 41.5 2
atss-res50-coco-3x-800size 42.6 2
atss-res101-coco-3x-800size 44.7 2
atss-resx101-coco-2x-800size 45.6 2

安装和环境配置

本目录下代码基于MegEngine v1.6,在开始运行本目录下的代码之前,请确保按照README进行了正确的环境配置。

如何使用

以RetinaNet为例,模型训练好之后,可以通过如下命令测试单张图片:

python3 tools/inference.py -f configs/retinanet_res50_coco_3x_800size.py \
                           -w /path/to/model_weights.pkl \
                           -i ../../assets/cat.jpg

tools/inference.py的命令行选项如下:

  • -f, 测试的网络结构描述文件。
  • -w, 需要测试的模型权重。
  • -i, 需要测试的样例图片。

使用默认图片和默认模型测试的结果见下图:

demo image

如何训练

以RetinaNet在COCO2017数据集上训练为例。

  1. 在开始训练前,请确保已经下载解压好COCO2017数据集, 并放在合适的数据目录下,准备好的数据集的目录结构如下所示(目前默认使用COCO2017数据集):
/path/to/
    |->coco
    |    |annotations
    |    |train2017
    |    |val2017
  1. 准备预训练的backbone网络权重:可使用 megengine.hub 下载megengine官方提供的在ImageNet上训练的模型, 并存放在 /path/to/pretrain.pkl

  2. 开始训练:

python3 tools/train.py -f configs/retinanet_res50_coco_3x_800size.py -n 8 \
                       -d /path/to/COCO2017

tools/train.py的命令行选项如下:

  • -f, 所需要训练的网络结构描述文件。
  • -n, 用于训练的devices(gpu)数量。
  • -w, 预训练的backbone网络权重。
  • -b,训练时采用的batch size, 默认2,表示每张卡训2张图。
  • -d, 数据集的上级目录,默认/data/datasets

默认情况下模型会存在 log-of-模型名目录下。

如何测试

以RetinaNet在COCO2017数据集上测试为例。

在得到训练完保存的模型之后,可以通过tools下的test.py文件测试模型在验证集上的性能。

验证某个epoch的性能:

python3 tools/test.py -f configs/retinanet_res50_coco_3x_800size.py -n 8 \
                      -se 51 \
                      -d /path/to/COCO2017

验证连续若干个epoch性能:

python3 tools/test.py -f configs/retinanet_res50_coco_3x_800size.py -n 8 \
                      -se 51 -ee 53 \
                      -d /path/to/COCO2017

表格输出多个模型测试结果(不需要gpu,只需要提前准备模型输出的json文件):

python3 tools/test_in_table.py -f file1.py file2.py\
                      -j file1.json file2.json\
                      -d /path/to/COCO2017

验证某个指定weights的性能:

python3 tools/test.py -f configs/retinanet_res50_coco_3x_800size.py -n 8 \
                      -w /path/to/model_weights.pkl \
                      -d /path/to/COCO2017

tools/test.py的命令行选项如下:

  • -f, 所需要测试的网络结构描述文件。
  • -n, 用于测试的devices(gpu)数量。
  • -w, 需要测试的模型权重。
  • -d,数据集的上级目录,默认/data/datasets
  • -se,连续测试的起始epoch数,默认为最后一个epoch,该参数的值必须大于等于0且小于模型的最大epoch数。
  • -ee,连续测试的结束epoch数,默认等于-se(即只测试1个epoch),该参数的值必须大于等于-se且小于模型的最大epoch数。

参考文献