融合图像、文本与语音三种模态的垃圾分类系统,采用YOLOv8目标检测模型与MobileNet轻量级卷积神经网络进行图像识别,结合基于关键词匹配与语义规则分析的文本处理
第1章 绪 论
1.1 研究背景
随着城镇化的快速推进,我国城市生活垃圾产生量持续攀升。住建部相关统计显示,全国城市生活垃圾年清运量已超过2.4亿吨,且仍保持增长态势。尽管自2019年起多地强制实施生活垃圾分类,但居民源头分类准确率长期徘徊在较低水平,部分试点城市投放正确率不足五成。究其原因,除公众认知不足外,分类过程的繁琐性与认知成本是重要阻碍。因此,借助智能技术降低分类门槛、提升投放准确率,成为环境工程与计算机应用领域共同关注的课题。
当前,智能垃圾分类研究主要集中在单一图像识别路径上。一些学者利用卷积神经网络对垃圾图片进行分类,取得了较高的实验精度;另有研究尝试将语音识别或文本语义分析引入分类场景。然而,这些工作大多停留在单模态实验阶段,其不足也日渐明显:基于图像的方案对拍摄条件、物体遮挡和堆叠混放等复杂情况适应性差,用户拍照操作本身也增添了使用负担;而纯语音或文本方式虽交互轻便,却难以精准描述未知物品,误判风险较高。实际上,日常生活中人们感知垃圾往往综合视觉、语义等多种信息,单一通道的缺失极易导致决策偏差。前人尚未形成将图像、语音、文本三模态有机融合并部署为易用系统的完整方案。
针对上述局限,本文着眼于多模态信息融合与轻量化部署的交叉点,尝试构建一种融合图像、语音、文字三种交互方式的智能垃圾分类系统。系统以YOLOv8和MobileNet实现图像端识别,结合关键词匹配与语义规则进行文本分析,并利用语音转文字通道接入语音信号。为处理多源信息间的互补与冲突,引入了基于置信度阈值、模态一致性检验与类别得分综合判定的分层融合决策机制,以期在保证准确率的前提下适配多变的现场环境,提供更加自然、实用的垃圾分类辅助工具。
就选题意义而言,本研究具有一定的理论探索与应用实践双重价值。从理论层面看,当前多模态融合在垃圾分类这一垂直领域的应用尚属起步,本文提出的分层融合策略丰富了信息融合决策模式,可为后续涉及多源感知的环保系统设计提供参考。从专业学科角度出发,工作综合了目标检测、自然语言处理与人机交互界面设计,体现了计算机技术解决环境问题的跨学科特点。在实践意义上,所实现的系统以Web应用形式呈现,支持手机、平板等常见设备访问,操作界面友好,能够直接服务于社区、校园及家庭场景,有助于将分类知识普及转化为可执行的辅助行为。随着智慧城市与物联网基础设施的完善,此类多模态分类能力完全可以移植到智能垃圾桶、公共服务终端等载体中,对于从源头改善垃圾分类质量、促进资源循环利用具有实际推广价值,也契合绿色低碳发展的社会趋势。
1.2 国内外在该方向的研究现状及分析
围绕基于深度学习的垃圾分类问题,国内外学者已在图像识别、目标检测及多模态融合等方面开展了大量探索。
在单模态图像识别领域,卷积神经网络相关方法始终占据主导。王峰等针对多类别、多物体场景,将MobileNet融合进YOLOv5目标检测算法,并引入卷积注意力模块,显着提升了密集堆叠场景下的检测精度。邓明等从轻量化角度出发,采用MobileNetV3构建分类系统,有效降低了模型参数规模,为移动端部署提供了可行路径。在目标检测方向上,研究者持续迭代网络结构以满足工程化需求。赵晓波等以改进YOLOv5s为骨干,引入密集连接与GhostConv模块,缓解了复杂背景与多尺度目标下的精度损失问题。徐志远等则基于YOLOv8框架进行垃圾分类模型开发,并将其部署于边缘侧设备,完成了从模型训练到工程落地的全流程验证。在模型效率优化方面,周强等提出了深度可分卷积结合多通道注意力的快速分类模型,通过降低卷积运算参数规模减少训练耗时,同时保持较高的识别精度。
在多模态融合方向的探索中,国内研究近年来有所推进。李志等面向可回收垃圾提出了一种多模型决策融合方法,选取GoogLeNet、VGG19_BN与ResNet18作为三个独立决策分支,通过投票机制整合各网络输出,取得了优于单一模型的分类效果。刘畅等设计了融合语音交互与图像识别的多功能垃圾分类系统,初步验证了多通道信息互补的可行性。在文本语音结合路径上,陈文轩等基于决策树算法构建了文本语音混合模式的垃圾分类模型,通过语料库提取垃圾有效特征,在家庭场景下获得了较好的分类效果。然而,上述多模态研究大多侧重于特定双模态的组合,尚缺乏同时融合图像、语音、文本三种模态的完整方案。
国际上,多模态垃圾分类的研究同样日趋活跃。Zhu等针对边缘设备提出了一种基于多传感器数据融合的轻量级垃圾分类方法,采用自适应加权融合算法整合图像分类结果与重量、金属传感器数据,在自建数据集上实测平均分类准确率达89.7%,单次分类平均耗时130 ms,较基于MobileNetV3的嵌入式方案准确率提升6.5%。Cazarin构建了包含两万张垃圾图像及对应文字标注的公开数据集,并提出Reverse Cross Attention多模态模型,实验表明融合图文信息相比单模态最优结果平均提升两个百分点。在少样本学习层面,有研究采用CLIP视觉语言模型提取特征并结合最近邻分类器,在TrashNet数据集上达到97.74%的分类准确率,进一步验证了多模态模型在数据稀缺条件下的泛化潜力。此外,Stanisavljevic等提出了Hybrid-modal Fusion Waste Classification Network策略,在TrashNet等公开数据集上Top-1准确率分别达到96.88%和98.89%,有效验证了混合模态融合的优越性-。Mao等设计了一种融合YOLOv8的图像通道与自然语言文本通道的多模态城市垃圾分类系统,利用自适应加权融合机制整合视觉与语义信息,在复杂场景下取得了比纯图像模型更稳健的分类表现。
从已有研究可以看出,基于深度学习的图像分类方法已趋于成熟,而多模态融合在该领域的应用仍处于起步阶段。当前大部分多模态工作停留于双模态结合或单一融合策略层面,尚未形成能够同时处理图像、语音、文本三种输入并根据模态质量自适应决策的完整融合架构。本文在此基础上,提出分层融合决策机制,将YOLOv8图像识别、文本关键词语义匹配与语音识别三通道有机结合,为解决实际场景中多模态信息协同分类问题提供新的思路。
1.3 主要研究内容
本文围绕多模态信息融合的垃圾分类问题,从模型构建、融合决策与系统实现三个层面展开研究。在单模态处理方面,图像通道采用YOLOv8作为目标检测主干网络,结合MobileNet轻量级分类网络完成从区域定位到细粒度识别的两级处理,并针对垃圾物品堆叠、形变等复杂情况引入数据增强策略;文本通道基于自建的关键词库与语义规则集,通过逐层匹配机制从用户自然语言描述中提取有效物品名称与材质属性,再经由加权统计算法预测所属类别;语音通道则借助豆包API实现录音到文字的转换,并复用文本处理管线完成分类。在多模态融合层面,针对不同通道信息质量参差不齐以及可能出现的类别冲突,提出一种分层决策融合方法:当某模态置信度超过设定阈值时直接采纳其输出,以降低计算开销;在多模态均有效但结论不一致时,先计算类别一致性系数,若趋同则按预设的图像、文本、语音权重进行加权融合,若分歧较大则通过综合考虑基础置信度与关键词类别关联得分的方式判定最终类别。在系统集成方面,采用Flask框架搭建Web服务,以SQLite持久化存储用户上传的图像、识别文本和结果记录,前端基于Bootstrap构建响应式操作界面,支持拍照上传、文字输入和语音录入三种交互方式,并提供历史记录检索与分类统计功能,从而将多模态分类能力转化为可实际操作的轻量化垃圾分类辅助工具。
第2章 相关技术与理论
2.1 YOLOv8目标检测
YOLOv8是由Ultralytics推出的单阶段目标检测模型,其架构延续了YOLO系列端到端回归的范式,同时引入无锚框机制、解耦检测头以及正负样本分配策略等改进。在垃圾分类场景中,目标检测的任务在于从输入图像中定位瓶罐、纸张、电池等物品的边界框,并初步判断其所属类别。
YOLOv8的损失函数由边界框回归损失、分类损失和置信度损失三项构成。边界框回归采用CIoU(Complete Intersection over Union)作为优化目标。对于预测框B与真实框Bgt,式中,IoU表示预测框与真实框的交并比,ρ(·)为两框中心点的欧氏距离,c为最小包围框的对角线长度,α为权重系数,v用于衡量宽高比的一致性。分类损失与置信度损失均采用二元交叉熵函数。网络训练过程中,三部分损失加权求和,以确保位置精度、类别准确性与目标置信度的均衡优化。
为进一步提升对堆叠垃圾的检测效果,本系统在YOLOv8的数据预处理阶段引入Mosaic增强与随机缩放、翻转等策略,模拟物品相互遮挡的复杂场景,从而增强模型的鲁棒性。
2.2 MobileNet轻量级分类网络
对YOLOv8截取的区域图像,系统利用MobileNet进行二次分类,以细化识别粒度。MobileNet的核心创新在于深度可分离卷积,它将标准卷积分解为深度卷积和逐点卷积两步进行,在保持特征提取能力的前提下大幅削减参数量与计算量。
设输入特征图尺寸为D_F×D_F×M,输出特征图尺寸为D_G×D_G×N,两式比值约为1/N+1/D_K^2,当卷积核尺寸为3×3时,计算量可缩减至标准卷积的1/8至1/9。本系统选用MobileNetV2,在其倒残差结构与线性瓶颈的配合下,进一步保证了分类精度。
2.3 文本关键词提取与语义分析
文本通道负责从用户输入的描述中提取有效物品名称与属性,继而推断垃圾类别。系统事先构建了包含塑料瓶、电池、剩菜等常见物品及其同义词、关联词的关键词库,并划分了材质、用途等语义属性标签。
文本处理流程分为两个阶段:关键词精确匹配与类别统计加权。设用户输入文本T,经过分词与实体对齐后,得到关键词列表K={k_1,k_2,…,k_m}。每个关键词k_i对应一条物品记录,该记录包含其所属垃圾类别c(k_i)∈{1,2,3,4}及匹配权重w_i。匹配权重由匹配方式决定:完全匹配物品名称权重为1.0,子串匹配或同义词匹配权重为0.8,材质属性匹配权重为0.5。
最终取最高得分类别作为文本通道的预测输出,同时将S_j归一化得到置信度。为避免否定词语干扰,系统额外维护排除词列表,当文本中出现“不是”“不含”等否定词时,对应物品的权重将被置零。
2.4 语音识别处理
语音通道利用豆包API将用户录音转换为文字,后续复用文本处理管线完成分类。豆包API基于端到端自动语音识别技术,能够直接对音频流进行编码并输出识别文本。由于语音识别结果往往包含口语化停顿、冗余词缀,系统对转写后的文字进行了去停用词和口语纠正常规化处理,以提高下游关键词匹配的成功率。
2.5 多模态分层融合决策
多模态融合是本系统的核心环节,旨在综合图像、文本、语音三个通道的结果,形成比单模态更为稳健的最终分类。单一模态在面对信息缺失或强烈噪声时容易出现误判,而各通道在特定场景下的性能优势可以互补。
系统提出分层融合决策机制,分为三个决策层级:
(1)高置信度优先采纳。若某一模态的置信度超过预设阈值θ(推荐值0.75),则直接将该模态的输出作为最终结果,以简化计算并利用高确定性信息。当图像通道置信度达到此条件时,系统直接采纳,这符合垃圾分类中视觉信息相对可靠的经验判断。
(2)多模态一致性加权融合。当所有可用模态置信度均未超过阈值时,检查各模态输出类别的一致性。设图像、文本、语音三个通道预测的类别分别为c_img、c_txt、c_sp,若A=1(所有通道一致),则直接输出该类别,并将融合置信度取各通道置信度的加权平均,权重采用预设的α=0.6(图像)、β=0.25(文本)、γ=0.15(语音)。在部分一致情况下(例如两通道一致),融合类别取多数类,冲突融合。当三个通道类别均不一致(A=0)时,进入冲突融合阶段。此时不再简单依赖置信度,而是综合基础置信度与关键词类别关联度得分。对每个候选类别j,其中,w_m为模态权重,与上文一致;P_m(j)为该通道对类别j的置信度;R_{kw}(j)为文本关键词与类别j的关联度得分,λ为关联度加权系数,设为0.15。R_{kw}(j)通过统计用户描述中提取的关键词与类别预定义关键词集合的交集覆盖率计算得出。最终选择S_{final}(j)最高的类别作为输出,其置信度取S_{final}(j)与各通道最高置信度的调和平均。
该分层机制根据信息可靠程度自适应选择决策策略,既避免了简单加权导致的高置信度信息被稀释,又在冲突时通过引入语义先验纠正纯粹的置信度驱动误判,使融合结果更为合理。
2.6 系统实现框架
系统采用Flask作为Web后端框架,利用其蓝图机制组织路由,并通过Flask-Login管理用户会话。数据持久化选用SQLite数据库,存储用户信息、分类记录等。前端页面采用Bootstrap 5响应式布局,以适应手机、平板等多终端访问。Jinja2模板引擎负责将分类结果、历史记录等数据渲染为可视化界面。语音采集端利用Web API的MediaRecorder接口录制音频并转为base64格式上传。整体架构轻量且易于部署,可运行于普通服务器甚至树莓派等边缘设备。
通过上述技术的有机整合,系统实现了从多源感知到智能决策的完整垃圾分类辅助流程。下一章将详述系统各模块的设计细节与实现过程。
第3章 系统分析
3.1 可行性分析
经济可行性方面,本系统基于Python开源生态构建,采用Flask轻量框架与SQLite免费数据库,无需采购商业授权软件;YOLOv8及MobileNet模型在普通服务器或云主机上即可完成推理,硬件投入低。系统旨在降低居民垃圾分类门槛,提升投放准确率,有助于减少后端人工分拣成本和环境污染治理支出,社会效益明显高于开发投入。综上所述,系统从经济上是可行的。
技术可行性方面,目标检测与图像分类已有YOLOv8、MobileNet等成熟模型支撑,语音识别可借助豆包等稳定云API实现,文本处理基于规则与统计方法,无需大规模标注语料;Web端采用Bootstrap响应式框架,前后端交互技术成熟。整体方案在现有技术条件内完全可实现。综上所述,系统从技术上是可行的。
操作可行性方面,用户界面以卡片式布局呈现,提供拍照、文本输入、语音录音三种直观交互方式,操作流程简洁;后台管理仅需启动服务脚本,运维难度低。普通用户无需专业培训即可上手使用。综上所述,系统从操作上是可行的。
3.2 需求分析
3.2.1 业务流程分析
本系统的核心业务为用户通过图像、文本或语音三种途径输入垃圾信息,系统自动进行单通道识别并执行多模态融合决策,最终返回分类结果并留存历史记录。整体流程如图3.1所示。

