YOLOV8训练自己的数据(训练样本整理/训练和预测)
YOLOV8训练自己的数据语义分割篇
yolov8都出来了,你还在用老模型?确定不一起来看看?
1、模型下载
https://github.com/ultralytics/ultralytics
下载下来后用自己以前配置的py38的环境进行运行,正常可用。按项目需求,配置安装相应的包,并下载预训练权重文件。
2、训练样本配置文件生成
2.1数据标注
使用cvat等工具标注好自己的数据,导出对应的 /annotations/instances_test2017.json 文件
2.2将json文件格式转换成yolov8训练所需数据格式
代码参考https://github.com/ultralytics/JSON2YOLO感谢贡献者
使用程序general_json2yolo.py 进行数据格式转换。
数据转换过程中出现了报错,错误不记得了。
做了如下几个修改,可以正常使用了:
a:修改general_json2yolo.py文件
b:修改utils.py文件
将unity.py中添加如下程序
def coco91_to_coco1280_class(data): # converts 80-index (val2014) to 91-index (paper)
# https://tech.amikelive.com/node-718/what-object-categories-labels-are-in-coco-dataset/
cls_json = data['categories']
clss = {'%g' % x['id']: x["name"] for x in cls_json}
if not os.path.exists('ultralytics-main/mydata_process/json2yolo-master/labelfile.txt'):
labelfiles=[]
print('label file empty')
else:
print('read exist label')
with open('ultralytics-main/mydata_process/json2yolo-master/labelfile.txt','r') as f:
labelfiles = f.read().split('\n')[:-1]
cout = 0
for tmp in cls_json:
k,v = tmp['id'], tmp['name']
if v not in labelfiles:
with open('ultralytics-main/mydata_process/json2yolo-master/labelfile.txt','a') as fw:
fw.write(str(v)+'\n')
with open('ultralytics-main/mydata_process/json2yolo-master/labelfile_bak.txt','a') as fw:
fw.write('{}: '.format(cout) + str(v)+'\n')
cout += 1
with open(
'ultralytics-main/mydata_process/json2yolo-master/labelfile.txt',
'r') as f:
labelfiles = f.read().split('\n')[:-1]
clss_out = {'{}'.format(labelfiles[i]) : i for i in range(len(labelfiles))}
return clss, clss_out
2.3 整理的训练样本文件格式
生成的样本数据的标签文件如下:
├── coco128-seg
│ ├── images
│ │ └── train2017
│ ├── labels
│ │ ├── train2017
│ │ └── train2017.cache
│ ├── LICENSE
│ └── README.txt
2.4 生成的样本数据的标签格式
2.5 配置训练参数文件
训练样本配置文件所在路径如下
ultralytics/datasets/coco128-seg.yaml
3、train.py
训练语义分割项目train.py文件路径
ultralytics/yolo/v8/segment/train.py
预测运行的中间结果及输出模型保存在run文件夹下面
4、predict.py
预测文件路径
ultralytics/yolo/v8/segment/predict.py
预测所用配置文件路径
ultralytics/yolo/cfg/default.yaml
预测输出结果路径
/ultralytics-main/ultralytics/yolo/v8/segment/runs/detect