模型使用
进行相应环境准备后,我们可以开始模型训练、评估与推理任务。
准备模型源码和数据集
- 请参考•模型下载的三种方式:部分准备模型源码。
- 安装依赖。
在模型根目录执行以下命令,安装模型对应PyTorch版本需要的依赖。
pip3 install -r 1.5_requirements.txt # PyTorch1.5版本 pip3 install -r 1.8_requirements.txt # PyTorch1.8版本
只需执行一条对应的PyTorch版本依赖安装命令。
- 请自行获取coco2017数据集。解压后数据集目录结构参考如下(文件夹名称以“$coco_data”为例):
$coco_data: # 根目录 ├── train2017 # 训练集图片,约118287张 ├── val2017 # 验证集图片,约5000张 └── annotations # 标注目录 ├── instances_train2017.json # 对应目标检测、分割任务的训练集标注文件 ├── instances_val2017.json # 对应目标检测、分割任务的验证集标注文件 ├── captions_train2017.json ├── captions_val2017.json ├── person_keypoints_train2017.json └── person_keypoints_val2017.json
- 生成专用标注文件。将代码仓中“coco/coco2yolo.py”和“coco/coco_class.txt”拷贝到“$coco_data”根目录,运行如下命令,在“$coco_data”根目录生成“train2017.txt”和“val2017.txt”文件。
python3 coco2yolo.py
- 配置数据集路径。
在模型根目录执行以下命令:
mkdir datasets ln -s $coco_data ./datasets/coco
$coco_data参数填写数据集路径。
- 编译安装torchvision。
为了更快的推理性能,请编译安装而非直接安装torchvision。
git clone -b v0.9.1 https://github.com/pytorch/vision.git # 根据torch版本选择不同分支 cd vision python3 setup.py bdist_wheel pip3 install dist/*.whl
- 编译安装opencv-python。
为了获得最好的图像处理性能,请编译安装opencv-python而非直接安装。编译安装步骤如下:
export GIT_SSL_NO_VERIFY=true git clone https://github.com/opencv/opencv.git cd opencv mkdir -p build cd build cmake -D BUILD_opencv_python3=yes -D BUILD_opencv_python2=no -D PYTHON3_EXECUTABLE=/usr/local/python3.7.5/bin/python3.7m -D PYTHON3_INCLUDE_DIR=/usr/local/python3.7.5/include/python3.7m -D PYTHON3_LIBRARY=/usr/local/python3.7.5/lib/libpython3.7m.so -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/python3.7.5/lib/python3.7/site-packages/numpy/core/include -D PYTHON3_PACKAGES_PATH=/usr/local/python3.7.5/lib/python3.7/site-packages -D PYTHON3_DEFAULT_EXECUTABLE=/usr/local/python3.7.5/bin/python3.7m .. make -j$nproc make install
模型训练
本文以Yolov5模型为例介绍模型训练。
Yolov5模型支持单机训练和多机多卡训练,请根据您的机器规格从下列训练方式中选择一种即可(如果您是初学者,推荐使用单机训练即可)。
您需要在模型根目录执行以下命令。
- 单机训练
- 单机单卡训练启动单卡训练。
bash test/train_yolov5m_performance_1p.sh //yolov5m 1p_performance bash test/train_yolov5s_performance_1p.sh //yolov5s 1p_performance
以下为单卡训练成功的示例日志:图1 单卡训练成功日志 - 单机8卡训练
bash test/train_yolov5s_performance_8p.sh //yolov5s 8p_performance bash test/train_yolov5m_performance_8p.sh //yolov5m 8p_performance bash test/train_yolov5s_full_8p.sh //yolov5s 8p_accuracy bash test/train_yolov5m_full_8p.sh //yolov5m 8p_accuracy bash test/train_yolov5m_full_8p_high_preci.sh //yolov5m 8p_high_precision
至此,恭喜您完成了一次单机模型训练。
默认情况下进行2轮训练,可通过在训练脚本中设置epochs参数取值决定训练轮数。
训练完成后,权重文件、模型训练精度和性能信息保存在当前路径下。
- 单机单卡训练
- 多机多卡训练
bash test/train_yolov5s_performance_cluster.sh --data_path=$coco_data --nnodes=机器数量 --node_rank=机器序号(0,1,2...) --master_addr=主机服务器地址 --master_port=主机服务器端口号 bash test/train_yolov5m_performance_cluster.sh --data_path=$coco_data --nnodes=机器数量 --node_rank=机器序号(0,1,2...) --master_addr=主机服务器地址 --master_port=主机服务器端口号
- $coco_data参数填写数据集路径。
- 当前脚本默认为8卡,若使用自定义卡数,需要在上面命令后添加 --device_number(每台机器使用卡数)与 --head_rank(起始卡号)两个参数。例如分别为4、0时,代表使用0-3卡训练。
至此,恭喜您完成了一次多机多卡模型训练。
默认情况下进行2轮训练,可通过在训练脚本中设置epochs参数取值决定训练轮数。
训练完成后,权重文件、模型训练精度和性能信息保存在当前路径下。
评估与推理
本文以Yolov5模型为例介绍评估与推理。
评估与推理只支持单机单卡。
您需要在模型根目录执行以下命令。
- 模型评估
bash test/train_yolov5m_eval.sh
以下为评估成功的示例日志:
图2 评估成功日志至此,恭喜您完成了一次模型评估。
- 模型推理
python3 detect.py --conf-thres=0.50 --iou-thres=0.50 --img-size=640 --weight='yolov5.pt' --source=./images/original_imgs --project=./images/infer_imgs --device=0
以下为推理成功的示例日志:
图3 推理成功日志输出结果如图4所示:
至此,恭喜您完成了一次模型推理。
脚本参数说明
- 训练脚本公共参数:
--data //数据集路径 --workers //加载数据进程数 --batch-size //训练批次大小 --epochs //重复训练次数 --weights //初始权重路径 --rect //矩形训练 --nosave //保存最后一个权重 --noval //验证最后一个epoch --artifact_alias //数据集版本 --save-period //权重保存
- detect.py:
--conf-thres //置信度阈值 --iou-thresiou //阈值 --img-size //输入网络的图片大小 --weight //权重文件 --source //输入图片的地址 --project //推理结果图片的输出地址 --device //使用的推理卡号