# Cat Vs Dog
**数据集百度云链接:[https://pan.baidu.com/s/1qsvmq3uwqr79ykI5FblV8g](https://pan.baidu.com/s/1qsvmq3uwqr79ykI5FblV8g)**
**提取码:yun5**
**训练好的模型百度云链接:[https://pan.baidu.com/s/1FNs_WPPVJbnVPW8auHypCw](https://pan.baidu.com/s/1FNs_WPPVJbnVPW8auHypCw)**
**提取码:wylv**
**B 站项目介绍视频地址:[https://www.bilibili.com/video/av50237864/](https://www.bilibili.com/video/av50237864/)**
## 项目简介
- **该项目是基于 Keras 的猫狗识别 Web 应用。**
- **数据集是来自 Kaggle 上的猫狗大赛数据集,其中训练集 train 包含了猫的图片 12500 张以及狗的图片 12500 张,测试集 test 包含了猫狗的图片 12500 张。本项目采用了基于 Keras 的自己构造的 cnn 网络训练以及 Keras 中的 VGG16 卷积神经网络模型来进行训练数据,比较发现自己构造的 cnn 网络训练数据得到的模型不如 VGG16 训练数据得到的模型准确率高,自己训练的模型准确率在 70%-80% 之间,而 VGG16 的准确率在 95% 以上。**
- **最后还用了 Python 的 Django 框架简单的做了个展示页面,其中包括了本人及项目介绍图片的上传及预测结果展示的小功能。**
## 项目实现
### 所用技术
- Keras 搭建卷积神经网络
- Keras VGG16 搭建自己的卷积神经网络
- OpenCV 图像识别
- Django 框架
- Python 文件操作
### 项目流程图

---
## cnn 网络
### 网络图片展示

### 网络文字代码解释
**如上图所示,分别有四个输入不同的 `卷积层-->卷积层-->激活层-->Max池化层 `, 然后用 `Flatten 层` 是将图像展平成一维的列表,然后连接上两组 `Dense 层(全连接层)--> Dropout 层`,最后是一个 `Dense层` 进行最后的二分类。**
```python
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
```
> 第一行导入 Sequential 来初始化网络模型作为一个序列化网络。一般有两种基本方法去初始化网络,要么是各种层的序列,要么是用图的方式。
>
> 第二行 引入 Conv2D 来完成卷积操作。我们这里使用的图像基本是 2 维数组,所以使用 Conv2D,当处理视频文件时要使用 Conv3D, 第三维是时间。
>
> 第三行 引入 MaxPooling2D 用作池化操作。使用最大池化来保留感兴趣区域中的最大像素值。还有其他池化操作例如 MinPooling, MeanPooling.
>
> 第四行引入扁平操作,用来转化所有 2 维数组到单个长的连续线性向量。
>
> 第五行引入 Dense 层,用来完成网络的全连接。
#### **现在创建一个序列的 object**
###### 代码展示:
```python
ROWS = 128
COLS = 128
CHANNELS = 3
def catdog():
model = Sequential()
model.add(layers.Conv2D(32, (3, 3), padding="same", input_shape=(3, ROWS, COLS), activation='relu'))
model.add(layers.Conv2D(32, (3, 3), padding="same", activation='relu'))
model.add(layers.MaxPooling2D(pool_size=(2, 2), data_format="channels_first"))
model.add(layers.Conv2D(64, (3, 3), padding="same", activation='relu'))
model.add(layers.Conv2D(64, (3, 3), padding="same", activation='relu'))
model.add(layers.MaxPooling2D(pool_size=(2, 2), data_format="channels_first"))
model.add(layers.Conv2D(128, (3, 3), padding="same", activation='relu'))
model.add(layers.Conv2D(128, (3, 3), padding="same", activation='relu'))
model.add(layers.MaxPooling2D(pool_size=(2, 2), data_format="channels_first"))
model.add(layers.Conv2D(256, (3, 3), padding="same", activation='relu'))
model.add(layers.Conv2D(256, (3, 3), padding="same", activation='relu'))
model.add(layers.MaxPooling2D(pool_size=(2, 2), data_format="channels_first"))
model.add(layers.Flatten())
model.add(layers.Dense(256, activation='relu'))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(256, activation='relu'))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss=objective, optimizer=optimizer, metrics=['accuracy'])
model.summary()
return model
```
##### 解释:
> `model = Sequential()`
> 增加第一个卷积操作:
>
> `model.add(layers.Conv2D(32, (3, 3), padding="same", input_shape=(3, ROWS, COLS), activation='relu'))`
>
> 网络序列化的意思是我们可以通过 add 增加每一层到 model 上。Conv2D 函数包含 4 个参数,第一个是卷积核的个数也就是 32, 第二个参数时卷积核的大小也就是(3,3),第三个参数是输入大小和图像类型(RGB 还是黑白图)这里表示卷积网络输入 (128,128) 分辨率的图像,3 表示 RGB 图像。第四个参数为使用的激活函数。
>
> 接下来需要完成池化操作在相关特征图(由卷积操作之后产生的 32 个 feature maps)上。池化操作主要意图是减少图像大小。关键就是我们试图为下一层减少总共的节点数。
>
> `model.add(layers.MaxPooling2D(pool_size=(2, 2), data_format="channels_first"))`
> 我们使用 2*2 矩阵,最小化像素损失并得到特征定位的精确区域。我们在不损失精度时减少模型复杂度。
>
> 接下来转化所有池化后图像到一个连续向量通过 Flattening 函数,将 2 维矩阵转化到一维向量。
>
> `model.add(layers.Flatten())`
>
> 然后创建全连接层。扁平后的节点将作为输入连接到全连接层。
>
> `model.add(layers.Dense(256, activation='relu'))`
>
> Dense 函数创建一个全连接层,”units” 表示该层中定义的节点数,这些单元值一般在输入节点数和输出节点数之间,但只能通过实验来试出最好的值。
>
> `model.add(Activation('sigmoid'))`
>
> 最后初始化输出层,其只包含一个节点,对于二元分类来说。
>
> model.compile(loss=objective, optimizer=optimizer, metrics=['accuracy'])
>
> 现在完成了建立 CNN 模型,需要编译它。
## 项目展示
### 前端展示
- **项目主页**

- **上传图片**

- **查看结果**

### 后台展示

## 具体步骤
### 1.创建数据集
> 因为电脑性能的原因,只选择了训练集之中的 2000 张图片,以便我的电脑能够高效跑起来。
>
> 训练数据集分割成训练集、验证集、测试集,形成如下的 data 文件夹:
>
> 
```python
import os, shutil
# 数据集解压之后的目录
original_dataset_dir = 'data/train'
# 存放小数据集的目录
base_dir = 'data/small_data'
# 建立训练集、验证集、测试集目录
train_dir = os.path.join(base_dir, 'train')
# os.mkdir(train_dir)
validation_dir = os.path.join(base_dir, 'validation')
# os.mkdir(validation_dir)
test_dir = os.path.join(base_dir, 'test')
# os.mkdir(test_dir)
# 将猫狗照片按照训练、验证、测试分类
train_cats_dir = os.path.join(train_dir, 'cats')
os.mkdir(train_cats_dir)
train_dogs_dir = os.path.join(train_dir, 'dogs')
os.mkdir(train_dogs_dir)
validation_cats_dir = os.path.join(validation_dir, 'cats')
os.mkdir(validation_cats_dir)
validation_dogs_dir = os.path.join(validation_dir, 'dogs')
os.mkdir(validation_dogs_dir)
te
没有合适的资源?快使用搜索试试~ 我知道了~
基于CNN的猫狗智能识别.zip

共219个文件
pyd:48个
py:44个
pyc:29个

1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 92 浏览量
2024-08-29
02:26:56
上传
评论
收藏 22.85MB ZIP 举报
温馨提示
一键三连加关注私信up获取源码无偿分享群,以下为福利链接:https://pan.baidu.com/s/1niFL_7h0KhdJSW7r0XdtDw?pwd=1234 提取码:1234 基于python的XXXX管理系统,可以用于计算机专业毕设和课设使用 开发语言:python 开发软件:pycharm 框架:django 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 Maven包:Maven3.3.9 浏览器:谷歌浏览器 管理员账号:admin 管理员密码:admin 配置环境安装包:配置环境链接:https://cloud.189.cn/t/baeQZrAjEvyy (访问码:pfd5) 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/dist/inde
资源推荐
资源详情
资源评论





























收起资源包目录





































































































共 219 条
- 1
- 2
- 3
资源评论


源码空间站TH
- 粉丝: 7427
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 厦门某环岛干道一期工程招标资格后审文件.doc
- 大跨度多次预应力钢穹网壳设计与张拉监控.doc
- 建设工程施工合同履约中的变更控制.doc
- 项目木工承包合同.doc
- 微信小程序:电子优惠券领取(商城、淘宝客).zip
- 集团质量验收管理办法.doc
- 【计算机视觉】基于MobileNetV2与Grad-CAM的垃圾分类系统:四类垃圾识别模型训练及树莓派实时热力图可视化
- 基础工程平法识图条形基础独立基础筏板基础.pptx
- 北京市建设工程定额体系讲解(PPT).ppt
- 某公司薪酬设计方案(参考).doc
- 微信小程序多端实时运行工具.zip
- 专利翻译典型表达.doc
- 中小学教育培训市场调研报告.docx
- 含双椭圆形孔洞凸起地形对瞬态sh波的散射与动应力集中.docx
- 烟店镇年产50万套圆锥滚子轴承及50万套万向节十字轴轴承项目环评报告.doc
- 成都某高层住宅小区施工组织设计(争创芙蓉杯).doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
