当前位置:   article > 正文

yolov5进行实例分割并训练自己的数据集_yolov5 分割

yolov5 分割

最近在使用yolov5算法进行目标检测,但是有的时候检测效果会不好,所以在网上找了找资料,发现yolov5也可以自带实例分割,所以用yolov5自带的实例分割试一下,记录一下自己的学习内容,话不多说,看下面!~~

一、下载yolov5-seg-master源码

https://github.com/z1069614715/yolov5-seg

二、标注数据集

这里我用的是自己拍摄的颗粒数据集,标注工具使用的是labelme,labelme工具下载请参考https://blog.csdn.net/zong596568821xp/article/details/83375227

在使用labelme标注数据集时保存的标签格式为json格式,通常要将json格式转换为txt格式,转换代码如下

  1. import json
  2. import os
  3. import argparse
  4. from tqdm import tqdm
  5. def convert_label_json(json_dir, save_dir, classes):
  6. json_paths = os.listdir(json_dir)
  7. classes = classes.split(',')
  8. for json_path in tqdm(json_paths):
  9. # for json_path in json_paths:
  10. path = os.path.join(json_dir, json_path)
  11. with open(path, 'r') as load_f:
  12. json_dict = json.load(load_f)
  13. h, w = json_dict['imageHeight'], json_dict['imageWidth']
  14. # save txt path
  15. txt_path = os.path.join(save_dir, json_path.replace('json', 'txt'))
  16. txt_file = open(txt_path, 'w')
  17. for shape_dict in json_dict['shapes']:
  18. label = shape_dict['label']
  19. label_index = classes.index(label)
  20. points = shape_dict['points']
  21. points_nor_list = []
  22. for point in points:
  23. points_nor_list.append(point[0] / w)
  24. points_nor_list.append(point[1] / h)
  25. points_nor_list = list(map(lambda x: str(x), points_nor_list))
  26. points_nor_str = ' '.join(points_nor_list)
  27. label_str = str(label_index) + ' ' + points_nor_str + '\n'
  28. txt_file.writelines(label_str)
  29. if __name__ == "__main__":
  30. """
  31. python json2txt_nomalize.py --json-dir my_datasets/color_rings/jsons --save-dir my_datasets/color_rings/txts --classes "cat,dogs"
  32. """
  33. parser = argparse.ArgumentParser(description='json convert to txt params')
  34. #只需要改下面两个default就可以,第一个是通过labelme标注数据集保存的json文本路径,第二个是保存到txt文件的路径
  35. parser.add_argument('--json-dir', type=str, default=r'E:\lesson\yolov5-seg-master\dataset\data_annotated', help='json path dir')
  36. parser.add_argument('--save-dir', type=str, default=r'E:\lesson\yolov5-seg-master\dataset\txtss', help='txt save dir')
  37. parser.add_argument('--classes', type=str, default='Par', help='classes')
  38. args = parser.parse_args()
  39. json_dir = args.json_dir
  40. save_dir = args.save_dir
  41. classes = args.classes
  42. convert_label_json(json_dir, save_dir, classes)

三、训练数据集

得到了txt文件的标签,我们就可以进行数据集的训练啦~,首先将数据集进行打包,划分训练集和验证集,像我这样!!

 上面就是打包好的数据集,images下面的train文件和val文件分别放训练集和验证集的图片,labels下面的train和val分别放训练集和验证集的标签~  注:是转换过后的txt文件标签哦~

四、修改代码

 (1)创建自己的yaml文件

在data文件下创建自己的yaml文件,这里我命名为par.yaml,代码如下:

  1. # YOLOv5
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/611036
    推荐阅读
    相关标签