2021SC@SDUSC
开始训练
本项目在work/hw_configs/目录下提供以下配置文件
- yolov3_mobilenet_v1_roadsign_voc_template.yml
- yolov3_mobilenet_v1_roadsign_coco_template.yml
- ppyolo_resnet50_vd_roadsign_coco_template.yml
- faster_rcnn_r50_roadsign_coco_template.yml
- faster_rcnn_r50_vd_fpn_roadsign_coco_template.yml
- fcos_r50_roadsign_coco_template.yml
将~/work/hw_configs.zip解压到 configs 文件夹下
%cd ~/work/PaddleDetection/
!unzip -o ~/work/hw_configs.zip -d configs/
! ls configs/hw_configs/
# 选择配置开始训练。可以通过 -o 选项覆盖配置文件中的参数
# faster_rcnn_r50_vd_fpn
! python -u tools/train.py -c configs/hw_configs/faster_rcnn_r50_vd_fpn_roadsign_coco_template.yml -o use_gpu=True --eval
# yolov3
#! python -u tools/train.py -c configs/hw_configs/yolov3_mobilenet_v1_roadsign_voc_template.yml -o use_gpu=True --eval
# fcos
#! python -u tools/train.py -c configs/hw_configs/fcos_r50_roadsign_coco_template.yml -o use_gpu=True --eval
您可以通过指定visualDL可视化工具,对loss变化曲线可视化。您仅需要指定 use_vdl
参数和 vdl_log_dir
参加即可。
点击左侧 可视化 按钮,设置 logdir
和模型文件,就可以对训练过程loss变化曲线和模型进行可视化。
# 选择配置开始训练。可以通过 -o 选项覆盖配置文件中的参数 vdl_log_dir 设置vdl日志文件保存路径
# faster_rcnn_r50_vd_fpn
! python -u tools/train.py -c configs/hw_configs/faster_rcnn_r50_vd_fpn_roadsign_coco_template.yml -o use_gpu=True --use_vdl=True --vdl_log_dir=vdl_dir/scalar --eval
# yolov3
#! python -u tools/train.py -c configs/hw_configs/yolov3_mobilenet_v1_roadsign_voc_template.yml -o use_gpu=True --use_vdl=True --vdl_log_dir=vdl_dir/scalar --eval
# fcos
#! python -u tools/train.py -c configs/hw_configs/fcos_r50_roadsign_coco_template.yml -o use_gpu=True --use_vdl=True --vdl_log_dir=vdl_dir/scalar --eval
评估和预测
PaddleDetection也提供了tools/eval.py脚本用于评估模型,评估是可以通过-o weights=指定待评估权重。
PaddleDetection训练过程中若开始了--eval,会将所有checkpoint中评估结果最好的checkpoint保存为best_model.pdparams,可以通过如下命令一键式评估最优checkpoint
这里我们加载预训练好的权重进行预测:
- https://paddlemodels.bj.bcebos.com/object_detection/yolov3_best_model_roadsign.pdparams
- https://paddlemodels.bj.bcebos.com/object_detection/faster_r50_fpn_best_model_roadsign.pdparams
- https://paddlemodels.bj.bcebos.com/object_detection/fcos_best_model_roadsign.pdparams
# 评估
# faster_rcnn_r50_vd_fpn
! python -u tools/eval.py -c configs/hw_configs/faster_rcnn_r50_vd_fpn_roadsign_coco_template.yml -o use_gpu=True weights=https://paddlemodels.bj.bcebos.com/object_detection/faster_r50_fpn_best_model_roadsign.pdparams
# yolov3
#! python -u tools/eval.py -c configs/hw_configs/yolov3_mobilenet_v1_roadsign_coco_template.yml -o use_gpu=True weights=https://paddlemodels.bj.bcebos.com/object_detection/yolov3_best_model_roadsign.pdparams
# fcos
#! python -u tools/eval.py -c configs/hw_configs/fcos_r50_roadsign_coco_template.yml -o use_gpu=True weights=https://paddlemodels.bj.bcebos.com/object_detection/fcos_best_model_roadsign.pdparams
PaddleDetection提供了tools/infer.py预测工具,可以使用训练好的模型预测图像并可视化,通过-o weights=指定加载训练过程中保存的权重。
预测脚本如下:
img_path = './dataset/roadsign_voc/images/road554.png'
# faster_rcnn_r50_vd_fpn
! python tools/infer.py -c configs/hw_configs/faster_rcnn_r50_vd_fpn_roadsign_coco_template.yml -o use_gpu=True weights=https://paddlemodels.bj.bcebos.com/object_detection/faster_r50_fpn_best_model_roadsign.pdparams --infer_img=dataset/roadsign_voc/images/road554.png
# yolov3
#! python tools/infer.py -c configs/hw_configs/yolov3_mobilenet_v1_roadsign_voc_template.yml -o use_gpu=True weights=https://paddlemodels.bj.bcebos.com/object_detection/yolov3_best_model_roadsign.pdparams --infer_img=dataset/roadsign_voc/images/road554.png
# fcos
#! python tools/infer.py -c configs/hw_configs/fcos_r50_roadsign_coco_template.yml -o use_gpu=True weights=https://paddlemodels.bj.bcebos.com/object_detection/fcos_best_model_roadsign.pdparams --infer_img=dataset/roadsign_voc/images/road554.png
%matplotlib inline
import matplotlib.pyplot as plt
import cv2
infer_img = cv2.imread("output/road554.png")
plt.figure(figsize=(15,10))
plt.imshow(cv2.cvtColor(infer_img, cv2.COLOR_BGR2RGB))
plt.show()
模型压缩
如果您要对模型进行压缩,PaddleDetection中模型压缩部分提供以下模型压缩方式:
模型部署
如果您要部署模型,请参考模型部署部分提供以下部署方式:
- 服务器端Python部署
- 服务器端C++部署
- 移动端部署
- 在线Serving部署