(1)图像分类业务流程:用户触发拍照或上传图片后,系统先调用YOLOv8对图像进行目标检测,若检测到候选区域则截取传入MobileNet二次分类,输出类别及置信度;若未检出目标则降级为基于规则的粗分类,仍能给出参考结果。处理过程中显示加载状态,完成后将图像识别结果缓存,供融合阶段调用。
(2)文本分类业务流程:用户在文本框输入描述后,系统执行关键词匹配与语义属性分析,依据预设词库识别物品名称、材质及状态,统计各类别匹配得分,按最高累积分确定类别并计算置信度,同时记录提取的关键词列表。
(3)语音分类业务流程:用户点击录音按钮,浏览器采集音频并上传,后端通过豆包API将语音转为文字,经去停用词等预处理后,将该文本送入文本分类模块,获得基于语音内容的类别与置信度。语音识别文本同步回显至界面。
(4)融合决策业务流程:在用户触发“开始分类”后,系统收集已获得的图像、文本、语音各通道结果,进入分层融合决策。首先检查是否存在高置信度单模态输出,若有则直接采纳;否则计算模态间类别一致性,以加权平均或冲突融合算法得出最终类别与综合置信度。融合结果连同各通道详情写入分类记录表,返回前端展示,并提供查看详情与继续分类的入口。
上述流程中,图像、文本、语音各通道可独立运行,也可任意组合,系统根据收到的有效输入类型动态决定融合策略,实现灵活的混合感知分类。
3.2.2 功能需求分析
本系统面向普通用户角色,其核心功能用例如图3.2所示。

