深度学习--CNN实现猫狗识别二分类(附带下载链接, 长期有效)

news2024/11/27 4:26:31

1. 代码实现(包含流程解释)

 样本量:  8005

# ==================================================================
# 1.导入数据集(加载图片)+数据预处理

# 进行图像增强, 通过对图像的旋转 ,缩放,剪切变换, 翻转, 平移等一系列操作来生成新样本, 进而增加样本容量, 
# 同时对图片数值进行归一化[0:1]
from tensorflow.keras.preprocessing.image import ImageDataGenerator
# 下面一些参数是ai生成的, 感觉自己都学到狗身上去了, 直接让ai去学训练模型吧, 它比我做得好,呜呜呜
# 加上ai提供的参数之后, 准确率降低了百分之三十, 果然, 我还是有点存在价值的
dog_cat_datagen = ImageDataGenerator(
    rescale=1./255,  # 归一化图像
)
# 加载图像数据, 将图像转换为50*50像素的图片, 每次训练选32张图片进行反向搜索, 分类类型是二分类
dog_cat_data=dog_cat_datagen.flow_from_directory(r"C:\Users\鹰\Desktop\ML_Set\dog_cat_class\training_set", target_size=(50,50), batch_size=32,class_mode='binary')

# ===============================================================================================
# 2.模型训练
# 模型框架搭建
# 导入线性堆叠框架
from keras.models import Sequential
CNN=Sequential()

# 模型填充
# 导入卷积层模块, 池化层模块, 展开层模块, 全连接层模块
from keras.layers import Conv2D, MaxPool2D, Flatten, Dense
# 第一波卷积层,  就是为什么需要激活函数呢???????不理解啊!!!
CNN.add(Conv2D(32,(3,3), input_shape=(50,50,3), activation='relu'))
# 第一波池化层, 默认step==1, 默认进行图像填充padding???
CNN.add(MaxPool2D(pool_size=(2,2)))
# 第二波卷积层
CNN.add(Conv2D(32,(3,3), activation='relu'))
# 第二波池化层
CNN.add(MaxPool2D(pool_size=(2,2)))
# flatten--展开层, 作用就是转换图像矩阵的维度, 将二维转化为一维来作为全连接层的输入
CNN.add(Flatten())
# FC layer--全连接层
CNN.add(Dense(units=128, activation='relu'))
CNN.add(Dense(units=1, activation='sigmoid'))

# 模型编译调优, 加一个精确率是什么鬼? 看看效果再说吧
CNN.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

CNN.summary()

# 训练模型, 使用fit_generator是因为对图像进行了增强, 得到的数据是基于ImageDataGenerator产生的
# CNN.fit(dog_cat_data, epochs=25)
CNN.fit(
    dog_cat_data,
    epochs=25,
#    steps_per_epoch=dog_cat_data.samples // dog_cat_data.batch_size
)

# ================================================================================================================
# 模型评估与预测
# 训练集的准确率
train_accuracy=CNN.evaluate(dog_cat_data)
print("训练集准确率为:", train_accuracy[1])

# 测试集准确率
# 需要先对测试集进行导入和预处理
from tensorflow.keras.preprocessing.image import ImageDataGenerator
dog_cat_data_plus=ImageDataGenerator(1./255)
dog_cat_data_test=dog_cat_data_plus.flow_from_directory(r"C:\Users\鹰\Desktop\ML_Set\dog_cat_class\test_set", target_size=(50,50), batch_size=32, class_mode='binary')
test_accuracy=CNN.evaluate(dog_cat_data_test)
print("测试集准确率为:", test_accuracy[1])


# ======================================================================
#  在网上下载图片, 进行随机测试
from keras.preprocessing.image import load_img, img_to_array
pic_animal=r"C:\Users\鹰\Desktop\Dog+Cat\12.jpg"
pic_animal=load_img(pic_animal, target_size=(50,50))
pic_animal=img_to_array(pic_animal)
# 归一化
pic_animal=pic_animal/255
pic_animal=pic_animal.reshape(1,50,50,3)
# 预测
res_pro=CNN.predict(pic_animal)
import numpy as np
res=np.argmax(res_pro, axis=1)
print("result is :", res)
# 结果为0--猫, 结果为1--狗

