深度学习之数据扩容

简介

Augmentor是一个Python包,旨在帮助机器学习任务的图像数据人工生成和数据增强。它主要是一种数据增强工具,但也将包含基本的图像预处理功能。

特色

Augmentor是用于图像增强的软件包,重点在于提供通常用于生成机器学习问题的图像数据的操作。

Augmentor包含许多用于标准图像处理功能的类,例如Rotate 旋转类、Crop 裁剪类等等。 包含的操作有:旋转rotate、裁剪crop、透视perspective skewing、shearing、弹性形变Elastic Distortions、亮度、对比度、颜色等等;更多的操作及其参数设定,点击

数据增强通常是一个多阶段过程,Augmentor因此采用基于管道的处理方法,操作依次添加形成最终的操作管道。图像送到管道中,管道的操作依次作用到图片上形成新的图片,保存下来。
Augmentor 管道中定义的操作按照一定的概率随机地作用于图片上。

附上代码和解析:

#encoding:utf-8
from PIL import Image#导入处理图片用的库
import os#通过os模块调用系统命令
import os.path#获取文件的属性
from imgaug import augmenters as iaa#imgaug是一个封装好的用来进行图像扩容的python库
import cv2#在python中调用openCV的库
import sys#导入sys模块
import shutil#shutil是python中处理文件,文件夹的模块



def img_func(images, random_state, parents, hooks):
    for img in images:
        img[::4] = 0
    return images
    #网上找的lambda的图片关键点扩容的实例代码

def keypoint_func(keypoints_on_images, random_state, parents, hooks):
    return keypoints_on_images
    #根据图片关键点进行图片扩容
    #定义一个图片数据扩容的的变换序列,将图片传入即可。
AugDict = {
            "Affine-X-20": iaa.Sequential([iaa.Affine(translate_px={"x": -20})]),#图片向左移动20个像素点
            "Affine-Y-20": iaa.Sequential([iaa.Affine(translate_px={"y": -20})]),#图片向上移动20个像素点
            "AdditiveGaussianNoise": iaa.Sequential([iaa.AdditiveGaussianNoise(scale=0.1*255)]),#添加高斯噪声,缩放为百分之10
            "CoarseDropout": iaa.Sequential([iaa.CoarseDropout(0.02, size_percent=0.5)]),#将原图百分之2的部分用原图的百分之50覆盖
            "Dropout": iaa.Sequential([iaa.Dropout(p=(0, 0.2), per_channel=0.5)]),#随机去掉一些像素点,比例为一半,把这些像素点变为0
            "MedianBlur": iaa.Sequential([iaa.MedianBlur(k=(3, 5))]),#中值模糊
            "AverageBlur": iaa.Sequential([iaa.AverageBlur(k=((5, 8), (1, 3)))]),#均值模糊
            "GaussianBlur": iaa.Sequential([iaa.GaussianBlur(sigma=(0.0, 1.5))]),#高斯模糊
            "Lambda": iaa.Sequential([iaa.Lambda(img_func, keypoint_func)]),#对每个图像的关键点进行变换的函数,将每张图片每隔两行的像素点变成黑色的条带,关键点保留
            "Affine-R+25": iaa.Sequential([iaa.Affine(rotate=25)]),#将图片向右旋转25度
            "Affine-R-25": iaa.Sequential([iaa.Affine(rotate=-25)])#将图片向左旋转25度
         }

srcDir = "G:/qdy2/srcDataRename"#待扩容图片的存放地址
imageNameDict = {}#存放图片名称的字典
for subDir in os.listdir(srcDir):#返回待扩容图片文件夹名字
    subDirPath = os.path.join(srcDir, subDir)#得到待扩容文件夹的路径
    imageNameList = []#新建一个列表
    for imageName in os.listdir(subDirPath):#获取待扩容图片名称
        imageNameList.append(imageName)#将待扩容图片名称存放到列表中
    imageNameDict[subDir] = imageNameList

AUGPath = 'G:/qdy2/aug'#扩容后图片存放路径,扩容后得到的图片存放的地址
for AugDictKey in AugDict.keys():#遍历扩容字典中的键值对
    subAugDirPath = os.path.join(AUGPath, '256Data%s'%AugDictKey)#将扩容后的存放图片路径与键联合生成新的路径
    for iamgeDir in imageNameDict.keys():
        classDirPath = os.path.join(subAugDirPath, iamgeDir)
        for iamgeName in imageNameDict[iamgeDir]:
            AugImagePath = os.path.join(classDirPath, iamgeName.split('.')[0] + '_%s.jpg'%AugDictKey)
            DstImagePath = os.path.join(srcDir, iamgeDir, iamgeName.split('.')[0] + '_%s.jpg'%AugDictKey)
            shutil.copy(AugImagePath, DstImagePath)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值