【AI加持】基于PyQt5+YOLOv8+DeepSeek的老鼠检测系统(详细介绍)
文章目录
- 一.前言
- 二.核心技术&知识
- 1.PyQt5
- 2.YOLOv8
- 3.DeepSeek
- 4.CSV
- 5.多线程
- 6.关于老鼠
- 1.传播疾病
- 2.污染食物与生活环境
- 3.破坏建筑与设施
- 4.损害农作物与食品库存
- 5.影响公共卫生与心理健康
- 6.竞争生态资源、影响生态平衡
- 三.核心功能
- 1.登录注册
- 1.登录
- 2.注册
- 2.主界面
- 3.图像检测界面
- 1.检测结果展示
- 2.导出检测结果
- 3.可视化展示
- 4.AI(DeepSeek)智能分析
- 4.视频检测界面
- 1.视频文件检测
- 2.摄像头内容检测
- 5.系统设置界面
- 6.关于软件界面
- 四.数据集
- 1.数据准备
- 2.数据集处理
- 1.数据集标注文件类型转换
- 2.数据集拆分
- 3.模型训练
- 五.项目运行环境
- 1.项目依赖
- 2.项目结构
- 六.总结
本系统功能强大!支持对图片、视频、视频流、摄像头中的老鼠进行检测,支持多种数据数据源输入并且接入了AI实现了对当前分析结果的评估,欢迎了解!
@项目名称:基于PyQt+YOLO+DeepSeek的安全帽检测系统
@仓库名称:yolov8-helmet-detect
@作者:懷淰メ
@主页地址:https://blog.csdn.net/a1397852386
@定制:A1397852386
@开发日期:2025年10月
关键字:#老鼠检测系统 #YOLOv8 #PyQt5 #DeepSeek #目标检测 #计算机视觉 #深度学习 #AI分析 #多模态融合 #图像识别 #视频检测 #实时监控 #行为分析 #实验动物监测 #数据可视化 #CSV数据存储 #多线程 #QThread #GUI开发 #Python项目 #目标定位 #置信度分析 #热力图 #检测模型训练 #数据集处理 #VOC转YOLO #数据标注 #模型训练 #mAP评估 #精度召回 #智能监控系统 #食品安全 #仓储监控 #鼠害防控 #智慧城市 #自动化检测 #视频流分析 #摄像头检测 #系统设计 #软件工程
一.前言
随着实验动物在生命科学研究中的广泛应用,对实验动物行为和生理状态的监测需求日益增长,尤其是对老鼠这一常用模式动物的精准观察。传统的实验动物监测依赖人工记录,不仅耗时耗力,而且容易受观察者主观因素影响,数据准确性和一致性难以保证。随着计算机视觉、深度学习技术的快速发展,利用图像识别和目标检测技术进行实验动物行为分析成为可能,为科研人员提供高效、可靠的实验数据。
本项目基于PyQt5、YOLOv8和DeepSeek构建了一套老鼠检测系统。PyQt5为系统提供了图形化交互界面,使用户能够直观地操作和查看监测结果,提高了使用便利性和操作效率。YOLOv8作为先进的目标检测模型,具备高精度和高速度的特点,可实现对实验环境中老鼠的实时定位与识别,极大提高了监测的自动化水平。DeepSeek技术则进一步增强了系统对老鼠行为特征的分析能力,使得行为模式识别、异常行为检测等复杂任务得以实现。
该系统的建设具有重要科研意义。一方面,它可以大幅减少人工干预,提升实验数据的客观性和可靠性;另一方面,它为实验动物行为研究、药理实验以及疾病模型分析提供了强有力的技术支持。通过该系统,科研人员能够更高效地获取和分析老鼠的行为数据,为生物医学研究和药物开发提供坚实的数据基础,从而推动实验动物研究向智能化、精细化方向发展。
二.核心技术&知识
在这章我将要介绍本系统的核心技术。
1.PyQt5
PyQt5 是一套用于创建跨平台桌面应用程序的 Python GUI 工具包,它是 Qt 应用框架的 Python 绑定。通过 PyQt5,开发者可以使用 Python 编写具有现代图形界面的应用程序,支持丰富的控件、信号与槽机制、窗口管理、事件处理等功能。它兼容主流操作系统(如 Windows、macOS 和 Linux),适用于开发各种规模的桌面软件,常与 Qt Designer 配合使用以加快开发效率。
2.YOLOv8
YOLOv8(You Only Look Once version 8)是由 Ultralytics 推出的最新一代实时目标检测模型,属于 YOLO 系列的改进版本。相比前代模型,YOLOv8 在精度、速度和灵活性上都有显著提升,支持目标检测、图像分割、姿态估计等多任务处理。它采用了更加高效的网络结构和训练策略,并提供开箱即用的 Python 接口和命令行工具,适用于边缘设备和云端部署,广泛应用于安防监控、自动驾驶、工业检测等场景。
3.DeepSeek
DeepSeek是由深度求索公司开发的AI大模型助手,作为纯文本模型,我擅长自然语言处理、文档分析和智能对话。当与YOLO(You Only Look Once)实时目标检测系统结合时,可以形成强大的多模态应用架构——YOLO系统负责实时视觉识别和目标检测,快速准确地识别图像或视频流中的物体;而我则对YOLO检测到的结果进行深度语义分析和上下文理解,提供物体属性的详细解读、场景描述、行为分析以及决策建议。这种结合使得计算机视觉的“看到”与AI的“理解”完美融合,可广泛应用于智能监控、自动驾驶、工业质检等领域,实现从视觉感知到智能决策的完整闭环。
4.CSV
本系统使用CSV进行数据的存储与数据导出。
CSV(Comma-Separated Values)是一种简单通用的文本文件格式,以纯文本形式存储表格数据。它用逗号分隔不同的字段,每行代表一个数据记录,类似于电子表格或数据库中的行。由于其格式简单、易于读写且兼容性强,CSV被广泛应用于数据交换、导出和存储,支持几乎所有常见的办公软件和编程语言处理,是数据分析和系统间传输结构化信息时最常用的轻量级格式之一。
5.多线程
QThread 是 PyQt5 提供的线程类,用于在界面程序中安全地执行耗时任务,从而避免界面阻塞和卡顿。它允许将数据处理、模型推理、文件读写等操作放到独立线程中运行,并通过信号与槽机制与主线程进行通信,确保界面更新的稳定性与线程之间的安全交互。使用 QThread 可以显著提升应用程序的响应速度,使界面在后台任务执行期间依旧保持流畅,同时具备良好的扩展性与可维护性,在复杂的桌面端应用开发中尤为常用。
6.关于老鼠
老鼠是一类适应力极强的小型啮齿动物,生活范围广,从田野、仓库到城市下水道都能找到它们的踪迹。它们繁殖速度快、习性隐秘,夜间活动频繁,常以谷物、食物残渣以及各种可咬物为食。由于牙齿终生生长,老鼠会不断啃咬周围物体,从木门、电线到塑料管道都可能成为目标,这使它在人类生活环境中尤为麻烦。
老鼠对人类造成的危害多方面且严重。首先,它们是多种疾病的重要传播者,例如流行性出血热、鼠疫、钩端螺旋体病等,鼠体或其排泄物、寄生在其身上的跳蚤都可能成为传播途径。其次,老鼠会污染粮食和食品,不仅导致经济损失,还可能引发食物中毒。再者,老鼠啃咬电线容易造成短路,进而引发火灾隐患。在农业领域,它们破坏作物、啃食种子,使农田减产。居住环境中,老鼠不仅带来噪音、异味,也可能对家庭物品造成破坏。正因如此,人类长期以来都将老鼠视为需要严密防控的有害生物,通过环境整治、封堵缝隙、妥善储存食物与使用科学灭鼠手段等方式来减少其带来的危害。
1.传播疾病
老鼠作为常见的病原携带者,与人类生活环境高度重叠,因此容易成为多种疾病的传播媒介。它们常在下水道、垃圾堆、仓储区等肮脏潮湿之处觅食和栖息,身上携带的细菌、病毒和寄生虫能够通过咬伤、排泄物、污染的食物或水源以及体表寄生虫间接传播给人类。最具代表性的疾病包括鼠疫、钩端螺旋体病、流行性出血热和沙门氏菌感染等,其中鼠疫历史上曾引发大规模疫情,危害极大。老鼠排泄物在空气中干燥后形成颗粒,被吸入人体呼吸道也可能引起感染。一些寄生在老鼠体表的跳蚤、螨虫同样能作为媒介,将病原体带给人类或家畜。由于老鼠繁殖速度快、适应力强,一旦在社区、仓库或食品加工场所定居便可能迅速扩散。因此,保持清洁的环境、妥善存放食物、定期消杀和封堵鼠洞,是减少老鼠活动和阻断疾病传播链的重要措施。
2.污染食物与生活环境
老鼠在寻找食物和栖息地的过程中,会频繁出入厨房、仓库、下水道以及垃圾堆等区域,其排泄物、唾液和体表病原极易残留在所接触的物品和表面上,从而造成广泛污染。它们咬啮包装袋、粮食和电线,不仅破坏食材完整性,还可能让细菌、病毒或寄生虫随之进入食品链。被老鼠啃过或攀爬过的食物往往肉眼难以察觉污染,但仍可能隐藏健康风险。老鼠习惯在隐蔽角落筑巢,会把纸屑、布料和杂物拖入室内,使环境变得杂乱并滋生异味。其尿液具有强烈气味,一旦渗入地板或墙角,不仅难以清除,还会吸引更多同类聚集。长期未治理的鼠害会让居家、餐饮和仓储环境清洁度急剧下降,增加虫害共生机会。因此,通过封堵缝隙、收纳食物、保持干燥与定期清洁,可以有效减少老鼠对食物与环境的污染。
3.破坏建筑与设施
老鼠具有强烈的啮齿本能,为磨牙会不断咬啮周围可触及的材料,这使它们成为破坏建筑和设施的隐形“工程师”。在房屋结构中,木梁、保温层、塑料管道和轻质隔墙都可能成为它们的目标,被啃噬后承重能力下降或形成空洞,长期累积会导致墙体松动、地板塌陷等安全隐患。更危险的是老鼠喜欢咬电线,其锋利门齿能轻易剥离绝缘层,造成短路、线路老化甚至引发火灾。此外,它们在墙体夹层、天花板和管道井中筑巢,会携带大量杂物,影响排水、通风和供电系统的正常运行。老鼠的行动通常在隐蔽区域进行,破坏往往在问题显现前已相当严重。为了减少建筑和设施受损,必须定期检查隐蔽空间、封堵管线缝隙、保持环境整洁并采取专业的防鼠措施,从源头上控制其入侵与扩散。
4.损害农作物与食品库存
老鼠在农业生产和食品储藏体系中是破坏性极强的害兽,其取食习性和高繁殖速度使它们对农作物和库存粮食造成持续而隐蔽的损失。在田间,老鼠会啃食幼苗、根茎和成熟的谷物,导致作物减产、品质下降,尤其在稻田、玉米地和蔬菜基地中更为常见。它们常在田垄、灌溉渠、堆草和仓边挖洞筑巢,破坏土壤结构,影响灌溉系统正常运行,使作物生长环境恶化。在粮仓、食品加工场所和家庭储藏区中,老鼠会咬破包装袋,啃食稻米、面粉、坚果、干货等食材,不仅消耗大量库存,还会留下尿液、粪便与毛发,使剩余粮食失去食用价值。被污染的粮食往往无法通过简单清理恢复安全性,只能废弃处理,从而造成额外经济损失。由于老鼠活动隐蔽、繁殖迅速,若不及时治理,其危害会在短期内扩大。因此,强化仓储密封、定期巡查、保持干燥清洁并配合科学的防鼠措施,是保护农作物和食品库存的关键。
5.影响公共卫生与心理健康
老鼠在公共卫生领域中具有显著的负面影响,它们携带多种病原体,活动范围又往往与人类生活空间高度重叠,因此一旦数量失控,社区卫生质量会迅速下降。老鼠在垃圾站、下水道及食品加工区域穿梭,容易将细菌和病毒带入公共环境,增加群体性感染的风险。它们留下的排泄物和异味不仅会污染空气,还会诱发过敏反应或呼吸道不适,给老年人与儿童等敏感人群造成额外负担。在心理层面,许多人对老鼠有强烈的恐惧与厌恶,当家中或公共场所频繁出现鼠迹时,居民往往会产生紧张、焦虑和睡眠质量下降等问题。长期感受到鼠害威胁的人甚至可能出现安全感缺失,影响日常生活与工作效率。对部分从业人员而言,如餐饮、仓储与医疗环境中反复出现鼠患,也会带来职业压力。通过完善市政卫生管理、加强环境清洁与社区防鼠措施,可以减轻鼠害对公共卫生和心理健康的双重冲击。
6.竞争生态资源、影响生态平衡
老鼠在生态系统中属于高度适应性的杂食性动物,其繁殖速度快、觅食能力强,使它们在与其他野生动物争夺资源时往往占据优势。在农田、林地、湿地以及城市绿地中,老鼠会大量捕食种子、果实、昆虫及小型无脊椎动物,这不仅减少了本地植物的自然繁殖机会,也压缩了其他小型动物的食物来源,导致生物链结构发生变化。老鼠的入侵常会迫使本地啮齿类、鸟类甚至两栖爬行动物迁移或数量下降,从而破坏原有的生态平衡。此外,它们在筑巢和觅食过程中会扰动土壤和植被,使微生境结构改变,影响植物生长和昆虫栖息环境。尤其在人类活动影响较大的区域,老鼠数量失控更容易造成生态失衡,甚至引发害虫爆发或某些物种衰退。因此,控制老鼠种群、保护原生物种及栖息地,是维持生态系统稳定和生物多样性的重要措施。
三.核心功能
1.登录注册
1.登录
软件启动后首先进入登录页面,用户需要输入正确的用户名和密码才能使用本系统的正式功能,登录页面整体采用了垂直布局,局部采用了水平布局,登录界面简约不简单,登录功能后端采用CSV本地文件存储用户信息,每次登录都是通过查库进行验证的,实现了流程标准化。
我们设计了简约的登录注册界面展示与用户交互的所有组件,登录注册界面的标题展示了系统的名称。
2.注册
没有账号的用户需要进行注册,注册操作流程十分简单,用户点击登录界面的注册按钮就跳转到了注册窗口,用户需要输入自定义的用户名和两次匹配的密码才能完成登录,值得一提的是,成功注册的用户软件会自动填写用户名和密码到登录界面,实现了登录流程路径的简化。
2.主界面
用户通过输入自己的用户名和密码登录到本系统后进入主界面,主界面内容十分丰富,我来一一介绍:首先软件整体是垂直布局,顶部是系统的标题,从左到右依次展示了系统的作者信息、系统名称、当前时间以及CPU内存占用情况,下方为水平布局,左侧是系统的导航区域,我们设计了windows风格支持展开与收缩的内容导航区域,右侧是内容核心区域,通过点击导航按钮切换展示内容,主界面主要展示了以日期为维度统计的数据、用户信息操作按钮、系统信息、系统环境信息以及实时CPU、内存可视化折线图
3.图像检测界面
1.检测结果展示
用户通过点击左侧导航栏按钮切换到图像检测界面,在此界面支持选择图像进行输入,用户选择完之后被选择的图像会展示在左侧并且展示图像绝对路径信息,用户可以通过点击右侧的“进行检测”按钮对输入的图像数据进行检测,系统会自动调用YOLOv8相关算法根据指定的参数对输入图像内容进行检测,最后将检测结果展示到右侧,这样用户可以通过比对左右图像的区别得到直观的检测结果,系统自动使用红色边框框选出目标区域并且使用红色文字展示出目标类别以及它的置信度,这些参数和展示效果都可以在设置页面进行详细设置。
2.导出检测结果
我们设置了检测结果区域,包括检测目标数量的展示以及详细检测结果表格,用户可以更加直观地看到检测结果数据,另外当用户检测结束之后右侧的三个按钮自动设置为可以点击,这三个按钮的作用分别是:
导出结果:用户可以将检测结果进行导出,导出的文件格式可以是Excel、CSV、TXT,可以根据情况自行选择导出格式,我截图给大家看下导出的Excel文件内容格式。
3.可视化展示
然后就是可视化展示,用户可以点击进行可视化按钮,查看对于本次检测的可视化效果,系统内置了四种可视化效果:分别是:目标位置热力图、目标面积占比、置信度分布直方图、检测能力柱状图,这些图标通过不同维度对当前数据进行了可视化展示,更便于用户理解,这里指的一体的是,支持可视化图表进行导出操作,用户可以点击紫色的导出按钮,对当前的可视化效果图表进行导出,生成一张本地的PNG图像文件。
4.AI(DeepSeek)智能分析
将YOLOv8球体检测系统与DeepSeek等AI大模型深度融合,能够实现从“单纯检测”到“智能认知”的跨越式升级。该系统在YOLOv8高效精准的球体定位能力基础上,融入了DeepSeek强大的语义理解和推理决策能力,不仅可以实时识别球体位置,还能深度分析场景语义、生成战术策略并提供智能决策支持,从而在体育分析、工业质检和机器人视觉等领域构建出更加智能化、自适应的一体化解决方案。
这里是软件的另外一个核心:AI智能分析,我们的目标检测系统接入了DeepSeek大模型,支持对当前检测结果数据进行AI分析,AI会通过不同维度对当前检测结果进行多角度分析,最后生成检测结果分析报告,用户可以根据这个结果对系统进行调整,不断完善系统功能和目标检测准确度!
在AI分析结束后下方会展示一些按钮,用户可以方便地复制结果、导出文本内容、生成PDF报告、重新生成以及关闭,多重的操作方式给于用户了多种选择!
4.视频检测界面
1.视频文件检测
我们的系统支持视频内容中的球体检测,支持输入的视频类型包括:视频文件、视频流以及摄像头,通过识别视频画面的内容对内容中的目标球体进行检测,试试标注与展示,通过相关帧率控制保证了视频的流畅性,用户可以通过比对左右两侧的画面使用肉眼评估当前检测结果,我们的视频检测界面拥有图像检测界面相同的操作功能,这里不多赘述。
2.摄像头内容检测
用户点击"进行检测"按钮之后系统会自动调用摄像头,打开摄像头展示摄像头画面,实时检测目标画面中的球体,通过左右画面比对让用户看到检测结果,这里本人就不露脸啦~
5.系统设置界面
我们的系统是支持简单的参数设置的,具体可以设置目标检测模型、置信度阈值(Conf)、交并比阈值(IOU)、还有一些检测结果控制参数,比如检测框展示、目标类别展示、目标置信度展示,用户可以点击绿色的刷新按钮刷新可用模型,亦可通过点击退出按钮退出系统或者退出登录,本设置页面实现了目标检测参数的灵活配置!
6.关于软件界面
我们使用富文本html的形式展示了软件相关的信息,包括系统用到的相关技术,对于二维的数据使用二维表进行了展示,最底部放置了四个按钮,分别是:关于YOLO、关于软件、关于作者、关于QT,点击之后都会弹出对应的信息提示框,这个页面的作用是让用户更多的了解软件和创作者信息,跨过技术的鸿沟!
四.数据集
本系统所使用的数据集围绕老鼠目标的多场景、多角度、多状态采集构建而成,旨在提升模型在真实环境中的适应性与鲁棒性。数据来源涵盖实验室、仓储区、地下室、户外夜间监控、粮仓、食品加工车间等多类复杂场景,结合不同光照条件、摄像头分辨率、遮挡程度与背景干扰,使模型能够学习到多样化的外观特征与环境变化。图像中包含站立、奔跑、觅食、半遮挡、远距离、小尺寸目标等多种姿态,并覆盖不同体型、颜色与运动模糊情况下的老鼠样本。数据集中不仅包含清晰标注的边界框,还对类别与置信度进行了严格校验,以确保训练时标签可信度和质量的一致性。经过清洗、去重、增强与格式化处理后,最终数据集能够满足 YOLOv8 等高性能检测模型的训练需求,使模型在实际部署中具备更强的泛化能力,即便在光照不足、目标部分遮挡或背景复杂的情况下,也能保持稳定识别效果。该数据集为系统实现高精度、高实时性的老鼠检测奠定了坚实基础。
1.数据准备
本系统附带1078张老鼠图像和1078个数据标注文件,大家可以根据自己的情况自行训练数据自己的模型!
我们使用VOC的格式存储数据标注文件,单数据标注文件内容如下:
<annotation><folder>path</folder><filename>mouse-4-6-0001.jpg</filename><path>/home/ycc/darknet-master/CE/path/mouse-4-6-0001.jpg</path><source><database>Unknown</database></source><size><width>800</width><height>533</height><depth>3</depth></size><segmented>0</segmented><object><name>mouse</name><pose>Unspecified</pose><truncated>1</truncated><difficult>0</difficult><bndbox><xmin>130</xmin><ymin>13</ymin><xmax>800</xmax><ymax>533</ymax></bndbox></object></annotation>2.数据集处理
1.数据集标注文件类型转换
直接使用VOC格式的数据标注文件进行训练是不行的,需要我们将xml转成txt文件,
这段代码的作用是将指定文件夹中的 Pascal VOC 格式的 XML 标注文件批量转换为 YOLO 格式的 TXT 标注文件。它会先遍历所有 XML 自动统计有效类别并生成类别到 ID 的映射表,忽略类别名为 "not" 的标注,然后读取对应图片的尺寸,将 XML 中的边界框坐标转换为 YOLO 的归一化格式(class_id x_center y_center width height),最后将生成的 TXT 文件保存到指定目录中,便于直接用于 YOLO 训练。
大家首先执行step1_yolo_to_txt.py
importosimportxml.etree.ElementTreeasETfromPILimportImage# 原始路径xml_dir=r"E:\thunder_download\useful\老鼠数据集\Annotations"img_dir=r"E:\thunder_download\useful\老鼠数据集\JPEGImages"# YOLO标签输出路径yolo_txt_dir=r"E:\thunder_download\useful\老鼠数据集\labels"os.makedirs(yolo_txt_dir,exist_ok=True)# 类别映射class_map={"mouse":0}# 支持的图像扩展img_exts=[".jpg",".jpeg",".png",".bmp"]# 遍历 XML 文件forxml_fileinos.listdir(xml_dir):ifnotxml_file.endswith(".xml"):continuexml_path=os.path.join(xml_dir,xml_file)tree=ET.parse(xml_path)root=tree.getroot()# --- 以 XML 文件名匹配图像 ---base=os.path.splitext(xml_file)[0]img_path=Noneforextinimg_exts:candidate=os.path.join(img_dir,base+ext)ifos.path.exists(candidate):img_path=candidatebreakifimg_pathisNone:print(f"Warning: 图像文件与{xml_file}同名的图片不存在,跳过")continue# 获取图像尺寸try:withImage.open(img_path)asimg:w,h=img.sizeexceptExceptionase:print(f"无法打开图片{img_path}:{e}")continuetxt_lines=[]# 遍历目标forobjinroot.findall("object"):name_node=obj.find("name")ifname_nodeisNone:continuelabel=name_node.text.strip()iflabelnotinclass_map:continueclass_id=class_map[label]bndbox=obj.find("bndbox")ifbndboxisNone:continuexmin=float(bndbox.find("xmin").text)ymin=float(bndbox.find("ymin").text)xmax=float(bndbox.find("xmax").text)ymax=float(bndbox.find("ymax").text)x_center=((xmin+xmax)/2)/w y_center=((ymin+ymax)/2)/h box_width=(xmax-xmin)/w box_height=(ymax-ymin)/h txt_lines.append(f"{class_id}{x_center:.6f}{y_center:.6f}{box_width:.6f}{box_height:.6f}")# 保存 YOLO txttxt_file_path=os.path.join(yolo_txt_dir,base+".txt")withopen(txt_file_path,"w")asf:f.write("\n".join(txt_lines))print(f"转换完成!YOLO TXT 文件已保存在:{yolo_txt_dir}")2.数据集拆分
YOLO 推荐训练集和测试集按 8:2 划分,主要是因为目标检测对样本量非常依赖,需要尽可能多的训练数据来学习特征,同时又必须保留足够的独立测试数据来评估模型的真实泛化能力。8:2 被证明在“训练数据够多”与“测试评估足够稳定”之间取得了较好平衡,因此成为默认且通用的实践比例。
这个脚本的作用是从已有的图片和 YOLO 标注文件中随机抽取 200 张图片,并将它们按照训练集和验证集的比例进行划分,然后将对应的图片和 TXT 标注文件复制到新的数据集目录中,方便直接用于训练 YOLO 模型。脚本会先创建训练集和验证集的图片、标签子目录,然后随机选择 200 张图片,其中 40 张作为验证集,其余 160 张作为训练集,复制过程中会保证每张图片对应的标注文件也被同步复制,如果标注文件不存在,会生成一个空的 TXT 文件,以保持文件结构完整。运行完成后,新的数据集就整理好了,可以直接用于训练和验证。。最终会在目标目录下生成:
执行脚本step2_auto_part.py
importosimportrandomimportshutil# 原始数据路径img_dir=r"E:\thunder_download\useful\老鼠数据集\JPEGImages"label_dir=r"E:\thunder_download\useful\老鼠数据集\labels"# 新数据集路径dataset_dir=r"E:\thunder_download\useful\老鼠数据集\dataset"train_img_dir=os.path.join(dataset_dir,"train","images")train_label_dir=os.path.join(dataset_dir,"train","labels")val_img_dir=os.path.join(dataset_dir,"val","images")val_label_dir=os.path.join(dataset_dir,"val","labels")# 创建目录fordir_pathin[train_img_dir, train_label_dir, val_img_dir, val_label_dir]: os.makedirs(dir_path,exist_ok=True)# 获取所有图片文件all_images=[fforfinos.listdir(img_dir)iff.lower().endswith((".jpg",".png",".jpeg"))]# 随机抽取200张iflen(all_images)<200: raise ValueError(f"图片数量不足200张,当前数量: {len(all_images)}")selected_images=random.sample(all_images,200)# 分割训练集和验证集random.shuffle(selected_images)val_images=selected_images[:40]train_images=selected_images[40:]def copy_files(image_list, target_img_dir, target_label_dir):forimg_fileinimage_list:# 复制图片src_img_path=os.path.join(img_dir, img_file)dst_img_path=os.path.join(target_img_dir, img_file)shutil.copy(src_img_path, dst_img_path)# 对应的txtlabel_file=os.path.splitext(img_file)[0]+".txt"src_label_path=os.path.join(label_dir, label_file)ifos.path.exists(src_label_path): dst_label_path=os.path.join(target_label_dir, label_file)shutil.copy(src_label_path, dst_label_path)else:# 如果没有对应txt文件,创建一个空文件open(os.path.join(target_label_dir, label_file),"w").close()# 复制训练集copy_files(train_images, train_img_dir, train_label_dir)# 复制验证集copy_files(val_images, val_img_dir, val_label_dir)print(f"随机抽取完成!训练集: {len(train_images)} 张,验证集: {len(val_images)} 张")print(f"数据集路径: {dataset_dir}")3.模型训练
数据集准备好之后就可以开始模型训练了,我们首先准备一个训练的配置文件,比如说是data.yaml
然后就可以开始模型训练了,直接执行我们准备好的train.bat文件,内容就是下面的内容
yolotask=detectmode=trainmodel=../data/model/yolov8n.ptdata=./data.yamlepochs=30imgsz=640batch=16lr0=0.01然后模型就开始训练了
这里我贴一些训练验证结果截图
最后的results.png见下图,训练效果还是可以的!
1. 训练损失的整体表现 训练阶段的三个主要损失(box、cls、dfl)都呈现稳定下降趋势。 起始阶段的损失都相对较高,但随着 epoch 增加,box 与 cls 损失明显快速下降,说明模型在定位与分类方面的学习都较为顺利。 dfl 损失的下降速度较为平稳,但同样呈持续向下趋势,代表边界框分布拟合在逐渐改善。整个训练过程中没有出现损失反弹或剧烈震荡,显示出良好的收敛性。2. 验证损失的稳定性 验证损失在前几个 epoch 略有波动,但中后期进入稳定区间,没有出现随训练继续而升高的趋势。 box、cls、dfl 三项验证损失都维持在相对平稳的范围内,尽管数值并非非常低,但并没有随着训练进行而逐渐恶化。 这表明模型并未在训练后期产生明显的过拟合现象,验证数据与训练数据之间的分布差异并未导致性能下降。3. 精度与召回的演变 精度在训练过程中持续提升,从极低水平快速上升,到训练末期已经达到较高的准确性,这反映模型在减少误检方面表现出色。 召回表现则略显弱势,虽然有增长,但改善速度不及精度,这说明模型在检测目标时倾向于“宁可漏掉,也不误报”。 整体来看,模型目前更偏向高精度、相对较低召回的策略,因此漏检仍是主要不足点。4. mAP 指标的进步情况 mAP50 与 mAP50-95 都呈现稳定上升趋势,尤其是在前半段训练中提升较为明显。 进入大约30epoch 以后,两项 mAP 增长开始放缓,训练进入平台期,这属于典型的收敛过程。 尽管如此,最终的 mAP 水平相比初始阶段仍有显著提升,说明模型整体检测能力在整个训练过程中获得了有效优化。5. 学习率调度对训练的影响 学习率从初始阶段开始逐渐下降,衰减过程平滑,没有出现跳变或过冲。 在训练后期,学习率下降到较低水平,使得模型能够在稳定状态下继续微调,从而避免震荡与过拟合问题。 这种平滑衰减策略对于稳定损失曲线和 mAP 提升起到了关键作用。 整体总结 整个训练过程表现稳健,训练损失持续下降,验证损失平稳无恶化,说明模型已经稳定收敛且没有明显过拟合。 精度高于召回,意味着模型很“稳”,但对小目标或边缘样本仍可能存在漏检,需要通过数据增强或类别样本平衡进一步提高召回率。 mAP 指标在整个训练中稳步增长,最终达到较理想水平,但后期提升缓慢,可能需要增加训练轮数、增强数据或进行超参数微调来推动进一步提升。 学习率调度也发挥了有效作用,使训练过程稳定、可控。我们的检测系统可以用在的应用场景:
1. 食品加工厂与仓储中心
在食品加工、冷链物流与大中型仓储环境中,老鼠活动会直接造成食品污染与货物损坏。系统能够对仓库内部的实时画面进行连续监控,一旦发现老鼠立即报警并记录证据,帮助企业快速定位问题区域,从而在源头减少食品安全隐患。
2. 餐饮后厨与生鲜超市
餐饮后厨、熟食区、肉类处理区以及生鲜超市对卫生要求极高,但也是鼠害高发地。系统通过摄像头实时监控关键区域,即使在夜间灯光不足的条件下仍能准确识别老鼠,有助于店铺进行持续监控、查找防鼠漏洞,并满足卫生监管要求。
3. 居民小区与老旧建筑群
老旧社区、地下停车场、垃圾投放点等区域往往难以长期人工监控。系统可部署在固定监控点,通过自动化处理减少人工成本,并结合 DeepSeek 的风险分析能力,对高发区域进行标注,提示物业加强检查或采取防护措施,提高小区整体环境卫生。
4. 农场、粮仓与农业生产场景
农场、畜牧区、粮仓等场景中,老鼠会破坏饲料、传播疾病,影响动物健康。系统能长期守控粮食储藏区、饲料库房等,及时捕捉老鼠活动轨迹,为农业生产者提供可视化的数据依据,帮助制定更精准的驱鼠或防护策略。
5. 医院、实验室与公共卫生场所
医疗机构与实验室对卫生环境的要求极高,尤其是涉及药品、样品与实验动物的区域。系统能在无人时段保持全天候监测,及时发现环境中的老鼠入侵问题,有效降低实验污染与安全事故风险。
6. 地下管廊、地铁站与城市公共设施
城市地下设施空间封闭且复杂,是老鼠活动的重要通道,人工巡检难度大。系统可以依托现有监控覆盖,将检测模块嵌入视频流中,实现自动识别与报警,并结合 DeepSeek 对异常区域进行智能分析,对城市公共安全运维团队具有重要价值。
7. 智慧城市与数字管理平台集成
系统具备数据输出与智能分析能力,能够与智慧城市、城市大脑、防疫管理系统等平台集成。通过标准化的数据接口,系统持续提供检测事件、热力分布、高发时间段等信息,为城市级治理提供数字化依据,形成自动化防鼠系统。
五.项目运行环境
本项目名称为yolov8--mouse-detection
1.项目依赖
博主是在Windows电脑上使用Python3.8开发的本系统,建议大家使用的Python版本别太高。
其中项目依赖为:
PyQt5==5.15.11QtAwesome==1.3.1torch==2.4.1torchvision==0.19.1Pillow==9.3.0pyqtgraph===0.13.3PyQtWebEngine==5.15.5 opencv-python==4.10.0.82ultralytics==8.3.234Requests==2.32.5pandas==2.0.3numpy==1.24.4Markdown==3.4.4我已经整理到了requirements.txt,大家直接使用命令pip install -r requirements.txt
即可一键安装项目依赖,其中的torch和torchvision只要匹配即可,不一定非要和博主开发环境的版本一致。
2.项目结构
很多小伙伴担心拿到代码后项目看不懂,这个大家不必担心,我们采用文件+类名对相关功能进行了模块化定义,大家见名知意。
下图博主采用tree命令生成了文件、目录树
tree"D:\projects\gitee\2025\yolov8--mouse-detection"/f /aD:\PROJECTS\GITEE\2025\yolov8--mouse-detection|.gitignore|main.py(程序入口)|record.txt(开发记录)|requirements.txt(项目依赖)||+---script|create_qrc.py|+---src(源代码核心目录)|+---conf(配置内容)|||icon_conf.py|||style_conf.py|||system_conf.py|||test_data.py|||__init__.py|||+---engine(核心引擎)||engines.py||__init__.py|||+---resource(资源目录)|||resource.qrc|||resource_rc.py|||__init__.py|||||\---imgs||ai.svg||bg.jpg|||+---threads(线程、信号总线)||main_threads.py||signal_bus.py||__init__.py|||+---utils(工具方法、工具类)||custom_utils.py||user_manager.py||__init__.py|||\---widgets(组件目录)|base_widgets.py|custom_pages.py|custom_widgets.py|main_page.py|unique_widgets.py|__init__.py六.总结
基于 PyQt5 + YOLOv8 + DeepSeek 打造的老鼠检测系统,是一款面向实际应用场景的智能视觉平台,融合了实时监测、图像识别、数据分析、可视化与人机交互等多项能力,为实验室、仓储环境、食品工厂以及农牧场的鼠患监控提供高效、稳定、自动化的技术支撑。系统以 PyQt5 构建主界面框架,通过模块化的页面管理和清晰的交互布局,让用户在图像检测、视频检测、实时流检测与摄像头监控之间自由切换,所有操作逻辑都在流畅的窗口组件中无缝完成。YOLOv8 作为核心检测模型,通过多线程架构与 DetectThread 深度结合,实现了对图像与视频帧的高速推理;无论是本地图片、录制视频,还是 RTSP/RTMP 实时流,系统都能在稳定的播放线程控制下保持高清处理与持续识别,并以标注框、类别名称、置信度等直观结果呈现目标情况。
除了基础检测功能,系统还提供完整的数据导出能力,包括 CSV、Excel、TXT 多格式落盘,支持快速生成检测日志,使每次监测都有迹可循。同时内置 GPT 智能评估模块,可自动根据检测结果生成分析结论,辅助用户理解异常情况、识别潜在风险,并提供策略性建议。自带可视化组件能够基于识别数据生成统计图表,使老鼠活动密度、区域分布、出现频率等信息更加直观。系统还具备用户管理、配置调参、实时清屏、线程自动管理等配套机制,确保在长时间运行下依然稳定可靠。整体架构充分利用多线程与事件驱动优势,将前端交互、模型推理与后端逻辑有机结合,形成一套专业、实用、具有扩展能力的智能鼠害检测解决方案。
本次给大家介绍了我使用PyQt5+YOLOv8+DeepSeek的老鼠检测系统,本系统功能强大,支持多种数据源输入,包含多种用户交互按钮以及模式,内置数据可视化方案、大模型AI加持,是您学习、工作使用的不错选择!
需要代码的朋友可以点击箭头下方的二维码加我好友,欢迎您了解!