2.注意:

这个训练的模型有一点问题, 当然也有可能是我的问题:

模型在训练集和测试集上表现不错, 训练集准确率接近100%, 测试集准确率70%左右, 

但使用在百度上下载的猫狗图片进行二分类预测时, 测试结果全部显示[0], 也就是猫, 

希望路过的大佬能指点一下, 请收下我的膝盖!!!!!!  

3.数据集链接:

官网:

Cat and Dog | KaggleCats and Dogs dataset to train a DL modelicon-default.png?t=O83Ahttps://www.kaggle.com/datasets/tongpython/cat-and-dog?resource=download

百度网盘分享:

链接:https://pan.baidu.com/s/1T1mymwIqOOF3MKfWxRtnpQ 
提取码:6axn

晚安,各位        

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2220793.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Altair官方教程——HyperMesh视觉控制

在HyperMesh中,模型视角控制可通过标准视图(Standard Views)工具栏、三维视图控制(3D View Controls)工具栏以及鼠标实现。 (1) 标准视图工具栏图标。 (2) 鼠标控制- 显示控制的推荐操作方法是使用鼠标。配合键盘上的 …

Lfsr32

首先分析 Lfsr5 首先要理解什么是抽头点(tap),注意到图中有两个触发器的输入为前级输出与q[0]的异或,这些位置被称为 tap position.通过观察上图,所谓抽头点指的就是第5个,第3个寄存器的输入经过了异或逻辑…

nosql课本习题

nosql题目 1. 文档数据库相比其他 NoSQL 的突出优势和特点是什么? 答案: 文档数据库的突出优势在于它的灵活性和可扩展性。不同于传统的关系型数据库,文档数据库允许存储半结构化和非结构化数据,每个文档可以有不同的字段&#x…

Django操作数据库

Django操作数据库 1、ORM框架2、ORM-创建数据库3、ORM-连接数据库4、ORM-操作表4.1、类创建表4.2、修改表结构4.2.1、删除表结构4.2.2、新增表结构 5、ORM-增删改查5.1、新增数据5.2、删除数据5.3、查询数据5.4、更新数据 1、ORM框架 Django开发操作数据库很简单,内…

沈阳乐晟睿浩科技有限公司技术创新,奠定坚实基础

在当今数字经济蓬勃发展的时代,电子商务以其独特的魅力和无限潜力,正深刻改变着人们的消费习惯与商业模式。在这场变革中,沈阳乐晟睿浩科技有限公司凭借其敏锐的市场洞察力、强大的技术实力以及前瞻性的战略眼光,迅速崛起&#xf…

Java爬虫:获取数据的入门详解

在数字化时代,数据已成为最宝贵的资产之一。无论是市场研究、客户洞察还是产品开发,获取大量数据并从中提取有价值的信息变得至关重要。Java,作为一种成熟且功能强大的编程语言,为编写爬虫提供了强大的支持。Java爬虫可以帮助我们…

月入30万!用AI做养生赚麻了,全网最全最详细的变现教程

现在不养生,将来养医生! 秋冬将至,又到了宝子们养生意识季节性觉醒的时间了,这时候,网上关于养生的内容搜索量激增,也催生了AI养生自媒体创作的热潮。 比如这位博主采用养生文案搭配AI简笔画的形式&#…

拥抱新质生产力 | 大势智慧亮相第12届中国测绘地理信息技术装备博览会

10月15日—17日,由中国测绘学会主办的2024中国测绘地理信息科学技术年会暨中国测绘地理信息技术装备博览会在河南省郑州市隆重举行。 10月15日,第12届中国测绘地理信息技术装备博览会在郑州国际会展中心盛大开幕。 大势智慧CTO张帆受邀出席博览会开幕式…

pdman在关系图中展示表的后排字段

1.当想在关系图中通过箭头指向来表明表与表之间的关系时,发现对应关联表的关联字段不展示(原表该字段展示在后排,关系图只展示前排字段) 2.找到对应表,对该字段手动设置可见 3.保存后再次进入关系图即可看到 3.1 3.2…

