数据增强的原理
在深度学习中,一般要求样本的数量要充足,样本数量越多,训练出来的模型效果越好,模型的泛化能力越强。但是实际中,样本数量不足或者样本质量不够好,这就要对样本做数据增强,来提高样本质量。
在图像分类任务中,对于输入的图像进行一些简单的平移、缩放、颜色变换等,不会影响图像的类别。
如下两图,虽然做了变换,但不影响被识别成狗狗。
原始图片:
转换后图
对于图像类型的训练、数据,所谓的数据增强( Data Augmentation )方法是指利用平移 、 缩放、颜色等变躁,人工增大训练、集样本的个数 ,从而获得充足的训练数据,使模型训练的效果更好。
对于图像类型的训练、数据,所谓的数据增强( Data Augmentation )方法是指利用平移 、 缩放、颜色等变躁,人工增大训练、集样本的个数 ,从而获得充足的训练数据,使模型训练的效果更好。
TensorFlow实现图片数据增强
①图片大小调整
import matplotlib.pyplot as plt
import tensorflow as tf
# 读取图片
image_data = tf.gfile.FastGFile("data/dog1.jpg", 'br').read()
# 4中调整图片大小的方法,实际应用中可以根据需求组合调整
with tf.Session() as sess:
img_data = tf.image.decode_jpeg(image_data)
plt.imshow(img_data.eval())
plt.show()
# 将图片数据转换成实数类型
img_data = tf.image.convert_image_dtype(img_data, dtype=tf.float32)
# 重新转换成300X900的图片,并展示出调整后的图片
resized = tf.image.resize_images(img_data, [300, 900], method=1)
plt.imshow(resized.eval())
plt.show()
# # resize_image_with_crop_or_pad()如原始图像大于目标图像,则截取,如果小于则自动填充
# croped = tf.image.resize_image_with_crop_or_pad(img_data, 1000, 1000)
# plt.imshow(croped.eval())
# padded = tf.image.resize_image_with_crop_or_pad(img_data,3000,3000)
# plt.imshow(padded.eval())
# 按照比例裁剪图片
central_croped = tf.image.central_crop(img_data,0.8)
plt.imshow(central_croped.eval())
plt.show()
部分处理效果展示:
②图像翻转
import matplotlib.pyplot as plt
import tensorflow as tf
# 读取图片
image_data = tf.gfile.FastGFile("data/dog1.jpg", 'br').read()
# 图片翻转
with tf.Session() as sess:
img_data = tf.image.decode_jpeg(image_data)
plt.imshow(img_data.eval())
plt.show()
# 将图片数据转换成实数类型
img_data = tf.image.convert_image_dtype(img_data, dtype=tf.float32)
# # 图像上下翻转
# fliped1 = tf.image.flip_up_down(img_data)
# plt.imshow(fliped1.eval())
# 左右翻转
fliped = tf.image.flip_left_right(img_data)
plt.imshow(fliped.eval())
# 沿着对角线翻转
# transposed = tf.image.transpose_image(img_data)
# plt.imshow(transposed.eval())
# # 以50%概率上下翻转
# fliped = tf.image.random_flip_up_down(img_data)
# plt.imshow(fliped.eval())
# # 以50%概率左右翻转
# fliped = tf.image.random_flip_left_right(img_data)
# plt.imshow(fliped.eval())
plt.show()
部分处理效果展示:
先写这么多,后续会再发一篇,把剩下的色彩调整、标准化、标注裁剪等放在一起发出来,同时提供一个整合后的代码。感谢支持
关注-微-公众号【学习与成长资源库】获取更多免费学习资料
参考资料
21个项目玩转深度学习
TensorFlow实战Google深度学习框架