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~
一月啦~还是要多学知识不荒废(假的)
网友评论