1.标注
2. 训练
3.预测
1. 标注
我这里用Labelme标注,标注完是Json格式,要把Json转Yolov5能识别的txt格式。在Python中转换。代码如下:
import os import cv2 import json import numpy as np def txt_write(x, img_x, img_y, txt): data = x['points'] n = 1 for x in data: for i in x: if n % 2 == 0: txt.write(' ' + str(round(i / img_x, 6))) n += 1 else: txt.write(' ' + str(round(i / img_y, 6))) n += 1 txt.write('\n') def json2txt(json_path, save_path): txt = open(save_path, 'w') with open(json_path, "r") as f: data = f.read() data = json.loads(data) img_x = data['imageHeight'] img_y = data['imageWidth'] shapes = data['shapes'] for x in shapes: # print(x['label']) # 此处面向不同分类,需要改动下面的标签值,如果是多分类,那么需要增加新的if # 只是单分类的话,可以直接去掉if,把里面的模块拿出来用 if x['label'] == 'bad': txt.write('0') txt_write(x, img_x, img_y, txt) txt.close() # 单文件测试 # save_dir = "/workspace/" #文件路径 # name = 'test' # save_path = save_dir + name + '.txt' # 也可以是.doc # json_path = '/json/65161.json' # json2txt(json_path,save_path) # 文件夹 json_dir = 'D:\\yolov5-7.0\\datasets\\xt\\' save_dir = 'D:\\yolov5-7.0\\datasets\\txt\\' files = os.listdir(json_dir) os.makedirs(save_dir, exist_ok=True) num = 1 for file in files: name = file[0:-5] json_path = json_dir + '/' + name + '.json' save_path = save_dir + '/' + name + '.txt' json2txt(json_path, save_path) print(num, '/', len(files), ':', name) num += 1
2 . 训练参数设置
到segment这个文件夹下找这个train.py. 我这里命名是data/bvn-seg.yaml, 可以到Data目录下修改
data/bvn-seg.yaml
训练和评估图片路径
labels路径
3. 预测