项目地址:yolov8镜像一键部署运行与云服务器
数据标注工具
针对与yolo系列模型,拉姆推荐使用LabelImg,而框框可以旋转的roLabelImg或者多边形标记的labelme拉姆都不推荐,因为到最后的yolo格式需要自己转换,并且效果不好
仅针对于拉姆自己数据集的测试
YOLO格式:类别ID和边界框坐标(中心x, 中心y, 宽度, 高度)
对于标签类别ID,有的时候会很乱,比如,person的ID应该为83,但实际上,在使用LabelImg标签标记的时候是0,所以,可以用下面的脚本来创建一个字典映射进行更改:
1 | # -*- coding: utf-8 -*- |
注意更改为自己的路径哦~
当然你如果想用多边形标记工具labelme(这个只能保存为json格式)
拉姆也有两个脚本,可以进行转正为yolo模型可以识别的相对路径txt格式:
脚本一:将json转换成txt格式,因为labelme标签ID为自己输入的字母或者其他字符而不是类别ID,所以还需要脚本二
1 | # -*- coding: utf-8 -*- |
脚本二:处理labelme标签ID,将其转换为类别ID
1 | # -*- coding: utf-8 -*- |
训练模型
- 首先在终端进入目录:ultralytics-8.3.27,在终端输入命令:
1 | cd ultralytics-8.3.27 |
- 在ultralytics-8.3.27里找到train_v8.py文件,更改其代码:
1 | import sys |
- 在ultralytics-8.3.27上传配置文件coco128.yaml(可以根据自己的需求进行更改)
1 | # 数据集位置 |
- 在ultralytics-8.3.27上传配置文件config.yaml
1 | # 任务类型:目标检测 |
-
记得更改ultralytics-8.3.27/ultralytics/cfg/models/v8/目录下的yolov8.yaml,将nc:80改成nc: 86(也就是你自己的标签数量)
-
最后进行模型的训练,在终端命令输入训练命令:
1 | python train_v8.py --cfg ultralytics/cfg/models/v8/yolov8.yaml --weights yolov8n.pt --config config.yaml |
模型预测
- 在ultralytics-8.3.27里找到predict.py文件,我们需要把进行一点路径更改:
1 | model = YOLO('runs/detect/train/weights/best.pt') # 训练好的模型位置 |
- predict.py里上面的路径也需要更改一下:
1 | sys.path.append('/root/ultralytics-8.3.27/') # Path 以Autodl为例 |
- 在终端输入命令开始预测
1 | python predict.py |
收梢
在云服务器上进行训练还是很ok的,又便宜又快,比本地部署好用多了,就是需要一点略微花费。
数据标注真费事
阿门,下次有机会拉姆写写OCR或者MiniCPM-V-2.6