模型使用
进行相应环境准备后,我们可以开始模型训练与评估任务。
准备模型源码和数据集
- 请通过单击模型页面的“获取源码”方式,准备模型源码。
- 安装依赖。
在模型根目录执行以下命令,安装模型对应PyTorch版本需要的依赖。
pip install -r 2.1_requirements.txt # PyTorch2.1版本
- 请自行获取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=/root/miniconda3/envs/yolov5/bin/python3.8 -D PYTHON3_INCLUDE_DIR=/root/miniconda3/envs/yolov5/include/python3.8 -D PYTHON3_LIBRARY=/root/miniconda3/envs/yolov5/lib/libpython3.8.so -D PYTHON3_NUMPY_INCLUDE_DIRS=/root/miniconda3/envs/yolov5/lib/python3.8/site-packages/numpy/core/include -D PYTHON3_PACKAGES_PATH=/root/miniconda3/envs/yolov5/lib/python3.8/site-packages -D PYTHON3_DEFAULT_EXECUTABLE=/root/miniconda3/envs/yolov5/bin/python3.8 .. make -j$nproc make install
上述cmake命令中的路径,请自行替换为实际conda虚拟环境或者系统环境的Python路径。
编译安装过程中会刷新numpy的版本,该版本的numpy无法运行本项目。
请在编译安装OpenCV后,将numpy回退到1.23.0版本。
pip install numpy==1.23.0
模型训练
本文以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 评估成功日志

至此,恭喜您完成了一次模型评估。
脚本参数说明
训练脚本公共参数:
--data //数据集路径 --workers //加载数据进程数 --batch-size //训练批次大小 --epochs //重复训练次数 --weights //初始权重路径 --rect //矩形训练 --nosave //保存最后一个权重 --noval //验证最后一个epoch --artifact_alias //数据集版本 --save-period //保存权重