深度学习--CNN实现猫狗识别二分类(附带下载链接, 长期有效)
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 modelhttps://www.kaggle.com/datasets/tongpython/cat-and-dog?resource=download
百度网盘分享:
链接:https://pan.baidu.com/s/1T1mymwIqOOF3MKfWxRtnpQ
提取码:6axn
晚安,各位
相关文章:

深度学习--CNN实现猫狗识别二分类(附带下载链接, 长期有效)
1. 代码实现(包含流程解释) 样本量: 8005 # # 1.导入数据集(加载图片)数据预处理# 进行图像增强, 通过对图像的旋转 ,缩放,剪切变换, 翻转, 平移等一系列操作来生成新样本, 进而增加样本容量, # 同时对图片数值进行归一化[0:1] from tensorflow.keras.preprocessing.image …...

Depcheck——专门用于检测 JavaScript 和 Node.js 项目中未使用依赖项的工具
文章目录 Depcheck 是什麽核心功能📚检测未使用的依赖🐛检测缺失的依赖✨支持多种文件类型🌍可扩展性 安装与使用1. 安装 Depcheck2. 使用 Depcheck Depcheck 的应用总结项目源码: Depcheck 是什麽 来看一个常见错误场景…...

前端构建工具vite的优势
1. 极速冷启动 Vite 使用原生 ES 模块 (ESM) 在开发环境下进行工作。相比于传统构建工具需要打包所有的文件,Vite 只在浏览器请求模块时动态加载所需的文件。无打包冷启动:无需预先打包,项目启动非常快,尤其对于大型项目效果更明…...

hive查询语句
1.基本语法 SELECT [ALL | DISTINCT]select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BYcol_list] [HAVING where_condition] [ORDER BYcol_list] [CLUSTER BYcol_list | [DISTRIBUTE BY col_list] [SORT BY col_list] ] [LIMIT number] …...

【AIGC】2024-ECCV-ControlNet++:通过有效的一致性反馈改进条件控制
2024-ECCV-ControlNet: Improving Conditional Controls with Efficient Consistency Feedback ControlNet:通过有效的一致性反馈改进条件控制摘要1. 引言2. 相关工作2.1 基于扩散的生成模型2.2 可控的文本到图像扩散模型2.3 语言和视觉奖励模型 3. 方法3.1. 初步3.…...
Mysql5.7变为GreatSQL 8.0.32-25过程中,SQL语句报错及解决方案
考虑兼容国产化数据库,现需要将Mysql5.7变为GreatSQL,在执行部分sql时,发现在Mysql5.7无报错,在GreatSQL有报错,在此记录一下遇到的几个错误。 1.ERROR 1231 (NO_AUTO_CREATE_USER) 1.1.报错提示 ERROR 1231 (42000…...
Qt 使用QAxObject将QTableView数据导出到Excel表格
这是我记录Qt学习过程的第6篇心得文章,主要是方便自己编写的应用程序导出Excel数据的,走了不少弯路直接上代码。 实现代码: //人员信息导出 ui->pbtn2->setEnabled(false); // 打开文件对话框,选择 excel文件 QString fil…...

fastGpt
参考本地部署FastGPT使用在线大语言模型 1 rockylinx 1 ollama安装 在rockylinux中安装的,ollama由1.5G,还是比较大,所有采用在windows下下载,然后安装的方式,linux安装 tar -C /usr -xzf ollama-linux-amd64.tgz #…...

如何全方位应对服务可用性的挑战
在数字化转型的浪潮中,运维团队正站在企业IT架构的核心位置,面对着前所未有的挑战。服务响应时间和失败率,作为衡量服务质量的重要指标,一直备受关注。然而,在追求这两项指标优化的同时,运维团队还需关注其…...

二进制方式部署k8s集群
目标任务: 1、Kubernetes集群部署架构规划 2、部署Etcd数据库集群 3、在Node节点安装Docker 4、部署Flannel网络插件 5、在Master节点部署组件(api-server,schduler,controller-manager) 6、在Node节点部署组件(kubelet,kube-proxy) 7、查看集群状态 8、运行⼀个测…...

Vivado时序报告七:Report Clock NetworkReport Clock Interaction详解
目录 一、前言 二、Report Clock Network 2.1 Report Clock Network流程 2.2 Report Clock Network报告 三、Report Clock Interaction 3.1 示例设计 3.2 配置选项 3.2.1 Options 3.2.2 Timer_Settings 3.3 Clock Interaction报告 3.3.1 Clock Pair Classification …...

HarmonyOS 组件样式@Style 、 @Extend、自定义扩展(AttributeModifier、AttributeUpdater)
1. HarmonyOS Style 、 Extend、自定义扩展(AttributeModifier、AttributeUpdater) Styles装饰器:定义组件重用样式 ;Extend装饰器:定义扩展组件样式 自定义扩展:AttributeModifier、AttributeUpdater 1.1. 区…...

信息安全工程师(73)网络安全风险评估过程
一、确定评估目标 此阶段需要明确评估的范围、目标和要求。评估目标通常包括特定的网络系统、信息系统或网络基础设施,评估范围可能涉及整个组织或仅特定部门。明确评估要求有助于确保评估过程的针对性和有效性。 二、收集信息 在评估开始之前,需要对目标…...

在MacOS玩RPG游戏 - RPGViewerPlus
背景知识 由于我一直使用Mac电脑,所以一直对Mac如何玩RPGMV/RPGMZ游戏的方式有进一步的想法。 网上能给出的方案都是自行启动一个HTTP服务进行,进行服务加载。这个方法有效,但兼容性较差。涉及到自定义功能模块的游戏,都会有报错…...

2024.10.27 直接插入排序 非递归后序遍历(复杂版)
直接插入排序 思路:用temp变量存放需要插入前面有序序列的变量,然后用里面的那个for循环寻找到需要插入的位置。 额外注意的点:arr[j1]temp;这个是因为内置循环每次出来之后所指向的位置是我们要插入的位置的前一个(-1或者插入…...

Ubuntu 22.04系统启动时自动运行ROS2节点
在 Ubuntu 启动时自动运行 ROS2 节点的方法 环境:Ubuntu 系统,ROS2 Humble,使用系统自带的 启动应用程序 目标:在系统启动时自动运行指定的 ROS2 节点 效果展示 系统启动后,自动运行小乌龟节点和键盘控制节点。 实践…...

张三进阶之路 | 基于Spring AOP的Log收集
前情提要 📌 张三对于公司的日志处理系统不满意,认为其性能不佳且功能有限。为了展示自己的能力和技术实力,他决定利用Spring AOP(面向切面编程)开发一个更高效的日志处理系统,并将其存储在Redis中。 首先…...
ubuntu新装ubuntu,重启黑屏
现象:双系统电脑向移动硬盘安装Ubuntu系统后,重启黑屏并显示Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists possible device or file completions. 又拔下无法启…...
太极安全监控系统0.8
完善后的代码及功能详细介绍 完善后的代码 python import os import sys import subprocess import re import datetime import threading import tkinter as tk from tkinter import messagebox, simpledialog, ttk import scapy.all as scapy import whois import numpy as …...

E-清楚姐姐的布告规划【01背包】
就当一个01背包写就行,只不过需要保证不交叉,w[i]覆盖i点,用一个if来判断即可 #include<bits/stdc.h> #define int long long using namespace std; int w[5005]; int f[5005]; int t,n,m; signed main() {cin>>t;while(t--){…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...