拓冰建站拓冰建站
首页 / 资讯中心 / 正文

YOLO多版本垃圾检测项目详解:源码结构、技术路线、训练指标与PyQt5功能

YOLO多版本垃圾检测项目详解源码结构、技术路线、训练指标与PyQt5功能大家好我是孔一学长。这篇文章完整拆解一套YOLO多版本垃圾检测识别项目。项目包含YOLOv8、YOLO11、YOLO26、YOLO11CBAM四个版本训练目标为37类生活垃圾与常见废弃物并使用PyQt5实现单图、批量图片、视频、摄像头检测以及CSV结果保存。先看运行效果鸡蛋壳测试中左侧具体类别为“鸡蛋壳”垃圾类别为“厨余垃圾”下方两条记录也都带有厨余垃圾字段。换成香蕉皮后两处显示会一起更新。先看这两张图可以直接确认细分类、垃圾大类和表格记录已经同步而不只是检测框能正常绘制。完整运行演示https://www.bilibili.com/video/BV1n3YM6CEVo/视频使用YOLO11界面展示单图、批量、视频、摄像头、四分类字段和结果保存。YOLOv8、YOLO26、YOLO11CBAM保留同样的主要界面流程各自加载对应权重。这组结果来自37类检测之后新增的厨余、有害、可回收、其他垃圾映射。下面再展开项目功能、源码文件、技术路线、数据训练、验证指标和版本边界四分类是本次重点但不是全文唯一主题。1. 项目概览与系统功能完整处理链路是输入图片、文件夹、视频或摄像头画面完成预处理与YOLO推理输出目标框、具体类别、置信度和坐标再把类别ID映射为垃圾大类最后同步写入结果栏、明细表与CSV。四个模型版本使用相同的数据划分和主要界面流程但各自保留代码、权重、训练记录与独立验证指标。这样既可以直接运行某个版本也能做多版本比较或注意力机制改进分析。2. 技术路线先定义两层分类的边界模型的类别空间仍是37类细分类。四分类属于业务层不能直接覆盖模型输出否则会丢失目标的具体名称。层级数据来源示例写入位置细分类模型类别ID与名称鸡蛋壳、香蕉皮、温度计检测框、结果栏、表格垃圾大类waste_category.py映射厨余、有害、可回收、其他结果栏、表格、CSV映射表以类别ID为键查询函数先把输入转换为整数转换失败或键不存在时回退为“其他垃圾”。核心形式如下CLASS_TO_WASTE_CATEGORY{1:厨余垃圾,# 鸡蛋壳12:有害垃圾,# 温度计17:可回收物,# 报纸36:其他垃圾,# 口罩}defget_waste_category(class_id):try:normalized_idint(class_id)except(TypeError,ValueError):return其他垃圾returnCLASS_TO_WASTE_CATEGORY.get(normalized_id,其他垃圾)实际文件保存了37个类别的完整映射这里只保留四个代表项说明结构。3. 在结果记录生成时加入垃圾大类main.py导入统一函数fromwaste_categoryimportget_waste_category程序解析每个检测框时结果记录由“序号、文件路径、识别结果、置信度、坐标”扩展为[序号, 文件路径, 识别结果, 垃圾类别, 置信度, 坐标位置]其中垃圾类别直接由get_waste_category(cl)计算。这个位置很关键单图、批量图片、视频和摄像头最终都汇总到同一种记录结构所以只需要维护一套映射逻辑。数据流图中可以重点观察“模型解析”与“界面展示”之间的分类转换。它不改变权重也不改变模型的37类输出。4. PyQt5功能怎样与结果记录同步仅在结果卡片上增加一个Label还不够。用户点击表格中的历史记录时结果栏也要恢复该行对应的垃圾类别。因此界面改造包含两部分self.tableWidget.setHorizontalHeaderLabels([序号,文件路径,识别结果,垃圾类别,置信度,坐标位置])一部分是ui.py新增label_waste_category_title和label_waste_category另一部分是main.py在清空、写入当前检测、点击表格行时同步维护这个字段。CSV直接导出同一份表格数据不需要额外从字符串二次推断。这里的关键不是单独增加一个显示控件而是让四种输入路径、表格回看和CSV保存都复用同一份结果记录避免不同功能分支出现字段不一致。5. 运行效果与功能验证我会分三层验证。第一层检查映射覆盖从厨余、有害、可回收、其他垃圾各取至少一个类别ID确认函数返回值正确同时测试非法ID的回退。第二层检查状态同步打开图片后查看结果栏和表格点击不同表格行确认垃圾类别随当前行变化清空结果后新增字段也必须被清空。第三层检查四类输入路径单图和批量图片先验证离散结果再测试视频和摄像头连续帧避免某个分支仍在构造旧长度的记录列表。验证点预期结果鸡蛋壳、香蕉皮厨余垃圾温度计、灯泡、药有害垃圾水杯、报纸、易拉罐可回收物口罩、餐巾纸其他垃圾点击表格行结果栏垃圾类别与当前行一致保存CSV独立保留“识别结果”和“垃圾类别”两列6. 数据集、训练参数与四版本指标四分类改造发生在业务层因此没有拿界面功能替代模型验证。项目仍保留37类数据、训练记录和四版最佳权重的独立结果。训练端从myvoc.yaml读取类别和数据路径图像进入模型前完成缩放、Letterbox补边、颜色转换与归一化训练集还使用翻转、颜色扰动等增强扩展场景变化。YOLO主干与检测头负责提取和融合特征train.py完成训练val.py和runs中的结果文件负责独立验证之后才由main.py加载权重进入PyQt5推理链路。清洗后原始图像为3462张增强后为4720张划分为4024张训练图、348张验证图、348张测试图。输入尺寸640batch 16优化器SGD初始学习率0.01四个版本都完成100轮训练。版本PrecisionRecallmAP50mAP50-95YOLOv80.92970.88730.93480.6773YOLO110.89000.90230.92540.6927YOLO260.90030.90460.93250.7151YOLO11CBAM0.88710.89220.94190.7046YOLO26的mAP50-95最高YOLO11CBAM的mAP50最高YOLOv8的Precision最高。CBAM版相对YOLO11的mAP50-95增加约0.01191参数量增加610。上述差异只针对当前数据与训练配置。7. 项目文件、运行入口与适用边界理解四分类功能建议先看waste_category.py、main.py和ui.py复核训练则看myvoc.yaml、train.py、val.py和runs。conda create-ngarbage-yolopython3.11-yconda activate garbage-yolo pipinstall-rrequirements.txt python main.py加载现成权重可在普通电脑演示重新训练更适合使用NVIDIA GPU。若新增或重排模型类别必须同步检查类别ID与四分类映射不能只改中文名称。项目代码获取当前项目已整理四个版本的源码、4720张增强后数据、训练权重、完整runs、PyQt5界面、测试素材和使用说明。项目资料入口https://smallerkong.com/s/cs-yolo-garbage-416814
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门