(1)图像分类:用户可拍摄或从相册选取垃圾照片,系统对图像进行目标检测与分类,返回候选类别及置信度。
(2)文本分类:提供文本输入框,用户可用自然语言描述垃圾物品,系统提取关键词并推断类别。
(3)语音分类:支持浏览器录音,将语音上传转写为文字后完成分类。
(4)多模态融合分类:在完成一种或多种输入后,用户主主动触发融合决策,系统综合各通道信息输出最终结果,包含类别名称、置信度及推理过程说明。
(5)历史记录查看:以卡片列表形式展示用户过往分类记录,支持按类别或关键词搜索,可点击查看单条记录的完整结果。
(6)分类指南浏览:提供四类垃圾的说明及常见物品示例,帮助用户了解分类标准。
(7)个人统计查看:在首页展示总分类次数、覆盖类别数等简要统计,增强使用反馈。
3.2.3 非功能性需求分析
(1)响应时间:单次图像分类从提交到返回结果应在3秒内完成,文本分类不超过1秒,语音识别加上分类总时长宜控制在5秒以内,确保用户等待感可接受。
(2)分类准确率:对常见非堆叠生活垃圾,单模态图像分类准确率应达到85%以上,融合分类在综合多模态信息后应有所提升。
(3)可靠性:系统应能处理无网络、模型加载失败等异常,具备降级策略(如规则兜底),保证服务不中断。
(4)易用性:界面布局清晰,主流程按钮明显,操作步骤不超过三步;提供流程指引和错误提示,使不同年龄层用户均可顺畅使用。
(5)可扩展性:采用蓝图组织路由功能模块间松耦合,新增分类渠道或更换模型时不影响核心融合逻辑。
(6)存储空间:SQLite数据库体积轻量,单条分类记录占用存储极小,支持长期历史积累。上传的图片采用压缩保存策略,避免服务器磁盘压力过大。
第4章 系统概要设计
4.1 系统总体设计
4.1.1 系统架构设计
本系统采用分层架构组织各功能模块,按数据流动方向自底向上划分为数据存储层、业务服务层、路由控制层与前端展示层四个层次。系统架构如图4.1所示。
数据存储层位于架构底层,负责持久化用户信息与分类记录。该层以SQLite关系型数据库为核心,辅以静态文件系统存储用户上传的垃圾图片与音频。SQLite作为嵌入式数据库无需独立服务进程,数据文件与应用同目录部署,便于整体迁移与备份。
业务服务层封装了图像分类、文本处理、语音识别与多模态融合四类核心算法模块。图像分类模块集成了YOLOv8目标检测器和MobileNet分类网络,对外暴露统一分类接口;文本处理模块维护关键词库与语义规则集,提供关键词提取与类别统计功能;语音识别模块封装豆包API调用与音频预处理逻辑;多模态融合模块实现基于置信度分层决策的融合算法,接收各通道结果并输出最终分类。各模块均设计为独立服务单元,通过Python类实例化调用,耦合仅发生在融合阶段的数据汇集处。
路由控制层基于Flask蓝图机制将请求按功能划分为认证、页面与API三类路由。认证蓝图处理登录注册请求并管理用户会话;页面蓝图负责首页、分类页、历史记录页等视图渲染;API蓝图提供图像分类、文本分类、语音分类及融合分类等RESTful接口,接收前端AJAX请求并返回JSON数据。该层同时承担请求校验与异常拦截职责,通过注册全局错误处理器统一返回404与500状态页面。
前端展示层采用Bootstrap 5响应式框架构建用户界面,通过Jinja2模板引擎动态渲染数据。页面交互基于原生JavaScript与Axios库实现异步请求与局部刷新,避免整页重载带来的体验割裂。语音录入端调用浏览器MediaRecorder接口采集音频,图像上传支持拖拽与点击两种方式。该层与路由控制层之间通过HTTP/HTTPS协议传递JSON数据与表单文件,实现前后端完全分离的数据交互模式。
上述四层架构按数据流方向依次传递信息:用户操作触发前端请求,经路由控制层分发至对应业务服务,服务层处理完成后将结果写回数据库并返回响应,前端解析JSON后渲染结果。分层设计降低了模块间耦合,使得更换图像模型或新增识别通道时无需修改路由与前端代码,符合软件工程中高内聚低耦合的设计原则。