LabVIEW程序员可以从哪几个方面提升自己?有没有详细的路线图?

作为一名LabVIEW程序员,要在快速发展的技术领域保持竞争力并不断提升自己,需要从多个方面进行持续的学习和实践。下面我将为你详细说明LabVIEW程序员提升自己的几个关键方向,并给出具体的成长路线图。 1. 夯实基础:掌握LabVIEW的…

解决mac ssh端终端只有黑白颜色的问题

主要是因为没有开启颜色配置。修改下文件即可 cd ~ vi .zshrc 内容如下 export LS_OPTIONS--colorauto export CLICOLORYes export LSCOLORSExgxcxdxcxegedabagGxGx 关闭终端后重登录,这下有颜色了好看了 配色:目录蓝 可执行绿 软链青 颜色配置 详…

MyBatis入门之一对一关联关系(示例)

【图书介绍】《SpringSpring MVCMyBatis从零开始学(视频教学版)(第3版)》-CSDN博客 《SpringSpring MVCMyBatis从零开始学(视频教学版)(第3版)》(杨章伟,刘祥淼)【摘要 书评 试读】- 京东图书 …

CTFHUB技能树之SQL——字符型注入

开启靶场,打开链接: 直接指明是SQL字符型注入,但还是来判断一下 (1)检查是否存在注入点 1 and 11# 返回正确 1 and 12# 返回错误 说明存在SQL字符型注入 (2)猜字段数 1 order by 2# 1 order…

InnoDB引擎(架构,事务原理,MVCC详细解读)

目录 架构分析 逻辑存储结构​ 内存结构​ Buffer Pool​ ChaneBuffer 自适应哈希​ LogBuffer​ 磁盘结构​ 后台线程​ 事务原理​ redolog日志 undolog日志​ MVCC​ 三个隐藏字段​ undolog版本链 readview​ RC(读已提交原理分析)​ RR(可重复读原理分析…

MySQL 数据库的备份与恢复:最佳实践与深度探讨

MySQL 数据库的备份与恢复:最佳实践与深度探讨 在现代应用程序和企业系统中,数据库是其核心组件之一,负责存储和管理大量的关键数据。MySQL 作为一种广泛应用的开源数据库管理系统,支持高性能和可扩展性,被广泛应用于…

aws 把vpc残留删除干净

最近忘了把vpc 删干净导致又被收了冤大头钱 在删除vpc 的收发现又eni在使用,但是忘了是哪个资源在占用 先用命令行把占用的资源找出来停掉 使用 AWS 命令行界面(CLI)来查看 VPC 的使用情况 列出子网: aws ec2 describe-subnets …

每日一道算法题(Leetcode 20)

Whats past is prologue. 凡是过去,皆为序章。 题目 分析 1. 我们可以用栈的结构来解决这道题。 2. 我们使用while循环,每次读取字符串中一个元素进行操作,直到最后读取到 \0为止。 3. 如果遇见 (, [ ,{ 这三种左括号,则把该左…

SWAT-MODFLOW地表水与地下水耦合技术——建议收藏!

原文链接:SWAT-MODFLOW地表水与地下水耦合技术——建议收藏!https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247623317&idx1&sn87516da827641ffd124519f929e5da26&chksmfa8da372cdfa2a643b7b806b806b31e025382b9896723d891ffd030…

【Dash】feffery_antd_components 按钮组件的应用

一、feffery_antd_componenet 中的 AntdFloatButton 和 AntdFloatButtonGroup AntdFloatButton 和 AntdFloatButtonGroup 是两个用于创建悬浮按钮和悬浮按钮组的组件。 AntdFloatButton 是单个悬浮按钮组件,它提供了多种属性来定义按钮的外观及行为。AntdFloatBut…

2024双十一最建议买的东西有哪些?双11购物清单大全分享

双十一即将来临,各大品牌都推出了令人心动的优惠活动,让我们能够以更加实惠的价格拥有心仪的好物。其中数码家电的产品,也是迎来了一波降价高潮,因此对于数码家电爱好者而言,双十一是入手的绝佳时机!本期我…