基于深度学习的猫狗动物识别系统,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:10 阅读更多 →
Chiplets仿真相关概念列表

Chiplets仿真相关概念列表

Content一、系统与单元(宏观层级)二、封装载体与基板(中间层)三、连接与互连结构(物理接口)四、仿真与电气专有概念一、系统与单元(宏观层级) PCB(印刷电路板&#xff09…

2026/7/22 22:18:10 阅读更多 →
跨境电商多店铺运营:环境隔离的原理、策略与落地方法

跨境电商多店铺运营:环境隔离的原理、策略与落地方法

跨境电商的朋友,尤其是多店铺独立运营的卖家,更担心的不是没流量,而是一个店铺触发异常、其他店铺被一锅端。平台方(亚马逊、Shopee、Lazada、TikTokShop,以及独立站后台)都在强化关联识别,账号…

2026/7/22 22:18:10 阅读更多 →

最新新闻

Mac用户必备:Royal TSX替代Xshell的SSH/FTP解决方案

Mac用户必备:Royal TSX替代Xshell的SSH/FTP解决方案

1. 为什么Mac用户需要Xshell替代品作为一名长期在Mac和Windows双平台切换的开发者,我深刻理解Mac用户在寻找SSH/FTP工具时的痛苦。Windows平台有Xshell这样集SSH、FTP、SFTP于一体的专业工具,而Mac原生终端虽然强大但缺乏图形化文件传输功能。Xshell的商…

2026/7/22 23:45:17 阅读更多 →
AI开发工具生态:CLI、插件与扩展的技术实践

AI开发工具生态:CLI、插件与扩展的技术实践

1. 项目概述:AI CLI/Plugins/Extension的生态全景第一次接触AI命令行工具时,我正被重复性的代码生成任务折磨得焦头烂额。直到发现用自然语言描述需求就能自动生成完整脚本的CLI工具,调试时间直接缩短了70%。这种效率跃迁正是AI赋能开发工具的…

2026/7/22 23:45:17 阅读更多 →
Beyond Compare 4合法授权与高效使用指南

Beyond Compare 4合法授权与高效使用指南

1. Beyond Compare 4合法授权方案解析作为一款广受开发者欢迎的文件对比工具,Beyond Compare 4的专业版功能确实能大幅提升工作效率。但需要明确的是,任何商业软件的长期稳定使用都应通过官方渠道获取合法授权。以下是经过验证的正规授权途径和注意事项&…

2026/7/22 23:45:17 阅读更多 →
有了它,让deepseek更方便!

有了它,让deepseek更方便!

聊一聊最近国产AI人工智能大模型非常红火,都上央视了。看来,AI离我们是越来越近了,越来越深入我们的生活、工作和各个方面,让我们不得不学习研究它。但软件发布至今都Windows及苹果电脑版本。软件没有在电脑桌面上,总是…

2026/7/22 23:45:17 阅读更多 →
鸿蒙报错速查:arkts-strict-typing-strict-array 严格数组类型,元素类型不一致就炸,根因 + 真解法

鸿蒙报错速查:arkts-strict-typing-strict-array 严格数组类型,元素类型不一致就炸,根因 + 真解法

鸿蒙报错速查:arkts-strict-typing-strict-array 严格数组类型,元素类型不一致就炸,根因 真解法 报错原文 五个高频报错扎堆: ERROR: 10505001 ArkTS Compiler Error Error Message: Use explicit types instead of "any&qu…

2026/7/22 23:45:17 阅读更多 →
第04章 初始化程序(3):不会忘记时间的黑色方块 —— 探秘CMOS 0x80掩码与重启之谜

第04章 初始化程序(3):不会忘记时间的黑色方块 —— 探秘CMOS 0x80掩码与重启之谜

引言:机器中的“时间之眼” 在个人计算机的日常使用中,一个常被忽视的事实是:当我们完全切断电源,主机内部的一切半导体存储(比如我们熟知的内存条 DRAM)都会因为失去电力供应而被彻底清零。然而&#xff0…

2026/7/22 23:44:17 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/7/22 12:54:44 阅读更多 →

月新闻