当前位置:网站首页>图像数据预处理
图像数据预处理
2022-07-07 23:11:00 【booze-J】
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")
# 将图片转化为array数据格式
x = img_to_array(img)
# (280, 300, 3) = (H,W,channels)
print(x.shape)
# 给图片增加一个维度 加这个维度主要是因为训练的时候需要一个四维的图片
x = x.reshape((1,)+x.shape)
# (1, 280, 300, 3) = (batch_size,H,W,channels)
print(x.shape)
i = 0
# 生成21张图片
# flow随机生成图片 save_prefix为新生成名字的前缀
for batch in datagen.flow(x,batch_size=1,save_to_dir='temp',save_prefix="cat",save_format="jpeg"):
# 执行20次
i += 1
if i>20:
break
测试的图片:
代码运行结果:
可以看到这个数据增强的效果还是不错的哈!
边栏推荐
- AI遮天传 ML-初识决策树
- LeetCode刷题
- Cascade-LSTM: A Tree-Structured Neural Classifier for Detecting Misinformation Cascades(KDD20)
- Password recovery vulnerability of foreign public testing
- 8道经典C语言指针笔试题解析
- Basic principle and usage of dynamic library, -fpic option context
- 玩轉Sonar
- Lecture 1: the entry node of the link in the linked list
- C language 001: download, install, create the first C project and execute the first C language program of CodeBlocks
- Fofa attack and defense challenge record
猜你喜欢

Lecture 1: the entry node of the link in the linked list

What has happened from server to cloud hosting?
![Cause analysis and solution of too laggy page of [test interview questions]](/img/8d/3ca92ce5f9cdc85d52dbcd826e477d.jpg)
Cause analysis and solution of too laggy page of [test interview questions]

备库一直有延迟,查看mrp为wait_for_log,重启mrp后为apply_log但过一会又wait_for_log

语义分割模型库segmentation_models_pytorch的详细使用介绍

51 communicates with the Bluetooth module, and 51 drives the Bluetooth app to light up

玩转Sonar

How to insert highlighted code blocks in WPS and word
![[note] common combined filter circuit](/img/2f/a8c2ef0d76dd7a45b50a64a928a9c8.png)
[note] common combined filter circuit

Password recovery vulnerability of foreign public testing
随机推荐
The method of server defense against DDoS, Hangzhou advanced anti DDoS IP section 103.219.39 x
Jemter distributed
Thinkphp内核工单系统源码商业开源版 多用户+多客服+短信+邮件通知
Basic types of 100 questions for basic grammar of Niuke
"An excellent programmer is worth five ordinary programmers", and the gap lies in these seven key points
ReentrantLock 公平锁源码 第0篇
5g NR system messages
赞!idea 如何单窗口打开多个项目?
What does interface testing test?
接口测试要测试什么?
《因果性Causality》教程,哥本哈根大学Jonas Peters讲授
The standby database has been delayed. Check that the MRP is wait_ for_ Log, apply after restarting MRP_ Log but wait again later_ for_ log
How to add automatic sorting titles in typora software?
1293_FreeRTOS中xTaskResumeAll()接口的实现分析
Is it safe to open an account on the official website of Huatai Securities?
Four stages of sand table deduction in attack and defense drill
C# 泛型及性能比较
Analysis of 8 classic C language pointer written test questions
从服务器到云托管,到底经历了什么?
攻防演练中沙盘推演的4个阶段