目录
基与卷积神经网络模型的猫狗图像识别 1
一、 摘要 2
二、 动机 2
三、 理论和算法理解 2
I.卷积神经网络 2

  1. 定义 3
  2. 结构 3
  3. 应用 5
    II.算法实现 5
    Part 1 - Data Preprocessing 5
    Preprocessing the Test set 6
    Part 2 - Building the CNN 6
    Initialising the CNN 6
    Step 1 - Convolution 6
    Step 2 - Pooling 6
    Adding a second convolutional layer 6
    Step 3 - Flattening 7
    Step 4 - Full Connection 7
    Step 5 - Output Layer 7
    Part 3 - Training the CNN 7
    Compiling the CNN 7
    Training the CNN on the Training set and evaluating it on the Test set 7
    Part 4 - Making a single prediction 7
    四、 实验数据分析与总结 8
    五、 心得体会 11
    一、摘要
    猫和狗在外观上的差异通过肉眼很容易识别,本文运用猫狗数据集训练出卷积神经网络模型,并使猫狗识别的准确率达到90%以上。本文同时包括卷积神经神经网络的理论理解,算法实现以及实验数据分析。

二、动机
在日常生活中,猫和狗在外观上的差异是比较明显的,无论是体型,四肢,脸孔和毛发等等,通过人们的肉眼就能识别出来。那么如何让机器来识别猫和狗呢?本文将运用Tensorflow搭建一个卷积神经网络模型,用自家的狗和猫来进行最后的测试。这是深度学习的典型案例。

三、理论和算法理解
I.卷积神经网络
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对大型图像处理有出色表现。卷积神经网络由一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网络能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网络在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。本文转载自http://www.biyezuopin.vip/onews.asp?id=15282相比较其他深度、前馈神经网络,卷积神经网络需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。

1.定义
“卷积神经网络”表示网络采用称为卷积的数学运算。卷积是一种特殊的线性操作。卷积网络是一种特殊的神经网络,它们在至少一个层中使用卷积代替一般矩阵乘法。

2.结构
(一)卷积层
卷积层是一组平行的特征图(feature map),它通过在输入图像上滑动不同的卷积核并运行一定的运算而组成。此外,在每一个滑动的位置上,卷积核与输入图像之间会运行一个元素对应乘积并求和的运算以将感受野内的信息投影到特征图中的一个元素。这一滑动的过程可称为步幅 Z_s,步幅 Z_s 是控制输出特征图尺寸的一个因素。卷积核的尺寸要比输入图像小得多,且重叠或平行地作用于输入图像中,一张特征图中的所有元素都是通过一个卷积核计算得出的,也即一张特征图共享了相同的权重和偏置项。

# Convolutional Neural Network# Importing the libraries
import tensorflow as tf
from keras.preprocessing.image import ImageDataGenerator
tf.__version__# Part 1 - Data Preprocessing# Preprocessing the Training set
train_datagen = ImageDataGenerator(rescale = 1./255,shear_range = 0.2,zoom_range = 0.2,horizontal_flip = True)
training_set = train_datagen.flow_from_directory('dataset/training_set',target_size = (64, 64),batch_size = 32,class_mode = 'binary')# Preprocessing the Test set
test_datagen = ImageDataGenerator(rescale = 1./255)
test_set = test_datagen.flow_from_directory('dataset/test_set',target_size = (64, 64),batch_size = 32,class_mode = 'binary')# Part 2 - Building the CNN# Initialising the CNN
cnn = tf.keras.models.Sequential()# Step 1 - Convolution
cnn.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation='relu', input_shape=[64, 64, 3]))# Step 2 - Pooling
cnn.add(tf.keras.layers.MaxPool2D(pool_size=2, strides=2))# Adding a second convolutional layer
cnn.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation='relu'))
cnn.add(tf.keras.layers.MaxPool2D(pool_size=2, strides=2))# Step 3 - Flattening
cnn.add(tf.keras.layers.Flatten())# Step 4 - Full Connection
cnn.add(tf.keras.layers.Dense(units=128, activation='relu'))# Step 5 - Output Layer
cnn.add(tf.keras.layers.Dense(units=1, activation='sigmoid'))# Part 3 - Training the CNN# Compiling the CNN
cnn.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])# Training the CNN on the Training set and evaluating it on the Test set
cnn.fit(x = training_set, validation_data = test_set, epochs = 25)# Part 4 - Making a single predictionimport numpy as np
from keras.preprocessing import image
import glob as glob
import os
test_images = glob.glob('dataset/single_prediction/*.jpg')
for image_src in test_images:test_image = image.load_img(image_src, target_size = (64, 64))test_image = image.img_to_array(test_image)test_image = np.expand_dims(test_image, axis = 0)result = cnn.predict(test_image)training_set.class_indicesif result[0][0] == 1:prediction = 'dog'else:prediction = 'cat'img_dir,img_fn = os.path.split(image_src)print(img_fn + ":" + prediction)












