语义分割数据集增强增广

"""
@author: jialin_li
@data: 20230829
@version: v1.0
"""

import os
import cv2
import numpy as np
from skimage.util import random_noise
import shutil

# 原始数据集路径 (修改为自己的路径)
dataset_path = 'data'
images_dir = os.path.join(dataset_path, 'images')  #原图文件夹
annotations_dir = os.path.join(dataset_path, 'annotations') #单通道彩图文件夹

# 增强后的数据集路径
enhanced1_dir = os.path.join(dataset_path, 'enhanced1')  #增强后图片保存路径
enhanced2_dir = os.path.join(dataset_path, 'enhanced2')  #标签保存路径
os.makedirs(enhanced1_dir, exist_ok=True)
os.makedirs(enhanced2_dir, exist_ok=True)

# 获取原始图像和标注文件路径列表
image_files = sorted(os.listdir(images_dir))
annotation_files = sorted(os.listdir(annotations_dir))

# 遍历每个图像文件并进行增强
for img_file, anno_file in zip(image_files, annotation_files):
    # 读取原始图像和标注文件
    img_path = os.path.join(images_dir, img_file)
    img = cv2.imread(img_path)

    anno_path = os.path.join(annotations_dir, anno_file)
    anno = cv2.imread(anno_path)

    #提供了两种增强方法 可以在此基础上自行添加
    # 随机对比度变化
    alpha = np.random.uniform(0.5, 1.5)
    beta = np.random.uniform(-50, 50)
    contrast_img = cv2.convertScaleAbs(img, alpha=alpha, beta=beta)

    # 随机添加噪声
    noise = random_noise(img, mode='gaussian', var=0.02)
    noise_img = np.array(255 * noise, dtype=np.uint8)

    # 保存增强后的原图像
    enhanced_img_path1 = os.path.join(enhanced1_dir, f"contrast_{img_file}")
    cv2.imwrite(enhanced_img_path1, contrast_img)

    # 复制标注文件到增强后的目录并改名(对比度增强后的标签图像与原始标签图像不一样)
    enhanced_anno_dst1 = os.path.join(enhanced2_dir, f"contrast_{anno_file}")
    shutil.copy(anno_path, enhanced_anno_dst1)

    # 保存增强后的原图像
    enhanced_img_path2 = os.path.join(enhanced1_dir, f"noise_{img_file}")
    cv2.imwrite(enhanced_img_path2, noise_img)

    # 保存增强后的标注文件
    enhanced_anno_path2 = os.path.join(enhanced2_dir, f"noise_{anno_file}")
    shutil.copy(anno_path, enhanced_anno_path2)

    # 显示处理进度
    print(f'图像 {img_file} 处理完成')

print('数据集增强完毕。')

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
语义分割中,数据增强噪声是为了丰富训练数据集,提高模型的泛化能力和鲁棒性。常用的数据增强噪声方法包括加椒盐噪声、高斯噪声和调整图像的对比度、亮度、饱和度等。 加椒盐噪声是向图像中随机添加黑色或白色像素点,模拟图像的噪声情况。这种噪声可以增加模型对噪声和边缘的鲁棒性,提高语义分割的准确性。 高斯噪声是向图像中添加符合高斯分布的随机噪声,模拟真实场景中的光照变化和图像模糊等情况。通过调整高斯噪声的强度,可以使模型更好地适应真实世界中的图像。 调整图像的对比度、亮度和饱和度可以改变图像的色彩分布和明暗程度,从而增加图像的多样性。这种数据增强可以帮助模型更好地适应不同光照条件下的图像,提高语义分割的鲁棒性。 需要注意的是,在进行数据增强时,应避免加入其他图像轮廓的噪声,以保持语义分割的准确性。 总结起来,语义分割数据增强噪声包括加椒盐噪声、高斯噪声和调整图像的对比度、亮度、饱和度等方法,通过模拟真实世界中的噪声和光照变化,提高模型的泛化能力和鲁棒性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [语义分割图像增强新方法](https://blog.csdn.net/niuxuerui11/article/details/114866772)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【语义分割数据增强方法(原图与标签同时扩增)](https://blog.csdn.net/weixin_45912366/article/details/127855494)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值