YOLOv8实例分割离线数据增强,标签可视化!
YOLOv8实例分割离线数据增强的方式:首先使用labelme对图像进行标注,将图像和标注文件存放到images_json文件夹中,然后使用离线数据增强代码对进行增强。
代码较长,完整代码下载地址:完整代码
使用步骤:
1.在代码中设置增强次数和文件路径,选择想要数据增强的方式
if __name__ == '__main__':need_aug_num = 5 # 每张图片需要增强的次数toolhelper = ToolHelper() # 工具is_endwidth_dot = True # 文件是否以.jpg或者png结尾dataAug = DataAugmentForObjectDetection() # 数据增强工具类# 获取相关参数parser = argparse.ArgumentParser()parser.add_argument('--source_img_json_path', type=str, default='H:/CSDN/DataAugForObjectSegmentation/images_json')parser.add_argument('--save_img_json_path', type=str, default='H:/CSDN/DataAugForObjectSegmentation/images_json2')args = parser.parse_args()source_img_json_path = args.source_img_json_path # 图片和json文件原始位置save_img_json_path = args.save_img_json_path # 图片增强结果保存文件
# 是否使用某种增强方式self.is_addNoise = Trueself.is_changeLight = is_changeLightself.is_random_point = is_random_pointself.is_filp_pic_bboxes = is_filp_pic_bboxesself.is_shift_pic_bboxes = True
2.标签可视化代码如下:
import os
import json
import cv2
import numpy as np# 设置源文件夹和目标文件夹路径source_folder = 'H:/Data-enhancement-main/Data-enhancement/DataAugForObjectSegmentation/images_json2'
target_folder = 'H:/Data-enhancement-main/Data-enhancement/DataAugForObjectSegmentation/images_json2keshihua'# 确保目标文件夹存在
if not os.path.exists(target_folder):os.makedirs(target_folder)# 遍历源文件夹中的所有文件
for file_name in os.listdir(source_folder):if file_name.endswith('.json'):json_path = os.path.join(source_folder, file_name)with open(json_path) as json_file:data = json.load(json_file)# 获取图片路径image_path = os.path.join(source_folder, data['imagePath'])# 读取图片image = cv2.imread(image_path)# 遍历所有的标注for shape in data['shapes']:points = np.array(shape['points'], dtype=np.int32)cv2.polylines(image, [points], True, (0, 255, 0), 2) # 标注为绿色线条# 保存标注后的图片cv2.imwrite(os.path.join(target_folder, file_name.replace('.json', '.png')), image)print("标注可视化完成,并保存到指定文件夹。")