卷积神经网络猫狗识别(附源码)专栏

该项目将使用卷积神经网络算法,识别图片中的动物是猫还是狗。

其中,训练用的图片数据集在dogs_cats/data文件夹下,整个数据集分为训练集和测试集,其中训练集在dogs_cats/data/train文件夹内,有25000张图片,猫狗各12500张。而测试集在dogs_cats/data/test文件夹内有12500张,没有标明是猫还是狗

可以通过下图进行理解神经网络的基本构成:

图片在计算机储存由像素点矩阵组成,黑白图片的像素点是0-255或者0-1之间的数值,代表明暗程度;彩色图片是RGB图像,RGB表示红,绿,蓝三原色,计算机里所有的颜色都是三原色不同比例组成的,即三色通道。

输入一组照片,通过全连接层的处理输出预测值和损失,损失越小越接近真实结果,因此需要找到最好的参数,即让所有的损失和最小,那么如何找到最好的参数呢?

通过梯度下降不断迭代,调整初始参数,找到总损失比较小的最佳参数

同样的模式可能出现在图像的不同区域

当图片很大时,图片的像素点也会很多,那么图片传入神经网络后连接数就会很多,参数就会多。缩放后可以使参数减少,简化问题

不同的卷积核有不同的效果,而其中的值都是需要学习的参数

例:原始图片是8x8像素的,卷积核是3x3像素的,卷积结果是多少像素的?

Stride:卷积核每次移动的步长

Flatten层将二维图像经过flatten展开成一维输入全连接层中

kerasSequential模型:非常简单,只支持单输入,单输出的模型,适用于70%的应用场景

函数式API:支持多输入,多输出模型,适用于95%的应用场景

建立一个全连接层:

importkerasfromkerasimportlayers#导入层结构model=keras.Sequential()#建立序列模型#全连接层(本层神经元个数,激活函数,输入图片参数值数量)model.add(layers.Dense(20,activation='relu',input_shape=(10,)))model.add(layers.Dense(20,activation='relu'))model.add(layers.Dense(10,activation='softmax'))#训练模型#x-样本数据即图片,y-图片标签,epochs=处理图片的次数,batch_size=一次性处理几张图片model.fit(x,y,epochs=10,batch_size=32)建立一个卷积层:

keras.layers.Conv2D(filters,kernel_size,strides=(1,1),padding='valid',data_format=None)#filters:输出空间的维度#kernel_size:1个整数或2个整数表示的元组,2D卷积窗口的宽度和高度#strides:2个整数表示的元组,卷积沿宽度和高度方向的步长#padding:边界处理的方法,"valid"或"same"建立一个最大池化层:

keras.layers.MaxPooling2D(pool_size=(2,2),strides=None,padding='valid',data_format=None)#pool_size:沿(垂直,水平)方向缩小比例的因数,如果只有一个整数,则两个维度使用相同窗口长度#strides:2个整数表示的元组,步长值,None表示默认值pool_size#padding:边界处理的方法,"valid"或"same"四、代码实现1.定义一个基础CNN模型其中卷积层的卷积核数量为32,卷积核尺寸为3x3,激活函数为ReLU,padding设置为same,最大池化层的尺寸为2x2

#训练模型deftrain_cnn_model():#实例化模型model=define_cnn_model()#创建图片生成器,产生图片并输入datagen=ImageDataGenerator(rescale=1.0/225.0)train_it=datagen.flow_from_directory('C:\\Users\\Alixy\\Desktop\\ma1ogo3ushu4ju4ji2\\dogs_cats\\data\\train',class_mode='binary',batch_size=64,#一次产生并输入64张图片target_size=(200,200)#缩放图片为200x200,和输入图片大小相同!!!)#训练模型model.fit_generator(train_it,steps_per_epoch=len(train_it),epochs=20,verbose=1)#把模型保存到文件夹,basic_cnn_result.h5是提前就创建好的,用来保存模型的model.save("D:\\python\\python\\MCM\\Data_clean\\basic_cnn_result.h5")运行训练模型:

