Tensorflow学习(使用jupyter notebook)

Keras框架下的猫狗识别(二)
Keras框架下的猫狗识别(三)

数据预处理

  • Tensorflow学习(使用jupyter notebook)
  • 前言
  • 一、tensorflow和keras的关系
  • 二、图像预处理
    • 1.人为处理
    • 2.引入库
    • 3.对图片集的补充
    • 4.载入图片
    • 5.数据集的扩充
  • 总结

前言

  深度学习作为一个近年兴起的重要研究领域,被应用于多个领域。在未来几年,深度学习的热度仍然会持续火热。

一、tensorflow和keras的关系

  TensorFlow和Keras都是深度学习所可以使用的框架。   而且Keras其实就是TensorFlow和Keras的接口(Keras作为前端,TensorFlow或theano作为后端),它也很灵活,且比较容易学。可以把keras看作为tensorflow封装后的一个API。   至今,Tensorflow是已经更新到2.0以上的版本了,相比于Tensorflow1.X的版本,就是在引入keras库和tensorflow库的时候的差别了。   举个例子: 在1.X的版本下的tensorflow中,jupyter notebook里面输入如下

from keras.models import Sequential
from keras.layers import Convolution2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras.optimizers import Adam
from keras.preprocessing.image import ImageDataGenerator

这是不会报错的。
但使用Tensorflow2.X的时候,以上代码就得改成如下:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Convolution2D, MaxPooling2D
from tensorflow.keras.layers import Activation, Dropout, Flatten, Dense
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.preprocessing.image import ImageDataGenerator

才能方便后续的继续操作。

二、图像预处理

  为了完成后续的深度学习的猫狗识别任务,我们先得了解如何处理巨大的猫狗数据集。

1.人为处理

  对于如此庞大的数据集,我们并不先急的直接上代码操作,相反,我们首先要完成的是对这些图片进行分类,将这些图片分为test和train两个文件夹,再在这两个文件夹中进行cat和dog的分类,将猫归入以Cat为名的文件夹,而将狗归入Dog为名的文件夹。   需要注意的是,test中的图片不应该出现在train中,防止数据过度拟合。

2.引入库

代码如下(示例):

from keras.preprocessing.image import ImageDataGenerator,array_to_img,img_to_array,load_img

  首先引入我们需要的函数库,其中引入的这些库中,都是为了后续代码对图片处理进行准备。

3.对图片集的补充

代码如下(示例):

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')      # 填充方式

  使用引入库中的ImageDataGenerator() 方法,而对于这个ImageDataGenerator() 方法,是为了扩充数据集,但数据集图片不足时,可以使用该函数,进行同一照片不同变换。

#  rotation_range是一个0~180的度数,用来指定随机选择图片的角度。
#  width_shift和height_shift用来指定水平和竖直方向随机移动的程度,这是两个0~1之间的比
#  rescale值将在执行其他处理前乘到整个图像上,我们的图像在RGB通道都是0~255的整数,这样的操作可能使图像的值过高或过低,所以我们将这个值定为0~1之间的数。
#  shear_range是用来进行剪切变换的程度,参考剪切变换
#  zoom_range用来进行随机的放大
#  horizontal_flip随机的对图片进行水平翻转,这个参数适用于水平翻转不影响图片语义的时候
#  fill_mode用来指定当需要进行像素填充,如旋转,水平和竖直位移时,如何填充新出现的像素

  如上,是ImageDataGenerator中相关参数,可通过调节其参数,完成对一个图片的更改,以便后续扩充数据集的。

4.载入图片

img = load_img('image/train/cat/cat.1.jpg')
x = img_to_array(img)
print(x.shape)

  还是使用引入库中的方法对图片进行处理,load_img()载入train文件夹中的cat类的第一张图片,该路径需要各位根据自己图片存放路径而更改。   而img_to_array()则是对img处理,使其转化为array形式。

5.数据集的扩充

  对数据集的扩充方法也很简单,继续调用ImageDataGenerator库

i = 0
#生成10张图片
#flow 随机生成图片
for batch in datagen.flow(x,batch_size = 1,save_to_dir = 'temp1',save_prefix = 'cat',save_format = 'jpeg'):i += 1if i > 9:break

  利用一个循环,循环10次,从而生成10张图片。   对于datagen.flow()函数:   x是我们之前定义的图片;   xbatch_size默认32,为了方便,我这里将其改成了1;   而save_to_dir是生成图片存放位置;   save_prefix是为了保存提升后图片时使用的前缀, 仅当设置了save_to_dir时生效;在这里我是让该程序生成的图片都以cat为前缀命名。   save_format是图片生成后,保存的格式。

总结

  如上,就是在进行搭建深度学习模型前,对数据集进行预处理。后续会继续完成模型搭建这一块的博客。   由于博主也是刚开始学习,如有不足和问题,请指正。