图4.1 系统架构图
4.1.2 功能模块设计
本系统围绕多模态垃圾分类的核心任务,将整体功能划分为图像分类、文本分类、语音分类、多模态融合决策、历史记录管理、分类指南与个人统计七个功能模块。系统功能模块如图4.2所示。

图像分类模块支持用户拍照或从设备选取图片上传,系统调用YOLOv8与MobileNet模型进行目标检测与分类识别,返回候选类别、置信度及对应颜色标识,同时提供检测框可视化展示。文本分类模块提供多行文本输入区域,用户以自然语言描述垃圾物品后,系统提取关键词并与预设词库匹配,统计各垃圾类别得分后输出分类结果。语音分类模块集成浏览器录音与豆包云端识别能力,用户点击麦克风按钮开始录入,松开后自动上传音频并转写为文字,继而复用文本分类管线完成类别推断。
多模态融合决策模块是各通道信息的汇聚点。系统根据当前有效输入的类型与置信度分布,自适应选择高置信度优先采纳、模态一致性加权融合或冲突综合判定三种策略之一,输出最终类别、综合置信度与推理过程说明。该模块确保在仅有一种输入时仍能独立运行,在多通道并存时充分利用互补信息提升准确性。
历史记录管理模块以卡片列表形式展示用户过往分类记录,每条包含缩略图、类别名称、置信度条及时间戳。支持按类别名称或关键词检索,点击可进入详情页查看分类来源与各通道置信度。提供单条删除与批量清空功能。分类指南模块展示四类垃圾的定义、常见物品示例及投放小贴士,采用分栏卡片布局便于用户学习查阅。个人统计模块在首页以数字卡片呈现总分类次数与覆盖类别数的汇总数据,并列出最近几条分类记录的简要信息。
各模块在功能上相互独立又通过融合模块形成统一流程,用户可自由组合任意输入方式完成任务,体现了系统的灵活性与实用导向。
4.2 数据库设计
4.2.1 数据关系设计
本系统采用关系型数据库SQLite存储数据。根据业务分析,系统涉及两类实体:用户与分类记录。一名用户可产生多条分类记录,每条分类记录仅归属于一名用户,两者之间为一对多关系。用户表以自增主键id_users为唯一标识,分类记录表通过外键user_id与用户表建立关联。外键约束确保删除用户时同步清理其所属分类记录,保证数据完整性。
4.2.2 数据库表设计
本系统数据库存储用户身份信息与垃圾分类历史数据,核心表包括用户信息表与分类记录表。以下是各表的详细设计信息。
1、users表记录注册用户的身份标识、登录凭据与个人资料。users数据表结构如表4.1所示。
表4.1 users表
|
字段名 |
类型 |
允许为空 |
主键 |
外键 |
描述 |
|
id_users |
INTEGER |
否 |
是 |
否 |
用户唯一标识,自增 |
|
username |
VARCHAR(80) |
否 |
否 |
否 |
用户名,不可重复 |
|
|
VARCHAR(120) |
否 |
否 |
否 |
邮箱地址,不可重复 |
|
password_hash |
VARCHAR(256) |
否 |
否 |
否 |
密码哈希值 |
|
avatar |
VARCHAR(200) |
是 |
否 |
否 |
头像路径,默认值为默认头像 |
|
created_at |
DATETIME |
是 |
否 |
否 |
注册时间,默认当前时间 |
|
last_login |
DATETIME |
是 |
否 |
否 |
最后登录时间 |
|
is_active |
BOOLEAN |
是 |
否 |
否 |
账户启用状态,默认是 |
username字段与email字段均设置唯一约束,确保注册时用户名与邮箱不重复。password_hash字段采用werkzeug内置哈希算法加密存储,不保存明文密码。
2、classifications表记录每次多模态垃圾分类的完整信息,涵盖图像、文本、语音各通道的原始结果与融合后的最终分类。classifications数据表结构如表4.2所示。
表4.2 classifications表
|
字段名 |
类型 |
允许为空 |
主键 |
外键 |
描述 |
|
id |
INTEGER |
否 |
是 |
否 |
记录唯一标识,自增 |
|
user_id |
INTEGER |
否 |
否 |
是 |
所属用户ID,外键关联users.id_users |
|
image_path |
VARCHAR(256) |
是 |
否 |
否 |
上传图片的存储路径 |
|
image_category |
VARCHAR(50) |
是 |
否 |
否 |
图像通道识别的垃圾类别ID |
|
image_confidence |
FLOAT |
是 |
否 |
否 |
图像通道置信度,默认0.0 |
|
image_candidates |
TEXT |
是 |
否 |
否 |
图像候选类别列表,JSON字符串 |
|
text_keywords |
TEXT |
是 |
否 |
否 |
文本提取的关键词,JSON字符串 |
|
text_category |
VARCHAR(50) |
是 |
否 |
否 |
文本通道推断的类别ID |
|
text_confidence |
FLOAT |
是 |
否 |
否 |
文本通道置信度,默认0.0 |
|
voice_text |
TEXT |
是 |
否 |
否 |
语音转写的文本内容 |
|
voice_category |
VARCHAR(50) |
是 |
否 |
否 |
语音通道推断的类别ID |
|
voice_confidence |
FLOAT |
是 |
否 |
否 |
语音通道置信度,默认0.0 |
|
fusion_result |
VARCHAR(50) |
是 |
否 |
否 |
融合后的类别名称 |
|
fusion_confidence |
FLOAT |
是 |
否 |
否 |
融合后的综合置信度,默认0.0 |
|
fusion_method |
VARCHAR(20) |
是 |
否 |
否 |
融合采用的决策方法标识 |
|
final_category |
VARCHAR(20) |
否 |
否 |
否 |
最终判定类别ID |
|
final_category_name |
VARCHAR(50) |
是 |
否 |
否 |
最终判定类别中文名称 |
|
final_color |
VARCHAR(20) |
是 |
否 |
否 |
最终类别对应的颜色编码 |
|
created_at |
DATETIME |
是 |
否 |
否 |
分类记录创建时间,默认当前时间 |
user_id字段建立外键约束并创建索引,便于按用户维度快速检索分类历史。image_candidates与text_keywords字段存储JSON格式字符串,可灵活序列化可变长度的候选列表与关键词数组。各通道字段均允许为空,支持用户在部分模态缺失时仍能完成分类并保存记录。
4.3 YOLO深度学习算法设计
本研究针对城市生活垃圾分类的实际需求,将垃圾识别任务定义为基于深度学习的目标检测与多分类问题。算法需要同时完成两个子任务:一是定位图像中垃圾目标的位置,二是判定该目标所属的具体垃圾类别。
依据《生活垃圾分类标志》国家标准及实际应用场景,本算法将垃圾划分为四大类,并在每一大类下细分若干子类,共计60个具体垃圾类别。四大类别划分如下:
表4-3 垃圾信息表
|
大类名称 |
常见包含物举例 |
类别编码 |
|
可回收物 |
塑料瓶、玻璃杯、纸张、金属罐、衣物等 |
0 |
|
厨余垃圾 |
果皮、剩菜、菜叶、蛋壳、茶渣等 |
1 |
|
有害垃圾 |
电池、过期药品、废灯管、杀虫剂等 |
2 |
|
其他垃圾 |
纸巾、一次性餐具、尘土、破旧陶瓷等 |
3 |
模型在推理阶段输出每个检测框的坐标信息、所属子类标签及其置信度分数,再映射至对应的四大类别,最终为用户提供明确的分类结果与投放指引。
4.4 算法整体架构
本算法基于YOLOv8目标检测框架进行构建,整体架构遵循“输入—特征提取—多尺度融合—检测输出”的数据流向,具体架构如图4-1所示。

