基于深度学习的猫狗动物识别系统,CNN,tensorflow,卷积神经网络
基于深度学习的猫狗动物识别系统CNNtensorflow卷积神经网络。文章目录1. 环境设置安装依赖2. 数据准备3. 模型训练编写train_model.py4. 创建PyQt5用户界面编写main.py5. 运行项目解释增加视频支持添加视频功能代码及文字仅供参考。为了实现一个基于深度学习的猫狗动物识别系统并使用PyQt5创建用户界面我们可以利用TensorFlow和卷积神经网络CNN来训练模型。以下是详细的步骤和代码示例包括环境配置、数据准备、模型训练以及用户界面设计。1. 环境设置首先确保你的环境中安装了必要的依赖项安装依赖在开发阶段你需要一个Python环境来安装必要的依赖项。创建一个requirements.txt文件记录项目所需的依赖项tensorflow2.6.0 opencv-python-headless4.5.5 PyQt55.15.2 matplotlib3.4.2然后运行以下命令来安装依赖pipinstall-rrequirements.txt2. 数据准备假设你已经有了一个包含猫和狗图片的数据集。如果没有可以下载Kaggle上的猫狗分类数据集。确保数据集按照以下结构组织cat_dog_dataset/ ├── train/ │ ├── cats/ │ └── dogs/ ├── validation/ │ ├── cats/ │ └── dogs/ └── test/ ├── cats/ └── dogs/3. 模型训练我们将使用TensorFlow和Keras API来构建并训练一个简单的卷积神经网络模型。编写train_model.pyimporttensorflowastffromtensorflow.keras.preprocessing.imageimportImageDataGenerator# 设置路径train_dircat_dog_dataset/trainvalidation_dircat_dog_dataset/validation# 图像生成器train_datagenImageDataGenerator(rescale1./255,rotation_range40,width_shift_range0.2,height_shift_range0.2,shear_range0.2,zoom_range0.2,horizontal_flipTrue,fill_modenearest)validation_datagenImageDataGenerator(rescale1./255)train_generatortrain_datagen.flow_from_directory(train_dir,target_size(150,150),batch_size20,class_modebinary)validation_generatorvalidation_datagen.flow_from_directory(validation_dir,target_size(150,150),batch_size20,class_modebinary)# 构建CNN模型modeltf.keras.models.Sequential([tf.keras.layers.Conv2D(32,(3,3),activationrelu,input_shape(150,150,3)),tf.keras.layers.MaxPooling2D(2,2),tf.keras.layers.Conv2D(64,(3,3),activationrelu),tf.keras.layers.MaxPooling2D(2,2),tf.keras.layers.Conv2D(128,(3,3),activationrelu),tf.keras.layers.MaxPooling2D(2,2),tf.keras.layers.Conv2D(128,(3,3),activationrelu),tf.keras.layers.MaxPooling2D(2,2),tf.keras.layers.Flatten(),tf.keras.layers.Dense(512,activationrelu),tf.keras.layers.Dense(1,activationsigmoid)])model.compile(lossbinary_crossentropy,optimizertf.keras.optimizers.RMSprop(lr1e-4),metrics[accuracy])historymodel.fit(train_generator,steps_per_epoch100,epochs30,validation_datavalidation_generator,validation_steps50)model.save(cats_and_dogs_small_1.h5)4. 创建PyQt5用户界面接下来我们将编写代码来集成训练好的模型与PyQt5以实现用户界面。编写main.pyimportsysfromPyQt5.QtWidgetsimportQApplication,QMainWindow,QPushButton,QFileDialog,QLabel,QVBoxLayout,QWidgetfromPyQt5.QtGuiimportQPixmapimportcv2importnumpyasnpfromtensorflow.keras.modelsimportload_modelclassCatDogDetectionApp(QMainWindow):def__init__(self):super().__init__()self.initUI()self.modelload_model(cats_and_dogs_small_1.h5)definitUI(self):self.setWindowTitle(猫狗动物识别系统)self.setGeometry(100,100,800,600)self.image_labelQLabel(self)self.image_label.setAlignment(Qt.AlignCenter)btn_imageQPushButton(选择图片,self)btn_image.clicked.connect(self.openImage)layoutQVBoxLayout()layout.addWidget(self.image_label)layout.addWidget(btn_image)containerQWidget()container.setLayout(layout)self.setCentralWidget(container)defopenImage(self):optionsQFileDialog.Options()file_name,_QFileDialog.getOpenFileName(self,选择图片,,Images (*.png *.xpm *.jpg);;All Files (*),optionsoptions)iffile_name:self.detectAndShow(file_name)defdetectAndShow(self,image_path):imgcv2.imread(image_path)imgcv2.resize(img,(150,150))img_arraynp.expand_dims(img,axis0)predictionself.model.predict(img_array)labelCatifprediction0.5elseDogresult_imgcv2.putText(img,label,(10,30),cv2.FONT_HERSHEY_SIMPLEX,1,(255,0,0),2)height,width,channelresult_img.shape bytes_per_line3*width q_imgQPixmap.fromImage(QImage(result_img.data,width,height,bytes_per_line,QImage.Format_RGB888).rgbSwapped())self.image_label.setPixmap(q_img)if__name____main__:appQApplication(sys.argv)exCatDogDetectionApp()ex.show()sys.exit(app.exec_())5. 运行项目确保所有依赖项已正确安装后你可以运行上述脚本python main.py解释初始化CNN模型通过load_model加载预训练的猫狗分类模型。创建PyQt5界面使用QMainWindow和QWidget构建主窗口和布局。添加按钮用于选择图片并显示检测结果。处理图片当用户选择一张图片时调整图片大小到模型输入尺寸150x150并进行预测。根据预测结果在图片上绘制类别标签并显示在界面上。增加视频支持为了增加对视频的支持可以在界面中添加相应的按钮并编写对应的处理逻辑。添加视频功能defopenVideo(self):optionsQFileDialog.Options()file_name,_QFileDialog.getOpenFileName(self,选择视频,,Videos (*.mp4 *.avi);;All Files (*),optionsoptions)iffile_name:self.detectVideo(file_name)defdetectVideo(self,video_path):capcv2.VideoCapture(video_path)whilecap.isOpened():ret,framecap.read()ifnotret:breakframecv2.resize(frame,(150,150))img_arraynp.expand_dims(frame,axis0)predictionself.model.predict(img_array)labelCatifprediction0.5elseDogresult_framecv2.putText(frame,label,(10,30),cv2.FONT_HERSHEY_SIMPLEX,1,(255,0,0),2)cv2.imshow(Video Detection,result_frame)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()

