深度学习--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 model
https://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--){…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
