美文网首页
数据增强之批量修改图像尺寸大小(附Python实现)

数据增强之批量修改图像尺寸大小(附Python实现)

作者: LiBiscuit | 来源:发表于2019-01-06 17:09 被阅读104次

    2019 is a new start!
    很久没有更啦~希望不要懒惰。(虽然不努力真滴很舒服诶)
    今天就来说一下之前在处理图片时候用到的一些知识。

    数据增强

    在接触Alexnet网络结构模型的时候,第一步就有要求图片要处理为224X224,刚开始以为就是一个预处理的过程,使得图片具有稳定性。最近才知道,原来小小的一个步骤可以用来达到数据增强的作用。

    什么是数据增强?

    答:一般而言,比较成功的神经网络需要大量的参数,许许多多的神经网路的参数都是数以百万计,而使得这些参数可以正确工作则需要大量的数据进行训练,而实际情况中数据并没有我们想象中的那么多。简单来说,就是要获得更多有用的数据,让数据集更丰富。

    数据增强的作用是什么?

    答:1.增加训练的数据量,提高模型的泛化能力,防止过拟合。
    2.增加噪声数据,提升模型的鲁棒性
    (关于过拟合的影响可参考:https://www.cnblogs.com/arachis/p/data_augmentation.html

    常用的数据增强的方法有什么?

    答:一种方法是获得新的数据,这种方法比较麻烦,需要大量的成本,而第二种方法则是对数据进行增强,即利用已有的数据比加噪音、调整尺寸、翻转和镜像,创造出更多的数据,来使得神经网络具有更好的泛化效果。

    今天主要讲一下运用调整尺寸或者说裁剪完成数据增强。

    调整尺寸(裁剪)为什么可以增强数据?

    调整尺寸也就是说比如原来图片为256X256,现把图片的尺寸改为224X224,这样一个操作。这一个操作,这样我们就可以多获得(256-224)²=32X32=1024个数据集,也就是(原来-现在)²个

    代码出场了~
    批量修改一个文件下面所有图片的尺寸(速度很快!可推)

    #提取目录下所有图片,更改尺寸后保存到另一目录
    from PIL import Image
    import os.path
    import glob
    def convertjpg(jpgfile,outdir,width=224,height=224):
        img=Image.open(jpgfile)
        try:
            new_img=img.resize((width,height),Image.BILINEAR)   
            new_img.save(os.path.join(outdir,os.path.basename(jpgfile)))
        except Exception as e:
            print(e)
    for jpgfile in glob.glob(('F:/itti17/*.png')):
        convertjpg(jpgfile,"F:/itti")
    

    验证一下:(此代码为输出图片尺寸)

    from PIL import Image
    import os.path
    infile = 'F:/itti17/1.png'
    infile_1 ='F:/itti/1.png'
    im = Image.open(infile)
    im_1 = Image.open(infile_1)
    (x, y) = im.size  # read image size
    (x1,y1) = im_1.size
    print ('original size: ', x, y)
    print ('current size: ', x1, y1)
    
    结果

    其余方法可参考(https://yq.aliyun.com/articles/645321
    参考资料(https://blog.csdn.net/zhelong3205/article/details/81810743
    ————————
    Ending~
    一月啦~还是要多学知识不荒废(假的)

    相关文章

      网友评论

          本文标题:数据增强之批量修改图像尺寸大小(附Python实现)

          本文链接:https://www.haomeiwen.com/subject/kubsrqtx.html