图4-1 垃圾分类识别算法架构图
架构各层级功能说明如下:
输入层:接收待检测的垃圾图像,采用自适应缩放技术将图像尺寸统一至640×640像素,并应用Mosaic数据增强策略以扩充训练样本的多样性。
骨干网络: 采用改进的C2f模块堆叠构成,负责提取图像中的边缘、纹理、颜色等基础特征及高层语义特征,生成多尺度的特征图。
颈部网络:基于路径聚合网络结构,对骨干网络输出的多级特征图进行双向融合,强化浅层位置信息与深层语义信息的交互,提升对不同尺寸垃圾目标的检测鲁棒性。
检测头:采用解耦式设计,在融合后的特征图上分别执行边界框回归与类别预测,输出目标的坐标、置信度及60个子类的概率分布。
4.5 数据集构建与预处理
数据是深度学习算法的基础,高质量的数据集直接决定模型的最终性能。本研究所用数据集完全自主构建,包含图像采集、人工标注、数据增强三个核心环节。
4.5.1 图像采集
模型训练采用自定义生活垃圾数据集,统一存放于项目ImageSet目录,严格遵循 YOLOv8 标准数据集格式构建。数据集涵盖可回收物、厨余垃圾、有害垃圾、其他垃圾四大垃圾分类,包含塑料瓶、果皮、电池、纸巾等 60 类常见生活垃圾,总样本数量 1200 张。按照 8:1:1 比例划分为训练集、验证集、测试集,配套标签文件采用 TXT 格式存储目标位置与类别信息。数据集覆盖模糊、遮挡、复杂背景等真实应用场景,保证模型的泛化能力,所有样本数据均用于模型训练,并将训练过程数据归档至runs文件夹。
5.5.2 数据标注
为保障 YOLOv8 垃圾识别模型的训练精度,对数据集中的生活垃圾图像进行标准化标注,图像标注的核心目的是定位垃圾目标的位置信息并划分所属类别,为模型提供监督学习的标签数据,标注质量直接决定模型的特征提取效果与最终识别准确率,标注完成后的可视化对比图像统一保存至result文件夹,便于直观查看标注效果。
本研究采用LabelImg开源标注工具完成图像标注,该工具轻量化、操作简便,可直接导出 YOLO 系列模型所需的 TXT 格式标注文件,完美适配项目数据集规范。标注流程严格遵循标准化步骤执行,首先加载ImageSet/images目录下的训练集、验证集、测试集图像,逐张对画面中的垃圾目标进行矩形框选,标注框紧贴垃圾目标轮廓,避免冗余区域与漏标情况;为标注目标分配类别标签,标签体系严格对应四大生活垃圾类别,分别为可回收物、厨余垃圾、有害垃圾、其他垃圾;最后将标注信息保存为与图像同名的 TXT 文件,存储于ImageSet/labels对应目录,标注文件内包含类别索引与归一化后的边界框坐标信息,完全符合 YOLOv8 模型的输入要求。
标注过程中对模糊、遮挡、多目标叠加的复杂图像进行重点标注,保证各类别样本标注的均衡性,避免因标注偏差导致模型过拟合。标注完成后生成原始图像与标注后图像的横向对比图,左侧为无标注的原始垃圾图像,右侧为带目标边界框与类别标签的标注图像,对比图统一存入result文件夹,可直观呈现标注效果。完整的标注数据集为后续模型训练提供了精准的标签支撑,也是runs文件夹中模型训练指标达标的核心基础。

