前言
计算机视觉系列之学习笔记主要是本人进行学习人工智能(计算机视觉方向)的代码整理。本系列所有代码是用python3编写,在平台Anaconda中运行实现,在使用代码时,默认你已经安装相关的python库,这方面不做多余的说明。本系列所涉及的所有代码和资料可在我的github上下载到,gitbub地址:https://github.com/mcyJacky/DeepLearning-CV,如有问题,欢迎指出。
一、图像增强的方法
我们在实际对图像进行训练时,往往我们的样本数据量会不够或者比较少,这种情况下我们就可以使用图像增强的方法对图像进行错切变换、缩放、平移、填充等。对一张图像产生多种不一样的图像,这样就能增加训练样本的数据。使用keras的图像预处理功能,就能实现这一需求,具体如下:
from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
import numpy as np
# 定义图像生成器
# rotation_range是一个0~180的度数,用来指定随机选择图片的角度。
# width_shift和height_shift用来指定水平和竖直方向随机移动的程度,这是两个0~1之间的比
# rescale值将在执行其他处理前乘到整个图像上,我们的图像在RGB通道都是0~255的整数,这样的操作可能使图像的值过高或过低,所以我们将这个值定为0~1之间的数。
# shear_range是用来进行错切变换的程度,参考错切变换
# zoom_range用来进行随机的放大
# horizontal_flip随机的对图片进行水平翻转,这个参数适用于水平翻转不影响图片语义的时候
# fill_mode用来指定当需要进行像素填充,如旋转,水平和竖直位移时,如何填充新出现的像素
datagen = ImageDataGenerator(
rotation_range = 40, # 随机旋转角度
width_shift_range = 0.2, # 随机水平平移
height_shift_range = 0.2,# 随机竖直平移
rescale = 1/255, # 数据归一化
shear_range = 20, # 随机错切变换
zoom_range = 0.2, # 随机放大
horizontal_flip = True, # 水平翻转
fill_mode = 'nearest',) # 填充方式
# 载入图片
img = load_img('image/train/cat/cat.3.jpg')
x = img_to_array(img)
print(x.shape)
# 打印结果:
# (414, 500, 3)
# 扩展维度
x = np.expand_dims(x, 0)
print(x.shape)
# 打印结果:
# (1, 414, 500, 3)
# 生成20张图片
i = 0
for batch in datagen.flow(x, batch_size=1, save_to_dir='temp', save_prefix='new_cat', save_format='jpeg'):
i += 1
if i==20:
break
print('finished!')
上述程序先使用ImageDataGenerator()对象生成图像生成器,再使用datagen.flow()方法生成图像,其中flow()参数save_to_dir为保存目录,save_prefix为图像保存名称的前半部分,save_format为图像保存格式。部分图像的保存样式如图1.1所示:
![](https://i-blog.csdnimg.cn/blog_migrate/878a31bec29ed1b7ddb0c0450e4ea0ac.png)
【参考】:
1. 城市数据团课程《AI工程师》计算机视觉方向
2. deeplearning.ai 吴恩达《深度学习工程师》
3. 《机器学习》作者:周志华
4. 《深度学习》作者:Ian Goodfellow
转载声明:
版权声明:非商用自由转载-保持署名-注明出处
署名 :mcyJacky
文章出处:https://blog.csdn.net/mcyJacky