文章
*
–
+ 1.下载数据集
+ 2.数据集划分
+ 3.数据预处理代码
1.下载数据集
首先我们需要先到网上下载猫狗数据集:
猫狗分类数据集下载地址:https://pan.baidu.com/s/1i4SKqWH
密码:d8mt
2.数据集划分
刚开始下载的数据train和test都是猫和狗混合的图片,需要修改一下重新划分一下train和test中的猫和狗分别划分出来。文件结构如下:
|_image
|_train
|_dog
|_cat
|_test
|_dog
|_cat
由于训练时长的问题,这里只用到了2000张图片进行训练,1000图片进行验证。可以自行决定训练和测试数据集的大小。
3.数据预处理代码
代码运行平台为jupyter-notebook,文章中的代码块,也是按照jupyter-notebook中的划分顺序进行书写的,运行文章代码,直接分单元粘入到jupyter-notebook即可。
from keras.preprocessing.image import ImageDataGenerator,array_to_img,img_to_array,load_img
- 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=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode="nearest"
)
这里我们以一张图片先来演示数据处理的效果:
img = load_img("./image/train/cat/cat.1.jpg")
x = img_to_array(img)
print(x.shape)
x = x.reshape((1,)+x.shape)
print(x.shape)
i = 0
for batch in datagen.flow(x,batch_size=1,save_to_dir='temp',save_prefix="cat",save_format="jpeg"):
i += 1
if i>20:
break
测试的图片:
代码运行结果:
可以看到这个数据增强的效果还是不错的哈!
Original: https://blog.csdn.net/booze_/article/details/125661216
Author: booze-J
Title: 图像数据预处理
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/786442/
转载文章受原作者版权保护。转载请注明原作者出处!