数据增强:
和网络没有比较大的关系,而是在数据层面做处理。
比较常用的方法有:归一化、图像变换、色彩变换、多尺度。
归一化:
将数据归一化到一定的区间内,使网络更容易学习。
图像变换:
也就是为了使数据变多,方式有:对图像进行翻转、拉伸、裁剪、变形等。
色彩变换:
可以改变图像的对比度、亮度等。
多尺度:
就是将图像裁剪到不同大小。也就是使神经网络能够看到更多层面的图像信息,也能达到增加数据的效果。
eg:将某张图像缩减到256 * 256,之后裁剪224 * 224的块,其比例就是 224/256。多尺度可以是,将图像缩减为非 256 * 256的大小,然后用224采样。
程序实现:
1. 导入需要用到的数据包:
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
from matplotlib.pyplot import imshow
2. 显示原始图片
name = './gugong.jpg' # 图片路径
img_string = tf.read_file(name) # read_file :是将图片以字符串的形式进行读入
img_decoded = tf.image.decode_image(img_string) # 将 string 解析成一个图片
sess = tf.Session() # 启动进程
img_decoded_val = sess.run(img_decoded)
print(img_decoded_val.shape)
%matplotlib inline
# 在文档中显示图片
imshow(img_decoded_val)
结果:
对图像进行缩放
常用的缩放 API:
(1)tf.image.resize_area
(2)tf.image.resize_bicubic :
用二次线性插值法对图片进行缩放,就是当图片缩小的时候,是没有损失的,直接压缩图片即可;