基于Python的卷积神经网络的猫狗图像识别系统相关推荐

  1. 基于卷积神经网络的猫狗识别系统的设计与实现

    1.1 题目的主要研究内容 (1)工作的主要描述 通过卷积网络实现猫狗图像的识别.首先,在数据集中抽取训练集和测试集:其次,对图像进行预处理和特征提取,对图像数据进行图像增强,将图像从.jpg格式转化 ...

  2. 基于Keras的卷积神经网络用于猫狗分类(未进行数据增强)+卷积层可视化

    首先看数据集路径: cats和dogs存放的就是各种大小的猫狗图片. 读取数据集代码: import os import matplotlib.pyplot as plt ""&q ...

  3. 基于Keras的卷积神经网络用于猫狗分类(进行了数据增强)+卷积层可视化

    接着我上一篇博客,https://blog.csdn.net/fanzonghao/article/details/81149153. 在上一篇基础上对数据集进行数据增强.函数如下: "&q ...

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

    卷积神经网络的猫狗识别 任务需求 环境配置 识别猫狗实例 首先导入库 数据预处理: 读取数据: 定义网络: 调整机器学习率 定义训练过程 训练开始 训练结果 用于测试代码 结果 任务需求 按照 htt ...

  5. 使用卷积神经网络实现猫狗分类任务

    一.数据集下载链接 二.基础环境配置 三.训练及测试过程   使用卷积神经网络在猫狗分类数据集上实现分类任务. 一.数据集下载链接   猫狗分类数据集链接 → 提取码:1uwy. 二.基础环境配置 W ...

  6. Top2:CNN 卷积神经网络实现猫狗图片识别二分类

    Top2:CNN 卷积神经网络实现猫狗图片识别二分类 系统:Windows10 Professional 环境:python=3.6 tensorflow-gpu=1.14 ```python &qu ...

  7. 基于Python的卷积神经网络和特征提取

     基于Python的卷积神经网络和特征提取 发表于2015-08-27 21:39| 4577次阅读| 来源blog.christianperone.com/| 13 条评论| 作者Christi ...

  8. TensorFlow 卷积神经网络之猫狗识别(二)

    本文是TensorFlow 卷积神经网络之猫狗识别 的姊妹篇,是加载上一篇博客训练好的模型,进行猫狗识别 本文逻辑: 我从网上下载了十几张猫和狗的图片,用于检验我们训练好的模型. 处理我们下载的图片 ...

  9. 用卷积神经网络实现猫狗图片分类

    该例程使用数据集来源于 kaggle cat_VS _dog 数据集中的一部分, 用卷积神经网络实现猫狗图片二分类,例程序比较简单,就不多解释了,代码中会有相应的注释,直接上代码: import nu ...

最新文章

  1. R语言gganimate包创建可视化gif动图、可视化动图:、gganimate包创建动态线型图动画基于transition_time函数、使用geom_point函数显示动画移动的数据点
  2. 掌握jQuery插件开发
  3. mysql删除原则_MySQL入门-11:数据的增、删、改
  4. 记录一次分组求和查询优化
  5. 孟菲斯风格海报设计素材,艺术一点点
  6. java jtextfield 事件_java – 处理JTextField中的编辑事件
  7. python 画蝴蝶_python画蝴蝶曲线图的实例
  8. #题目:有10 台被监控主机、一台监控机,在监控机上编写脚本,一旦某台被监控机器/ 分区适用率大于80%, 就发邮件报警放到crontab 里面, 每10 分钟检查一次...
  9. 【JavaScript游戏开发】使用HTML5 canvas开发的网页版中国象棋项目
  10. Linux摄像头驱动框架
  11. Chromium浏览器历史版本下载
  12. FTP服务器的搭建与连接
  13. dijkstra标号法表格_Dijkstra算法详细讲解
  14. 视频教程-19全新mysql教程零基础入门实战精讲mysql视频DBA数据库视频教程SQL教程-MySQL
  15. 安装linux分区设置密码,安装和使用Gnome Disk Utility在Linux上加密硬盘分区
  16. c语言程序设计勘误,C语言程序设计勘误表.doc
  17. C++游戏界面不流畅的问题
  18. 操作系统复习(第四版)--命中期末考试所有大题
  19. 面试第一个问题,请先做个自我介绍吧!
  20. 愤怒的小鸟 c语言,C语言_愤怒的小鸟

热门文章

  1. python公众号文章爬虫_Python爬虫爬取微信公众号历史文章全部链接
  2. 正则表达式 语法详解
  3. PS 颜色表大全-颜色中文名(1)
  4. 硬件科普系列之显示篇——LCD与OLED知多少
  5. Handler---
  6. getline()函数的几点疑惑
  7. Unity插件-AVPro Video 使用案例之视频播放
  8. 盘点linux现状未来发展,盘点Linux现状及未来发展
  9. 哦耶OYE-0001 OpenWrt路由器折腾记(by quqi99)
  10. 运维工程师分享7道经典面试题,看完轻松拿Offer