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

Chiplets仿真相关概念列表

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

2026/11/2 2:01:26 阅读更多 →
跨境电商多店铺运营:环境隔离的原理、策略与落地方法

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

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

2026/10/25 7:42:26 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/2 0:25:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/1 10:36:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/1 10:36:51 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/2 1:16:51 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/1 10:35:11 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/1 9:35:41 阅读更多 →

日新闻

周新闻

月新闻