图4-2 图像标注图
4.5.3 数据划分与增强
标注完成后,将数据集按8:1:1的比例随机划分为训练集、验证集与测试集。训练集用于模型参数学习,验证集用于训练过程中的超参数调整与早停判断,测试集用于最终模型性能评估。
为进一步提升模型的泛化性能与抗过拟合能力,在训练阶段引入在线数据增强策略,包括:
随机水平翻转(概率0.5)
HSV色域变换(色调、饱和度、明度微调)
尺度缩放与裁剪(模拟不同拍摄距离)
Mosaic拼接(四图随机拼接,丰富背景信息)。
4.6 模型训练策略
4.6.1 训练环境与超参数配置
模型训练基于PyTorch深度学习框架及Ultralytics YOLOv8工具包完成,具体软硬件环境与超参数配置如表4-4所示。
表4-4 训练环境与超参数配置表
|
配置项 |
参数值 |
|
操作系统 |
Windows 11 专业版 |
|
CPU |
Intel Core i7-10700 |
|
GPU |
NVIDIA GTX 1660 (6GB显存) |
|
Python版本 |
3.10.11 |
|
深度学习框架 |
PyTorch 2.1.0 + Ultralytics 8.2.0 |
|
基础模型 |
YOLOv8n.pt (预训练权重) |
|
输入尺寸 |
640×640 |
|
批次大小 |
8 |
|
训练轮数 |
100 |
|
初始学习率 |
0.01 |
|
优化器 |
SGD (动量0.937,权重衰减0.0005) |
|
学习率调度 |
余弦退火衰减 |
4.6.2 训练过程
训练启动后,算法自动执行以下步骤:
加载预训练权重:以YOLOv8n在数据集上的预训练模型作为初始化权重,加速模型在垃圾数据集上的收敛速度。
前向传播与损失计算:每批次图像输入网络后,计算第2.1节所述的三部分损失值(定位损失、分类损失、分布焦点损失),并求加权总和。
反向传播与参数更新:通过随机梯度下降优化器更新网络参数,逐步降低损失函数值。
验证评估:每完成一轮训练,在验证集上计算mAP@0.5、精确率、召回率等指标,保存当前最优权重。
早停机制:若连续20轮验证集损失未下降,则自动终止训练,防止过拟合。
训练过程中实时生成的损失曲线、指标曲线、权重文件均自动保存至runs/detect/train/目录下,其中best.pt为验证集表现最优的模型权重,last.pt为最后一轮训练权重。
4.7 算法评估方案
模型训练完成后,需在独立的测试集上进行全面评估。本算法采用目标检测领域的标准评价体系,主要包括以下量化指标:
精确率:衡量模型预测结果中正确目标的比例。
召回率:衡量真实目标中被成功检测出来的比例。
mAP@0.5:在交并比阈值为0.5条件下,所有类别的平均精度均值,是衡量模型综合检测能力的核心指标。
F1分数:精确率与召回率的调和平均值,用于确定最佳置信度阈值。
混淆矩阵:直观展示各类别间的误判情况与背景漏检比例。
所有评估结果将以曲线图与数据表的形式在后续章节详细呈现,以量化验证本算法在生活垃圾识别任务上的有效性与优越性。
第5章 系统实现
5.1 系统开发环境
本系统采用浏览器-服务器结构体系,基于Python Flask框架开发,数据库选用SQLite嵌入式关系型数据库,前端采用Bootstrap 5响应式框架构建用户界面。系统开发环境如表5.1所示。系统部署于普通PC即可运行,无需GPU加速,模型推理均在CPU上完成。开发工具选用Visual Studio Code编辑器,搭配Git进行版本管理,Postman用于API接口调试。语音识别功能依赖豆包云API,需联网调用。
表5.1 系统开发环境表
|
硬件环境 |
软件环境 |
|
CPU:Intel Core i5-12400F 2.5GHz |
操作系统:Windows 11 64位 |
|
内存:16GB DDR4 |
数据库:SQLite 3.42.0 |
|
硬盘:512GB SSD |
Web服务器:Flask 2.3.3 |
|
浏览器:Google Chrome 120 |
|
|
开发环境:Python 3.11.5;TensorFlow 2.13.0;Ultralytics 8.0.200 |
5.2 功能模块实现
本系统的功能实现围绕图像分类、文本分类、语音分类、多模态融合决策与历史记录五大核心模块展开,前后端通过RESTful API进行数据交互。