Keras框架下的猫狗识别(一)相关推荐

  1. keras框架下的深度学习(一)手写体数字识别

    文章目录 前言 一.keras的介绍及其操作使用 二.手写题数字识别 1.介绍 2.对数据的预处理 3.搭建网络框架 4.编译 5.循环训练 6.测试训练的网络模 7.总代码 三.附:梯度下降算法 1 ...

  2. 毕设:基于CNN卷积神经网络的猫狗识别、狗品种识别(Tensorflow、Keras、Kaggle竞赛)

    基于卷积神经网络的图像识别算法及其应用研究 毕业快一年了,拿出来分享给大家,我和网上唯一的区别就是,我能够同时实现两个方案(猫狗识别和狗品种识别),我当时也是网上各种查,花了2,3个月的时间,一个萝卜 ...

  3. 华为云深度学习kaggle猫狗识别

    使用华为云深度学习服务完成kaggle猫狗识别竞赛 参考: kaggle猫狗竞赛kernel第一名的代码 Tensorflow官网代码 华为云DLS服务github代码 1. 环境配置与数据集处理 首 ...

  4. 基于卷积神经网络VGG的猫狗识别

    !有需要本项目的实验源码的可以私信博主! 摘要:随着大数据时代的到来,深度学习.数据挖掘.图像处理等已经成为了一个热门研究方向.深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超 ...

  5. 基于卷积神经网络(CNN)的猫狗识别

    目录 引言 1.什么是卷积神经网络? 1.1什么是神经网络? 1.2什么是卷积? 2.准备工作 2.1一些知识: 2.2keras 2.3Conv2D 2.4 MaxPooling2D 3.基于卷积神 ...

  6. 【深度学习】猫狗识别TensorFlow2实验报告

    实验二:猫狗识别 一.实验目的 利用深度学习实现猫狗动物识别,采用Kaggle提供的公开数据集,训练深度学习模型,对测试集猫狗中的图片准确分类.通过该实验掌握深度学习中基本的CV处理过程. 二.实验原 ...

  7. 【卷积神经网络】CNN详解以及猫狗识别实例

    文章目录 一.卷积神经网络(CNN)介绍 1.1 整体结构 1.2 说明 1.3 特点 1.4 应用领域 二.配置实验环境 三.猫狗识别实例 3.1 准备数据集 3.2 图片分类 3.3 网络模型搭建 ...

  8. 人工智能创意赛—猫狗识别

    文章目录 前言: Step1:准备数据 Step2.网络配置 Step3.模型训练 and Step4.模型评估 Step5.模型预测 前言: 虽然人类的识别能力很强大,但是对于高速发展的社会,人类自 ...

  9. 基于kaggle数据集的猫狗识别(超详细版本)

    目录 下载kaggle数据集 创建新的小数据集 构建猫狗分类的小型卷积神经网络 猫狗分类的网络架构 模型的配置 图像的预处理 利用批量生成器拟合模型 绘制精度和损失 结果显示 随机增强后的训练图像显示 ...

最新文章

  1. ubuntu 编译php5.6,Ubuntu 16.04 源码编译 PHP5.6
  2. php 数组移除指定健,php删除数组指定键的方法
  3. 行末没有空格c语言,新人提问:如何将输出时每行最后一个空格删除
  4. Redhat enterprise linux下安装rlwrap工具
  5. 电信级的RSA加密后的密码的破解方法
  6. 解决fatal: unable to connect to github.com问题
  7. Python高性能计算库—Numba
  8. 基于visual c++之windows核心编程代码分析(35)实践NT服务的框架
  9. IDEA如何进行debug调试
  10. 基于UDS协议的Bootloader
  11. 狼人杀微信娱乐游戏小程序源码
  12. requests.exceptions.ConnectionError: HTTPConnectionPool(host=‘****, port=80): Max retries exceeded w
  13. 《研究生科研能力训练与培养》
  14. 千人千面算法java实现_推荐算法-recommend_system
  15. Word 恢复默认样式
  16. HTML强制关机,如何强制关机【处置技巧】
  17. TX云游戏平台 WeGame 1.0.3.8中文版
  18. SpringBoot+SpringSecurity+JWT整合实现单点登录SSO史上最全详解
  19. 移动端大图缩放模糊_移动端png小图片显示模糊
  20. 6-JS流程控制语句与数组

热门文章

  1. 在Linux上高效开发的7个建议
  2. hduoj 2024
  3. Window操作系统补丁知多少
  4. 2022-2028全球及中国生活污水处理厂行业研究及十四五规划分析报告
  5. 单链表的前插法和后插法
  6. MATLAB图像图像处理学习笔记(图像读取、图像显示)
  7. php实现微信签到功能实现,微信小程序实现签到的日历功能
  8. android相关技术总结
  9. Beanstalkd源码分析—事件超时的处理
  10. 圆壹智慧创始人兼CEO 潘麓蓉:AI制药工业落地的痛点与前进方向