zoukankan      html  css  js  c++  java
  • 数据增强 imgaug 框架使用

    官方文档


    https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#cutout

    首先下载项目

    https://github.com/aleju/imgaug

    然后建立conda独立环境

    conda install six numpy scipy Pillow matplotlib scikit-image imageio
    
    conda install -c menpo opencv

    代码

    注意 待增强的图片需要分别放置于/abc/下单独的文件夹,以保证每个文件夹都是相关增强图片

    # -*- coding: utf-8 -*-
    """
    图片增强
    一个目录下有多个类别
    
    """
    
    import numpy as np
    import imgaug as ia
    import imgaug.augmenters as iaa
    import matplotlib.pyplot as plt
    import os
    from skimage import io
    import random
    import time
    
    
    #根目录,其中是不同类别的子目录,子目录中是图片
    data_dir = r"/home/joe/Documents/abc/" 
    
    total_count = 4 #所有子目录下文件计数
    for (rootpath, dirnames, filenames) in os.walk(data_dir):
        for dirnametmp in dirnames: 
            dirnametmp = data_dir+dirnametmp+"/"  #每个子文件夹
            for (rootpath, dirnames, filenames) in os.walk(dirnametmp):
                filenamescount = len(filenames)
                imgcounttmp = 1 #当前子目录下的文件计数
                for icount in range(filenamescount): 
                    imgname = filenames.pop()   #每个图片
                 
                    #qqq,有imgaug的表示造的图片
                    file_extension = os.path.splitext(imgname)
                    filetmp = file_extension[0]    #文件名不带扩展名
                    extension = file_extension[1]  #扩展名
                    if filetmp.endswith("_imgaug"):
                        continue
                    
                    imgfullnametmp = dirnametmp+imgname #每个图片全路径
                    print( f"{imgcounttmp}/{total_count} {imgfullnametmp}")
                    imgcounttmp += 1
                    total_count += 1 
                    image = io.imread(imgfullnametmp)
                    
                    saveimage = []
                    random1 = random.uniform(-5,5)
                    random2 = random.uniform(0,1)
                    random3 = random.randint(1,5)
                     
                    augtmp = iaa.Affine(rotate=(-25+random1, 25.5+random1))
                    res = augtmp.augment_image(image)
                    saveimage.append(res)
                    
                    augtmp = iaa.Fliplr(1.0)
                    res = augtmp.augment_image(image)
                    saveimage.append(res)
                    
                    augtmp = iaa.Crop(px=(0, random3*2), keep_size=True)
                    res = augtmp.augment_image(image)
                    saveimage.append(res)
                    
                    augtmp = iaa.Sometimes(random2,iaa.GaussianBlur(sigma=(random2, 0.5+random2)))
                    res = augtmp.augment_image(image)
                    saveimage.append(res)
                    
                    augtmp = iaa.ContrastNormalization((0.75+random2, 1.5+random2))
                    res = augtmp.augment_image(image)
                    saveimage.append(res)
                    
                    augtmp = iaa.AdditiveGaussianNoise(loc=random3, scale=(0.01+random2, 0.08*255+random2))
                    res = augtmp.augment_image(image)
                    saveimage.append(res)
                    
                    augtmp = iaa.Affine(
                        scale={"x": (0.8+random2, 1.2+random2), "y": (0.8+random2, 1.2+random2)}, #缩放
                        translate_percent={"x": (-0.2+random2, 0.2+random2), "y": (-0.2+random2, 0.2+random2)}, #平移 
                        rotate=(-20+random1, 60+random1),                        #旋转
                        shear=(-8+random1, 8+random1) )
                    res = augtmp.augment_image(image)
                    saveimage.append(res)
                    
                    augtmp = iaa.GaussianBlur(sigma=random2)
                    res = augtmp.augment_image(image)
                    saveimage.append(res) 
                    
                    augtmp= iaa.AverageBlur(k=random3)
                    res = augtmp.augment_image(image)
                    saveimage.append(res) 
                    
                    augtmp = iaa.MedianBlur(k=random3*2+1)
                    res = augtmp.augment_image(image)
                    saveimage.append(res) 
                    
                    augtmp = iaa.MotionBlur()
                    res = augtmp.augment_image(image)
                    saveimage.append(res) 
                    
                    augtmp = iaa.BilateralBlur()
                    res = augtmp.augment_image(image)
                    saveimage.append(res) 
                    
                    augtmp = iaa.WithColorspace(to_colorspace="HSV")
                    res = augtmp.augment_image(image)
                    saveimage.append(res) 
                    
                    augtmp = iaa.AddToHueAndSaturation((-20, 20), per_channel=True)
                    res = augtmp.augment_image(image)
                    saveimage.append(res) 
                    
                    augtmp = iaa.Grayscale(alpha=1.0)
                    res = augtmp.augment_image(image)
                    saveimage.append(res) 
                    
                    augtmp = iaa.CLAHE(clip_limit=(1, random3*10))
                    res = augtmp.augment_image(image)
                    saveimage.append(res) 
                    
                    augtmp = iaa.GammaContrast(gamma=2*random2+1)
                    res = augtmp.augment_image(image)
                    saveimage.append(res) 
                    
                    augtmp = iaa.SigmoidContrast(gain= random2+0.5)
                    res = augtmp.augment_image(image)
                    saveimage.append(res) 
                    
                    augtmp = iaa.LogContrast(gain=2*random2+1)
                    res = augtmp.augment_image(image)
                    saveimage.append(res) 
                    
                    augtmp = iaa.LinearContrast(alpha=random3)
                    res = augtmp.augment_image(image)
                    saveimage.append(res) 
                    
                    augtmp = iaa.LinearContrast(alpha=random3*2)
                    res = augtmp.augment_image(image)
                    saveimage.append(res) 
                    
                    aug = iaa.CLAHE(clip_limit=(1, random3*20))
                    res = augtmp.augment_image(image)
                    saveimage.append(res) 
                    
                    #保存图片
                    imgid = 0
                    t = time.time()
                    tt = round(t*1000)
                    for imgtmp in saveimage:
                        #原文件名带有扩展名,需要拆分开
                        #文件名加时间戳,imgaug的表示造的图片
                        newname = filetmp+"_" +str(tt)+str(imgid)+"_imgaug"+extension
                        newfullname = dirnametmp+newname
                        #ia.imshow(imgtmp)
    
                        io.imsave(newfullname,imgtmp)
                        imgid += 1 
                      
        
            
  • 相关阅读:
    MySQL数据库的创建&删除&选择
    JS实现异步的几种方式
    十种排序算法实例说明总结
    常用的bug管理工具
    Bootstrap+Hbuilder
    从菜鸟的视角看测试!
    安装numpy和matplotlib
    Eclipse在线安装svn
    重新打个招呼
    <USACO09JAN>气象测量/气象牛The Baric Bovineの思路
  • 原文地址:https://www.cnblogs.com/clemente/p/12398264.html
Copyright © 2011-2022 走看看