相关新闻

小程序毕设选题推荐:基于 SpringBoot 的线上服务预约、商品订购与评价系统 通用预约订购信息化管理服务平台【附源码、mysql、文档、调试+代码讲解+全bao等】

小程序毕设选题推荐:基于 SpringBoot 的线上服务预约、商品订购与评价系统 通用预约订购信息化管理服务平台【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/22 22:19:59阅读更多 →
【线性代数实战】向量组等价与 B=AK 矩阵乘法的深度解析(附 Python 代码实现)

【线性代数实战】向量组等价与 B=AK 矩阵乘法的深度解析(附 Python 代码实现)

前言 在机器学习和数据科学的面试或实战中,我们常常听到“向量空间”、“降维”、“基向量”等词汇。很多初学者在死记硬背线性代数的定理时,往往忽略了一个关键事实:线性代数是计算机处理高维数据的底层语言。 今天,我们就深入剖析线性代数中 “向量组等价” 与核心矩阵…

2026/7/22 22:19:59阅读更多 →
【DEIM 创新改进】TCSVT 2026顶刊 | 独家首发创新、Conv卷积改进篇 | 引入FRConv模糊残差卷积,自适应增强与目标相关的邻域信息,助力遥感目标检测、小目标检测任务,有效涨点

【DEIM 创新改进】TCSVT 2026顶刊 | 独家首发创新、Conv卷积改进篇 | 引入FRConv模糊残差卷积,自适应增强与目标相关的邻域信息,助力遥感目标检测、小目标检测任务,有效涨点