图像分类模块前端以上传区域为核心交互组件,用户点击或拖拽图片至指定区域后,JavaScript利用FileReader读取文件并生成缩略图预览。点击分类按钮时,前端将图像封装为FormData对象,通过Axios发送POST请求至/api/classify/fusion接口。后端接收到文件后调用save_uploaded_file函数将图片保存至static/uploads/images目录,随后实例化ImageClassifier类,依次执行YOLOv8目标检测与MobileNet二次分类。分类结果包含类别ID、名称、颜色、置信度及候选列表,以JSON格式返回前端。前端解析后更新结果卡片样式,置信度条颜色随比例变化,候选列表以可折叠面板展示。

文本分类模块以多行文本框为载体,用户输入垃圾物品描述后点击提交按钮。前端将文本封装为JSON对象发送至/api/classify/text接口。后端TextProcessor类接收文本后,首先生成统一的文本串,再遍历预设关键词库执行精确匹配与同义词匹配,对匹配到的关键词按所属类别累计得分。为防止否定词干扰,系统额外维护排除词集合,当文本中出现“不是”“不含”等词时将对应关键词权重置零。最终取最高得分类别及归一化置信度返回。

语音分类模块前端利用MediaRecorder接口采集音频,用户按住麦克风按钮开始录音,松开后浏览器将音频数据封装为Blob对象并转为base64编码字符串,通过Axios发送至/api/classify/voice接口。后端VoiceProcessor类接收base64数据后解码写入临时文件,调用豆包语音识别API将音频转为文字,经去停用词处理后送入TextProcessor进行分类,最终将识别文本与分类结果一同返回。前端录音按钮在录音期间切换为脉冲动画,识别文本实时回显于语音区域。
多模态融合决策模块封装在/api/classify/fusion接口中。该接口接收图像文件、文本字符串及音频数据中的任意组合,分别调用各通道模块获取分类结果,随后实例化MultimodalFusion类执行分层融合。融合引擎首先检查是否存在置信度超过0.75的单模态结果,若有则直接采纳;否则计算模态间类别一致性,以预先配置的权重系数执行加权融合或冲突融合。融合结果连同各通道详情一并写入classifications表,返回的JSON中包含最终类别、综合置信度、推理过程文字描述及各通道截断结果。

历史记录模块以卡片网格布局呈现,每条记录展示缩略图、类别标签、置信度进度条及时间戳。前端通过/api/history接口分页获取数据,支持按类别名称前端过滤搜索。点击单条卡片跳转至/result/{id}详情页,该页面展示各通道识别结果、融合决策步骤及原始上传图片。分类页面的重置按钮通过清空表单及隐藏结果区域实现状态重置,继续分类按钮滚动页面至顶部并恢复初始状态。

更多推荐




所有评论(0)