# 基于卷积神经网络CNN的猫狗图像分类
## 设计思路
(实验环境为windows10操作系统,英特尔十代i7CPU,英特尔核心显卡,python3.6,TensorFlow2.0)
卷积神经网络最常见的用途就是进行图像识别/分类任务,此处需要完成对于猫狗图像的二分类任务。考虑仿照LeNet结构构建卷积神经网络。
主要的实现步骤包括:使用keras库中的ImageDataGenerator模块进行图片数据的预处理和构成训练生成器;使用kerastuner库以小epochs的方式对模型超参数进行自动优化搜索;根据最优参数构建模型并增大epochs轮数完成模型训练。
## 模型结构
```c++
1: INPUT()
2: Conv2d(16卷积核,尺寸为3*3,relu激活函数,输入尺寸150*150像素,RGB三通道)
3: MaxPool2d(尺寸2*2)
4: Conv2d(16卷积核,尺寸为3*3,relu激活函数)
5: MaxPool2d(尺寸2*2)
6: Conv2d(64卷积核,尺寸为3*3,relu激活函数)
7: MaxPool2d(尺寸2*2)
8: Conv2d(16卷积核,尺寸为3*3,relu激活函数)
9: MaxPool2d(尺寸2*2)
10: Flatten()
11: Dropout(0.2)
12: Dense(352个神经元,relu激活函数)
13: Dense(1个神经元,sigmoid激活函数)
14: OUTPUT()
```
![](https://www.writebug.com/myres/static/uploads/2022/5/10/3d0e9948d68bef8fa5dede925f9bf020.writebug)
图 1模型的summary
## 实验结果
使用上述模型结构,损失函数使用二元交叉熵,优化函数使用RMSprop,学习率设置为0.0005,mini_batch设置为100。使用如上配置进行150轮训练之后得到如图2所示的结果。可以看出训练集和验证集上的准确率随着训练轮数的增加进行波动上升,当训练150轮后,验证集上的准确率基本稳定在0.8。
![](https://www.writebug.com/myres/static/uploads/2022/5/10/14a0376fdebbd0bb6c763026d636a57f.writebug)
图 2 训练150轮训练集和验证集上的准确率
## 总结与思考
刚开始做实验的时候遇到了问题—训练集准确率高达90%但验证集准确率只有不到70%。通过观察模型结构与查阅资料后发现可能遇到了过拟合问题。解决办法有:1.减小学习率;2.增加正则或者Dropout;3.在训练集上进行数据增强。经过上述的调整,最终解决了遇到的问题。
# 基于深度神经网络DNN的猫狗图像分类
## 设计思路
深度神经网络换句话说就是全连接神经网络,由输入直接全连接到一层或多层神经元,最后从输出层输出数据。显然深度神经网络并不适用于对于图像的分类问题----样本输入是巨大的,用同样与卷积神经网络模型的输入的话那么就是150*150*3=67500个参数数值,这么多参数输入进下一层,如果第一个隐含层神经元数目较少的话则完全不能学到样本的数据特征,如果第一个隐含层神经元数目较多的话则直接会导致权重参数的爆炸增长。因此考虑将RGB三色三通道的图片转化为灰度图再输入全连接神经网络。使用多层全连接层来学习样本的特征。
## 模型结构
```c++
1: INPUT()
2: Flatten()
3: Dense(512个神经元,relu激活函数)
4: Dense(128个神经元,relu激活函数)
5: Dense(64个神经元,relu激活函数)
6: Dense(1个神经元,sigmoid激活函数)
7: OUTPUT()
```
![](https://www.writebug.com/myres/static/uploads/2022/5/10/70775917c5d09ad7d5b527ac1b3f9a0c.writebug)
图 3模型的summary
## 实验结果
使用上述模型结构,损失函数使用二元交叉熵,优化函数使用RMSprop,学习率设置为0.0001,mini_batch设置为100。使用如上配置进行200轮训练之后得到如图4所示的结果。可以看出随着训练轮数的增加,训练集和验证集上的准确率增长较慢且波动较大,推测可能是全连接神经网络模型自身的问题,并且当训练了150轮之后,训练集上的准确率仍在缓慢增长,但验证集上的准确率已经基本问题,考虑这个阶段可能已经出现了模型过拟合。最终验证集上模型准确率在0.6左右。
![](https://www.writebug.com/myres/static/uploads/2022/5/10/13b12ad3f6e93d6ab8ad944c577649cc.writebug)
图 4训练200轮训练集和验证集上的准确率
## 总结与思考
深度神经网络在图像识别任务上表现较差,这是因为该模型本来就不擅长进行这类任务。因此我们以后面对新的任务时,要首先考虑更适合用哪种模型去表达,之后才是模型训练,调参,模型应用等步骤。
# 基于循环神经网络RNN的猫狗图像分类
## 设计思路
使用循环神经网络进行图片分类任务。首先确定图像输入尺寸为150*150像素,因此在加载循环神经网络时(这里使用的是LSTM),可以使得每一层每一次输入图像的某一行的150个像素,然后循环输入图片的150行,以此来适配图像分类的任务。由于原生彩色图像中的三个通道对于循环网络来说将是一个负担以此还是采用灰度图进行训练。
## 模型结构
```c++
1: INPUT()
2: LSTM(64个神经元,tanh激活函数)
3: LSTM(64个神经元,tanh激活函数)
4: LSTM(32个神经元,tanh激活函数)
5: Dense(64个神经元,relu激活函数)
6: Dense(1个神经元,sigmoid激活函数)
7: OUTPUT()
```
![](https://www.writebug.com/myres/static/uploads/2022/5/10/2556c290497a61b7a040661917bc28dc.writebug)
图 5模型的summary
## 实验结果
使用上述模型结构,损失函数使用二元交叉熵,优化函数使用RMSprop,学习率设置为0.0001,mini_batch设置为100。使用如上配置进行150轮训练之后得到如图6所示的结果。可以看到模型准确率波动较大,且训练较慢。最终模型基本收敛在100轮之后,验证集上平均准确率只有大约0.56。
![](https://www.writebug.com/myres/static/uploads/2022/5/10/02182ec5b80dd1d9a65c1e661634a2ea.writebug)
图 6训练150轮训练集和验证集上的准确率
## 总结与思考
循环神经网络也不适合图片分类的任务(或者说直接使用最朴素的循环神经网络难以直接应用到图片分类任务上),因为按照我所设想的训练输入模式,模型的输入是按照图片的每一行逐像素进入模型,LSTM通过寻找上下文关系来构建模型,而图片的特征不仅仅是行像素上的关系,更多的是局部特征(结合了行和列)。因此LSTM较难学习到图片类别的有效特征。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
共9个文件
py:3个
rar:2个
docx:2个
卷积神经网络最常见的用途就是进行图像识别/分类任务,此处需要完成对于猫狗图像的二分类任务。考虑仿照LeNet结构构建卷积神经网络。 主要的实现步骤包括:使用keras库中的ImageDataGenerator模块进行图片数据的预处理和构成训练生成器;使用kerastuner库以小epochs的方式对模型超参数进行自动优化搜索;根据最优参数构建模型并增大epochs轮数完成模型训练。
资源推荐
资源详情
资源评论
收起资源包目录
100011314-基于Python卷积神经网络CNN的猫狗图像分类.tar.gz (9个子文件)
classification-dogs-cats
data.rar 54.98MB
dog-or-cat_DNN.py 2KB
LICENSE 1KB
自然语言处理_作业一 .docx 341KB
dog-or-cat_CNN.py 4KB
README.md 6KB
dog-or-cat_RNN.py 3KB
作业一:基于深度神经网络的猫狗图像分类.docx 20KB
data_gray.rar 50.78MB
共 9 条
- 1
资源评论
- diiii8432023-12-31这个资源值得下载,资源内容详细全面,与描述一致,受益匪浅。
- MChen_sir2023-12-23资源有一定的参考价值,与资源描述一致,很实用,能够借鉴的部分挺多的,值得下载。
- 凭栏HU2023-12-21资源很好用,有较大的参考价值,资源不错,支持一下。
- lwscp2023-05-25资源不错,内容挺好的,有一定的使用价值,值得借鉴,感谢分享。
- 2301_774852052024-01-13资源内容详细,总结地很全面,与描述的内容一致,对我启发很大,学习了。
神仙别闹
- 粉丝: 2668
- 资源: 7640
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 农村信用社联合社计算机信息系统投产与变更管理办.docx
- 农村信用社联合社计算机信息系统数据管理办法.docx
- 利用SPSS作临床效度分析线上计算网站介绍-医学研究部统计谘.(医学PPT课件).ppt
- 利用Zabbix监控mysqldump定时备份数据库状态.docx
- 利用计算机解决问题的基本过程.doc
- 化工铁路通信工程总结.doc
- 北京大学网络教育软件工程作业.docx
- 医药公司(连锁店)计算机操作规程未新系统的自行按照旧制修改-新系统过制的编号加修模版.doc
- 医药公司(连锁店)计算机系统操作规程模版.doc
- 医药连锁门店计算机系统的操作和管理程序未新系统的自行按照旧制修改-新系统过制的编号加修模版.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功