餐饮目标识别模型的训练过程
收集餐饮客户需要训练的图(目标识别中,无法框出的图),放到images文件夹中,打包成zip压缩包。
wmdigit用户登录双显卡机器。
总体流程
- 在yolo5的测试集的最新的原有模型中,跑一遍图片,得到标签集。
- 使用labeling软件,调整和添加画框,可以得到手动更新的标签集。
- 在yolo5的训练集的最新的原有模型中,训练一遍原图和标签集,得到新的模型。
详细流程
获取标签集
在双显卡机器中操作
1 2 3 4 5 6 7 8 9 10
| sudo -i # 提权 cd /home/wmdigit/Projects/pytorch/experiment/study/yolov5-food-320 # 进入yolo5的路径 rz # 拿到images.zip unzip images.zip # 解压到当前目录下 vim test.sh # 编辑脚本文件test.sh,检查--source的目录是否是图片所在目录,将--weights的路径中的exp文件改为最新的 source activate # 激活python虚拟环境 ./test.sh # 运行测试脚本,生成的结果在./runs/detect目录下最新的exp文件 cd ./runs/detect # 进入目录 zip -rq exp61.zip exp61 # 假设生成的最新exp文件是exp61,里面的labels文件夹就是标签集,是每张图片的画框坐标文件,打包压缩。 sz exp61.zip # 发送到Windows设备进行处理
|
更新标签集
在本机操作
打开拿到的exp文件,将labels文件夹中的所有坐标文件,移动到images文件夹中,然后在images文件夹中,创建一个classes.txt文件,内容是1和2.分两行。打开labeling软件,打开images文件夹,逐张图片查看。如果画框不准确的,则调整已有的框的大小,保存;如果没有识别的,则手动画框,保存。
将classes.txt文件删掉,在images文件夹中运行以下脚本文件(自动筛选出更改过的画框坐标文件,放入labels文件夹中)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import os import shutil
current_dir = os.getcwd()
sub_dir = os.path.join(current_dir, "labels") os.makedirs(sub_dir, exist_ok=True)
txt_files = [file for file in os.listdir(current_dir) if file.endswith(".txt")]
for file in txt_files: file_path = os.path.join(current_dir, file) shutil.copy(file_path, sub_dir)
|
打包labels文件夹,得到labels.zip压缩包。
训练模型
在双显卡机器中操作
1 2 3 4 5 6 7 8 9
| cd /home/wmdigit/Projects/pytorch/experiment/study/yolov5-food-320 # 进入yolo路径 rz # 拿到labels.zip压缩包 unzip -j images.zip /home/wmdigit/Data/foodTrainDataset/images # 将原图放到yolo5的训练集图片文件夹中 unzip -j labels.zip /home/wmdigit/Data/foodTrainDataset/labels # 将标签放到yolo5的训练集标签文件夹中 vim train.sh # 编辑脚本文件train.sh,将--weights的路径中的exp文件改为最新的 ./train.sh # 运行训练脚本,生成的结果在./runs/train目录下最新的exp文件 ls ./runs/train/ # 查看该目录下最新的exp文件,假设为exp37 zip -rq exp37.zip exp37 # 打包 sz exp37.zip # 发送到Windows设备进行处理
|
模型转换(可选非必须)
1 2
| vim ./onnx.sh # 编辑脚本文件onnx.sh,将--weights的路径中的exp文件改为最新的 ./onnx.sh # 运行脚本文件,观察输出
|
收尾
1 2 3
| # 把exp文件中的pt文件交给开发去集成到dll中,再把训练之后产生的多余的文件删一下 rm -rf images/ images.zip labels.zip # 可直接复制 rm runs/detect/exp61.zip runs/train/exp37.zip # 需要根据生成的exp文件修改命令
|