if__name__=="__main__":train_cnn_model()这个构建的CNN模型在迭代20个epoch时,可以达到约95%的准确率,是一个不错的结果

THE END
1.猫狗分类,猫狗大战Cats vs. Dogs(猫狗大战)数据集下载地址为https://www.kaggle.com/c/dogs-vs-cats/data。这个数据集是Kaggle大数据竞赛某一年的一道赛题,利用给定的数据集,用算法实现猫和狗的识别。 其中包含了训练集和测试集,训练集中猫和狗的图片数量都是12500张且按顺序排序,测试集中猫和狗混合乱序图片一共12500张。 http://www.ppmy.cn/news/471394.html
2.猫狗识别系统图像识别Python+TensorFlow+卷积神经网络算法+...猫狗识别系统。通过TensorFlow搭建MobileNetV2轻量级卷积神经算法网络模型,通过对猫狗的图片数据集进行训练,得到一个进度较高的H5格式的模型文件。然后使用Django框架搭建了一个Web网页端可视化操作界面。实现用户上传一张图片识别其名称。 一、前言 本研究中,我们开发了一个基于深度学习的猫狗识别系统,使用了TensorFlow框架...https://www.jianshu.com/p/bcfa15253541
3.毕业设计基于深度学习卷积神经网络的手势识别算法3 深度学习方法做手势识别 3.1 经典的卷积神经网络 3.2 YOLO系列 3.3 SSD 3.4 实现步骤 3.4.1 数据集 3.4.2 图像预处理 3.4.3 构建卷积神经网络结构 3.4.4 实验训练过程及结果 3.5 关键代码 4 实现手势交互 1 简介 Hi,大家好,这里是丹成学长的毕设系列文章! http://itvuer.com/show/1/20431.html
4.基于卷积神经网络的智能冰箱果蔬图像识别的研究AET摘要:智能冰箱物体识别主要涉及对水果和蔬菜的识别,冰箱中果蔬数量繁多,光照不均,环境复杂,对此提出了一种用于处理该类识别问题的卷积神经网络。网络采用ReLU作为激活函数,它比传统的Sigmoid函数具有更强的稀疏能力和更大的梯度值,能够极大地加速网络收敛。隐含层中引入随机Dropout,使得某些节点不工作,减少节点间的“共同...http://www.chinaaet.com/article/3000064953
5.基于卷积神经网络的药物蛋白相互作用预测技术领域,特别涉及一种基于卷积神经网络的药物 ? 蛋白相互作用预测模型。 背景技术: 2.药物发现包含多个步骤,需要很长时间并花费大量资金。预测和识别化合物 ? 蛋白质相互作用(cpi)在安全有效的新药的发现和开发中起着至关重要的作用。在药物发现的初期,筛选出与靶蛋白相互作用的化合物,可以大...https://www.xjishu.com/zhuanli/05/202110878705.html
1.基于cnn卷积神经网络的yolov8动物姿态估计识别(训练+代码)基于CNN(卷积神经网络)的YOLOv8模型在动物姿态估计识别方面是一种有效的解决方案。 YOLO(You Only Look Once)系列模型因其在实时目标检测中的高效性能而广受欢迎,YOLOv8是在YOLO家族中的一个更新版本,继承并改进了其前身YOLOv5的优点,增强了对于姿态估计任务的支持 ...https://blog.csdn.net/qq1309399183/article/details/143897352
2.基于卷积神经网络的宠物狗种类识别宠物狗种类识别卷积神经网络图像识别 在线出版日期: 2019-09-18(万方平台首次上网日期,不代表论文的发表时间) 页数: 2(21-22) 参考文献 (1) 排序: 被引频次 [1]周飞燕,金林鹏,董军.卷积神经网络研究综述[J].计算机学报.2017,(6).DOI:10.11897/SP.J.1016.2017.01229. ...https://d.wanfangdata.com.cn/periodical/shanddz201908010
3.基于卷积神经网络的猫狗图像识别实验神经网络猫狗图像分类基于卷积神经网络的猫狗图像识别实验 神经网络猫狗图像分类 该例程使用数据集来源于 kaggle cat_VS _dog 数据集中的一部分, 用卷积神经网络实现猫狗图片二分类,例程序比较简单,就不多解释了,代码中会有相应的注释,直接上代码: import numpy as np import pandas as pd...https://blog.51cto.com/u_16213643/9476142
4.GitHub该项目是基于 Keras 的猫狗识别 web 应用。 数据集是来自 Kaggle 上的猫狗大赛数据集,其中训练集 train 包含了猫的图片 12500 张以及狗的图片 12500 张,测试集 test 包含了猫狗的图片 12500 张。本项目采用了基于 Keras 的自己构造的 cnn 网络训练以及 Keras 中的 VGG16 卷积神经网络模型来进行训练数据,比较...https://github.com/teddyisme/catvsdog
5.基于卷积神经网络与迁移学习的国兰种类识别基于上述背景和现状,本文采用基于Inception-Res Net-v2网络与迁移学习的技术来完成国兰图像分类识别的研究。本文主要进行的工作流程和内容如下:(1)针对目前缺乏高质量可用的公开国兰图像数据集这一情况,通过网络下载辅以实地拍摄和书籍扫描等方法对国兰图像进行采集和整理,建立了5种共计1982张传统种类国兰数据集A和8种...https://wap.cnki.net/touch/web/Dissertation/Article/10341-1021050063.nh.html
6.Python通过TensorFlow卷积神经网络实现猫狗识别python设计神经网络 进行训练测试 1. 数据处理 将图片数据处理为 tf 能够识别的数据格式,并将数据设计批次。 第一步get_files()方法读取图片,然后根据图片名,添加猫狗 label,然后再将 image和label 放到 数组中,打乱顺序返回 将第一步处理好的图片 和label 数组 转化为 tensorflow 能够识别的格式,然后将图片裁剪和补充...https://www.jb51.net/article/157813.htm
7.基于卷积神经网络的手势识别算法摘要:手势识别是人机交互、智能假肢、医疗康复等领域的研究热点。为了满足手势识别实时性和准确性的需求,本文以成本较小的加速度信号作为数据,在对LeNet-5卷积神经网络进行分析的基础上,提出了一种适合加速度信号的LeNet-A网络。该网络针对基于加速度的手势分类特有的复杂性,增加Dropout层,改变卷积核大小、卷积核数量...https://hdlgxb.ecust.edu.cn/html/published/2018/2/20180218.html
8.一种基于卷积神经网络的小篆识别方法.docx一种基于卷积神经网络的小篆识别方法摘要小篆是我国古代的一种书法艺术形式,在汉字书法发展史上占有重要的地位。针对小篆识别问题,本文提出了一种基于卷积神经网络的小篆识别方法。首先,我们构建了一个包含大量小篆样本的数据集,对其进行预处理和特征提取,并基于这些特征采用卷积神经网络进行训练与测试。实验结果表明,所提出...https://m.renrendoc.com/paper/294541798.html
9.基于双分支特征融合卷积神经网络的高分辨距离像船只目标识别*基于双分支特征融合卷积神经网络的高分辨距离像 船只目标识别* 朱思键 1,2 齐向阳 1? 范怀涛 1 (1.中国科学院空天信息创新研究院,北京,100190;2.中国科学院大学电子电气与通信工程学院,北京,100049) (2023 年 11 月 6 日收稿;2024 年 3 月 28 日收修改稿) 朱思键,齐向阳,范怀涛. 基于双分支特征融合...http://journal.ucas.ac.cn/CN/article/downloadArticleFile.do?attachType=PDF&id=13378