主要实现如下的功能:
- 使用现有的模型对给定的图像进行推理
- 在标准数据集上测试已有的模型
- 在标准数据集上训练预定义的模型
使用现有的模型对给定的图像进行推理
configs文件夹集成各种算法,模型在config文件中定义,设置所有东西:backbone,深度,训练策略,选取的优化器,数据处理参数…….
而模型的参数存在于checkpoint文件中。
config文件命名规则:
{model}_[model setting]_{backbone}_{neck}_[norm setting]_[misc]_[gpu x batch_per_gpu]_{schedule}_{dataset}
demo文件夹
Image Demo:有三个必要的参数,依次为测试图像的路径, config文件的路径, checkpoint文件的路径。还可以指定cpu还是gpu运行, 默认值为gpu, 保留bbox的分数阈值,默认为0.3
python demo/image_demo.py \
${IMAGE_FILE} \
${CONFIG_FILE} \
${CHECKPOINT_FILE} \
[--device ${GPU_ID}] \
[--score-thr ${SCORE_THR}]
例如
python demo/image_demo.py demo/demo.jpg \
configs/faster_rcnn_r50_fpn_1x_coco.py \
checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth \
--device cpu
webcam demo(测试摄像头):基本的参数同上,必须指定的参数为config文件的路径,checkpoint文件的路径,其他的gpu或者cpu设备, 摄像头id号, 得分阈值可以选择指定。
python demo/webcam_demo.py \
${CONFIG_FILE} \
${CHECKPOINT_FILE} \
[--device ${GPU_ID}] \
[--camera-id ${CAMERA-ID}] \
[--score-thr ${SCORE_THR}]
例如
python demo/webcam_demo.py \
configs/faster_rcnn_r50_fpn_1x_coco.py \
checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
tools/misc/print_config.py configs/.py 查看完整参数
tools/misc/print_config.py configs/.py >*.tixt 保存
python ./tools/train.py 直接train
在标准数据集上测试已经存在的模型
mmdetection支持coco,voc,cityscapes等一些其他的标准数据集,在目标检测中最常用的数据集格式就是coco数据集,可以将自己的数据集转换为这种标准格式,进行后续的训练验证测试。
测试现有的模型
mmdetection提供了测试现有模型的测试脚本:
- 单GPU
- 多GPU的单节点
- 多节点
对于不同的环境选择合适的测试脚本:
# single-gpu testing
python tools/test.py \
${CONFIG_FILE} \
${CHECKPOINT_FILE} \
[--out ${RESULT_FILE}] \
[--eval ${EVAL_METRICS}] \
[--show]
# multi-gpu testing
bash tools/dist_test.sh \
${CONFIG_FILE} \
${CHECKPOINT_FILE} \
${GPU_NUM} \
[--out ${RESULT_FILE}] \
[--eval ${EVAL_METRICS}]
tools/dist_test.sh支持多节点的测试
其中除了必要的cofig文件与checkpoint文件,还有其他可选择的参数:
例如:
- 测试faster rcnn并可视化结果,按任意建来查看下一张图像 python tools/test.py \configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py
checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
–show - 测试Faster R-CNN,并保存绘制的图像以供将来可视化。 python tools/test.py
configs/faster_rcnn/faster_rcnn_r50_fpn_1x.py
checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
–show-dir faster_rcnn_r50_fpn_1x_results - 在PASCAL VOC上测试Faster R-CNN(不保存测试结果)并评估mAP。、 python tools/test.py
configs/pascal_voc/faster_rcnn_r50_fpn_1x_voc.py
checkpoints/faster_rcnn_r50_fpn_1x_voc0712_20200624-c9895d40.pth
–eval mAP - 使用8个GPU测试Mask R-CNN,并评估bbox和mask AP。 ./tools/dist_test.sh
configs/mask_rcnn_r50_fpn_1x_coco.py
checkpoints/mask_rcnn_r50_fpn_1x_coco_20200205-d4b0c5d6.pth \ 8
–out results.pkl \ --eval bbox segm - 使用8个GPU测试Mask R-CNN,并评估分类bbox和mask AP。 ./tools/dist_test.sh
configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py
checkpoints/mask_rcnn_r50_fpn_1x_coco_20200205-d4b0c5d6.pth \ 8
–out results.pkl \ --eval bbox segm \ --options “classwise=True” - 在具有8个GPU的COCO test-dev上测试Mask R-CNN,并生成JSON文件以提交给官方评估服务器。
./tools/dist_test.sh \ configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py
\ checkpoints/mask_rcnn_r50_fpn_1x_coco_20200205-d4b0c5d6.pth \ 8
-format-only \ --options “jsonfile_prefix=./mask_rcnn_test-dev_results”
此命令生成两个JSON文件mask_rcnn_test-dev_results.bbox.json和mask_rcnn_test-dev_results.segm.json。 - 在Cityscapes上使用8个GPU测试 Mask R-CNN,并生成txt和png文件提交给官方评估服务器。
./tools/dist_test.sh
configs/cityscapes/mask_rcnn_r50_fpn_1x_cityscapes.py
checkpoints/mask_rcnn_r50_fpn_1x_cityscapes_20200227-afe51d5a.pth \ 8
\ --format-only \ --options
“txtfile_prefix=./mask_rcnn_cityscapes_test_results”
生成的png和txt将在./mask_rcnn_cityscapes_test_results目录下。