一、本文介绍 🔥本文给大家介绍使用 FRConv模糊残差卷积 改进 DEIM 网络模型,FRConv通过逐点卷积和深度卷积提取目标边缘、纹理与局部结构,并利用基于空间距离和特征相似度的模糊加权机制,自适应增强与目标相关的邻域信息、抑制复杂背景、噪声及异常特征,再借助残差连接…

2026/7/22 22:19:59阅读更多 →
2026美赛数学建模D题完整参考论文(含模型建立求解、代码等)

2026美赛数学建模D题完整参考论文(含模型建立求解、代码等)

2026年美赛数学建模竞赛D题 平衡竞技与盈利:职业体育团队动态决策管理模型 摘要 在职业体育产业市场化、职业化程度不断提升的背景下,职业体育团队面临着赛场竞技表现突破与财务盈利能力提升的双重核心诉求,二者既相互支撑又存在潜在博弈&…

2026/7/22 23:14:08阅读更多 →
HarmonyOS应用开发实战:萌宠日记 - 快捷操作图标网格布局

HarmonyOS应用开发实战:萌宠日记 - 快捷操作图标网格布局

HarmonyOS应用开发实战:萌宠日记 - 快捷操作图标网格布局 前言 快捷操作栏 是首页中用户快速访问各功能模块的入口。在 萌宠日记 的首页中,我们使用 5 个快捷操作图标(日记、档案、健康、相册、更多),采用 Row 水平布…

2026/7/22 23:14:08阅读更多 →
HarmonyOS应用开发实战:萌宠日记 - 参数化路由

HarmonyOS应用开发实战:萌宠日记 - 参数化路由

HarmonyOS应用开发实战:萌宠日记 - 参数化路由 前言 在 萌宠日记 中,参数化路由 是页面间数据传递的另一种重要方式。与 回调函数模式 不同,参数化路由通过 NavPathStack.pushPath 的 param 参数传递数据,目标页面在 NavDestinat…

2026/7/22 23:14:08阅读更多 →
深入解析qsort与冒泡排序

深入解析qsort与冒泡排序

目录 一,qsort函数 二,模仿qsort函数,利用冒泡排序排序任意类型的数据 三,sizeof和strlen对比 四,指针例题 1,指针-整数 2,指针-指针 3,指针复杂计算案例 一,qsort…

2026/7/22 23:14:08阅读更多 →
HarmonyOS应用开发实战:萌宠日记 - 自定义 TabBar 设计与图标渲染

HarmonyOS应用开发实战:萌宠日记 - 自定义 TabBar 设计与图标渲染

HarmonyOS应用开发实战:萌宠日记 - 自定义 TabBar 设计与图标渲染 前言 TabBar 是底部导航栏的 视觉呈现核心,它直接影响用户对应用的第一印象和操作体验。在 萌宠日记 中,我们使用 Builder 装饰器 自定义了 TabBar 的渲染方式,实…

2026/7/22 23:14:07阅读更多 →
腾龙加密播放器,2026新版本--分享给同学

腾龙加密播放器,2026新版本--分享给同学

很多同学一直在寻找的,,我的课程能不能改为MP4高清画质视频,答案,是肯定可以的呀。 腾龙加密播放器,2026新版本--分享给同学,高清MP4格式 奶奶再也不担心我看课程了 进入--分享链接 尘封三年-王者归来 …

2026/7/22 23:12:07阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/22 22:56:18阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/22 18:55:50阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/22 18:55:50阅读更多 →