「Pytorch」CopyPaste 数据增强
数据增广是提升模型泛化能力重要的手段之一,CopyPaste 是一种新颖的数据增强技巧,已经在目标检测和实例分割任务中验证了有效性。利用 CopyPaste,可以合成文本实例来平衡训练图像中的正负样本之间的比例。相比而言,传统图像旋转、随机翻转和随机裁剪是无法做到的。
CopyPaste 主要步骤包括:
- 随机选择两幅训练图像;
- 随机尺度抖动缩放;
- 随机水平翻转;
- 随机选择一幅图像中的目标子集;
- 粘贴在另一幅图像中随机的位置。
这样就比较好地提升了样本丰富度,同时也增加了模型对环境的鲁棒性。如下图所示,通过在左下角的图中裁剪出来的文本,随机旋转缩放之后粘贴到左上角的图像中,进一步丰富了该文本在不同背景下的多样性。
参考代码:
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2024.07
# @Author : 绿色羽毛
# @Email : lvseyumao@foxmail.com
# @Blog : https://blog.csdn.net/ViatorSun
# @Note :
import os
import cv2
import json
import logging
import random
import numpy as np
import matplotlib.pyplot as plt
def create_operators(op_param_list, global_config=None):
"""
create operators based on the config
Args:
params(list): a dict list, used to create some operators
"""
assert isinstance(op_param_list, list), ('operator config should be a list')
ops = []
for operator in op_param_list:
assert isinstance(operator,
dict) and len(operator) == 1, "yaml format error"
op_name = list(operator)[0]
param = {} if operator[op_name] is None else operator[op_name]
if global_config is not None:
param.update(global_config)
op = eval(op_name)(**param)
ops.append(op)
return ops
def transform(data, ops=None):
""" transform """
if ops is None:
ops = []
for op in ops:
data = op(data)
if data is None:
return None
return data
# CopyPaste示例的类
class CopyPasteDemo(object):
def __init__(self, ):
self.data_dir = "/media/sun/Data/Dataset/OCR_Data/det/train/"
self.label_file_list = "/media/sun/Data/Dataset/OCR_Data/det/train.txt"
self.data_lines = self.get_image_info_list(self.label_file_list)
self.data_idx_order_list = list(range(len(self.data_lines)))
transforms = [
{"DecodeImage": {"img_mode": "BGR", "channel_first": False}},
{"DetLabelEncode": {}},
{"CopyPaste": {"objects_paste_ratio": 1.0}},
]
self.ops = create_operators(transforms)
# 选择一张图像,将其中的内容拷贝到当前图像中
def get_ext_data(self, idx):
ext_data_num = 1
ext_data = []
next_idx = idx
load_data_ops = self.ops[:2]
while len(ext_data)
生成后的图像
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!


