网络项目毕业设计模板|毕设答辩|毕业设计项目|基于人形机器人的目标识别方法研究及实现

文档标题:基于人形机器人的目标识别方法研究及实现
文档介绍:
- 绪论
随着人工智能、机器人技术和计算机视觉技术的不断发展,人形机器人逐渐从理论研究和实验室环境走向服务、教育、安防、陪护等实际应用场景。与传统移动机器人相比,人形机器人在外形结构、运动方式和交互形式上更加接近人类,因此对环境感知能力提出了更高要求。视觉感知作为机器人获取外部环境信息的重要方式,是人形机器人实现自主决策、人机交互和任务执行的基础。
在人形机器人实际应用过程中,机器人需要对周围环境中的人员和常见物体进行识别。例如,在室内服务场景中,机器人需要识别人员位置以完成交互,需要识别杯子、瓶子、椅子、书、手机等常见目标以辅助完成服务任务。若机器人无法准确感知环境目标,就难以完成后续的路径规划、物品定位、行为决策等功能。因此,研究适用于人形机器人场景的目标识别方法具有较强的现实意义。
传统目标识别方法通常依赖人工设计特征,例如颜色、纹理、边缘和形状等特征,再结合分类器完成识别。这类方法在简单场景下具有一定效果,但面对复杂背景、光照变化、目标遮挡和尺度变化时,鲁棒性较弱。近年来,深度学习方法在目标检测领域取得了显著进展,尤其是 YOLO 系列算法由于具有检测速度快、端到端推理和部署方便等特点,被广泛应用于实时目标检测任务。
YOLOv7 和 YOLOv8 都是 YOLO 系列中较有代表性的目标检测算法。YOLOv7 在检测精度和网络结构优化方面具有较好表现,YOLOv8 则在模型调用、训练部署和推理效率方面更加方便,适合构建实际应用系统。与此同时,为了进一步提升模型对关键目标区域的关注能力,可以在 YOLOv8 基础上引入 CBAM 注意力机制,从而增强模型对通道特征和空间特征的表达能力。
本课题围绕“基于人形机器人的目标识别方法研究及实现”展开,结合实际代码实现,设计了一个基于 YOLOv7、YOLOv8 和 YOLOv8-CBAM 的目标识别系统。系统支持图片、视频和摄像头输入,能够完成目标检测、结果显示、模型切换、检测记录存储和结果导出等功能。通过该系统,可以对不同检测方法在人形机器人目标识别任务中的效果进行比较分析,为后续机器人视觉感知系统的优化提供参考。
目标识别是计算机视觉领域的重要研究方向。早期目标识别方法主要依赖人工特征提取和传统机器学习算法,例如 HOG 特征、SIFT 特征、Haar 特征以及 SVM、Adaboost 等分类方法。这类方法对计算资源要求较低,但特征表达能力有限,通常需要人工设计特征,且对复杂环境的适应能力不足。当目标出现姿态变化、遮挡、尺度变化或光照变化时,传统方法的识别效果容易下降。
随着卷积神经网络的发展,基于深度学习的目标检测方法逐渐成为主流。现有深度学习目标检测算法大致可以分为两类:一类是以 Faster R-CNN 为代表的两阶段检测算法,该类算法先生成候选区域,再对候选区域进行分类和位置回归,通常具有较高检测精度,但推理速度相对较慢;另一类是以 SSD、YOLO 系列为代表的一阶段检测算法,该类算法直接对目标类别和边界框位置进行预测,具有较快的检测速度,更适合实时检测场景。
YOLO 系列算法由于兼顾检测速度和检测精度,被广泛应用于机器人视觉、智能交通、安防监控、工业检测等领域。YOLOv7 通过网络结构优化和训练策略改进,提高了目标检测性能,在精度和速度之间取得了较好平衡。YOLOv8 进一步优化了模型结构和工程接口,支持更加便捷的训练、推理和部署流程,在实际应用系统中具有较高的使用价值。对于人形机器人目标识别任务而言,YOLOv8 的轻量化模型能够在普通计算设备上实现较好的实时检测效果,因此适合作为系统的主要检测方法。
在人形机器人和服务机器人领域,视觉目标识别技术主要用于环境理解、人员检测、物品定位和人机交互等任务。国外相关研究较早将深度学习方法应用于机器人视觉感知,通过目标检测、语义分割和目标跟踪等技术提升机器人对环境的理解能力。国内在服务机器人、巡检机器人和智能交互机器人等方向也开展了大量研究,基于深度学习的视觉检测方法逐渐成为机器人感知系统的重要组成部分。
但是,从实际应用角度来看,人形机器人目标识别仍然存在一些问题。首先,机器人应用环境通常较为复杂,目标可能受到遮挡、光照变化和背景干扰影响。其次,不同检测模型在速度和检测效果之间存在差异,需要结合具体场景进行对比选择。最后,部分研究更侧重算法本身,缺少完整的软件系统实现和实验数据管理功能。因此,本文在 YOLOv7 与 YOLOv8 对比的基础上,引入 YOLOv8-CBAM 改进思路,并设计实现一个具备图形界面、模型切换、检测记录保存和结果导出的目标识别系统。
本文以人形机器人室内服务场景为研究对象,围绕目标识别方法与系统实现展开研究。结合现有代码结构,本文主要研究内容如下。
首先,分析人形机器人目标识别任务需求。根据室内服务场景特点,确定系统需要识别的主要目标类别,包括人、杯子、瓶子、椅子、书和手机等常见目标。同时,系统需要支持图片检测、视频检测和摄像头实时检测,以满足不同输入场景下的目标识别需求。
其次,研究 YOLOv7 与 YOLOv8 目标检测方法。本文通过统一检测器接口对 YOLOv7 和 YOLOv8 进行封装,使系统能够在不同模型之间进行切换。结合测试样本,对两种模型的检测结果、推理时间和 FPS 等指标进行对比分析,从而评估不同模型在人形机器人目标检测任务中的适用性。
再次,研究基于 YOLOv8-CBAM 的目标识别方法。针对复杂环境下可能出现的目标遮挡、小目标识别不稳定和关键特征表达不足等问题,本文在 YOLOv8 基础上引入 CBAM 注意力机制,分析其通道注意力和空间注意力对目标特征提取的作用,并设计相应的测试与对比实验。
最后,设计并实现人形机器人目标识别系统。系统采用 Python 作为主要开发语言,结合 PyQt5 实现图形用户界面,使用 OpenCV 完成图像和视频处理,使用 SQLite 对检测记录进行存储,并支持将检测结果导出为 JSON、CSV 和 Markdown 等格式。系统实现了模型选择、参数设置、目标检测、结果显示、检测记录保存和实验结果分析等功能。
通过上述研究,本文实现了一个基于 YOLO 系列算法的人形机器人目标识别系统,并对 YOLOv7、YOLOv8 和 YOLOv8-CBAM 方法进行了分析和验证。该系统能够为人形机器人视觉感知任务提供基础支持,也为后续模型优化和机器人实际部署提供一定参考。
目标检测是计算机视觉领域中的重要研究方向,其主要任务是在图像或视频中识别出目标所属类别,并确定目标在图像中的具体位置。与图像分类任务不同,目标检测不仅需要判断图像中是否存在某类目标,还需要通过边界框标出目标所在区域。因此,目标检测同时包含目标分类和目标定位两个过程。
在人形机器人应用场景中,目标检测技术是机器人环境感知的重要基础。机器人通过摄像头获取外部环境图像后,需要对人员、杯子、瓶子、椅子、书、手机等常见目标进行识别,从而为后续的人机交互、路径规划、物品定位和任务执行提供依据。由于人形机器人通常处于动态环境中,检测算法不仅需要具备较高的识别准确率,还需要具有较好的实时性。
传统目标检测方法主要依赖人工设计特征,例如颜色、纹理、边缘、HOG 特征等,再结合分类器完成目标识别。这类方法实现较为简单,但特征表达能力有限,对复杂背景、光照变化、目标遮挡和尺度变化的适应能力较弱。随着深度学习的发展,基于卷积神经网络的目标检测方法逐渐成为主流。
目前,深度学习目标检测算法通常可以分为两类:两阶段检测算法和一阶段检测算法。两阶段检测算法以 Faster R-CNN 为代表,通常先生成候选区域,再对候选区域进行分类和位置回归,检测精度较高,但推理速度相对较慢。一阶段检测算法以 SSD 和 YOLO 系列为代表,直接在输入图像上预测目标类别和位置,检测速度较快,更适合实时检测任务。本文所研究的人形机器人目标识别系统需要满足实时检测需求,因此选择 YOLO 系列算法作为主要技术基础。
-
- YOLOv7 与 YOLOv8 算法原理
YOLO 是 “You Only Look Once” 的缩写,是一种典型的一阶段目标检测算法。YOLO 算法的核心思想是将目标检测问题转化为回归问题,通过一次神经网络前向传播直接得到目标类别、置信度和边界框位置。相比传统两阶段检测算法,YOLO 不需要单独生成候选区域,因此具有较快的检测速度。
YOLO 系列模型通常由主干网络、特征融合网络和检测头三部分组成。主干网络用于提取输入图像中的特征信息;特征融合网络用于融合不同尺度的特征,提高模型对大目标和小目标的检测能力;检测头则负责输出目标类别、目标置信度和边界框坐标。在检测完成后,模型通常会通过非极大值抑制方法去除重复检测框,保留置信度较高的检测结果。
YOLOv7 是 YOLO 系列中性能较好的目标检测算法之一。该算法在网络结构、特征融合和训练策略方面进行了优化,在检测精度和推理速度之间取得了较好的平衡。YOLOv7 适合用作目标检测对比模型,可以用于分析不同 YOLO 模型在人形机器人目标识别任务中的性能差异。
YOLOv8 是 YOLO 系列中应用较为广泛的版本之一,具有模型结构清晰、接口调用方便、训练和部署流程完善等特点。YOLOv8 提供了多种不同规模的模型,其中 YOLOv8n 属于轻量化模型,模型体积较小,推理速度较快,适合在人形机器人实时检测系统中使用。本文系统中主要采用 YOLOv8 进行目标检测,同时引入 YOLOv7 作为对比模型,以分析两种方法在检测速度和识别效果上的差异。
在人形机器人目标识别任务中,系统并不需要检测所有 COCO 数据集类别,而是重点关注室内服务场景下的常见目标,例如人、杯子、瓶子、椅子、书和手机。因此,在模型检测结果输出后,需要对目标类别进行筛选,仅保留与人形机器人应用场景相关的目标类别。这样可以减少无关类别对系统结果的干扰,使检测结果更加符合实际应用需求。
-
- CBAM 注意力机制
在复杂环境下,目标检测模型容易受到背景干扰、目标遮挡、目标尺寸较小等因素影响,导致识别效果下降。为了提高模型对关键特征的关注能力,注意力机制被广泛应用于深度学习模型中。注意力机制的基本思想是让模型在特征提取过程中更加关注重要信息,抑制无关信息,从而提高模型的特征表达能力。
CBAM 是一种轻量级卷积注意力模块,全称为 Convolutional Block Attention Module。CBAM 主要由通道注意力模块和空间注意力模块组成,能够分别从通道维度和空间维度增强特征表达能力。由于 CBAM 结构较为简单,计算量相对较小,因此适合与目标检测网络结合使用。
通道注意力模块主要用于判断不同特征通道的重要程度。在卷积神经网络中,不同通道通常表示不同类型的特征信息。通道注意力模块通过对特征图进行全局平均池化和最大池化,获取通道层面的全局信息,再生成对应的通道权重,使模型更加关注对目标识别有帮助的特征通道。
空间注意力模块主要用于判断图像中不同空间位置的重要程度。该模块通过对特征图在通道维度上进行平均池化和最大池化,得到空间位置信息,再通过卷积操作生成空间注意力图。空间注意力能够帮助模型更加关注目标所在区域,减少背景区域对检测结果的影响。
在本文研究中,CBAM 被用于 YOLOv8 的改进思路中,形成 YOLOv8-CBAM 方法。通过引入 CBAM 注意力机制,可以增强模型对关键目标区域和重要特征通道的关注能力,从而提高复杂场景下的目标识别效果。YOLOv8-CBAM 主要作为改进识别方法进行研究,并与 YOLOv7、YOLOv8 进行对比分析。
本文系统主要基于 Python 语言开发,相关技术包括 PyTorch、OpenCV、PyQt5 和 SQLite 等。其中,PyTorch 用于深度学习模型的加载与推理,OpenCV 用于图像读取、视频处理和检测结果绘制,PyQt5 用于构建图形用户界面,SQLite 用于保存检测记录。通过这些技术的结合,可以实现目标检测、结果显示、数据存储和结果导出等功能。
在模型方面,系统主要涉及 YOLOv7、YOLOv8 和 YOLOv8-CBAM 三种检测方法。YOLOv7 用于与 YOLOv8 进行检测效果和推理速度对比;YOLOv8 作为系统的主要检测方法;YOLOv8-CBAM 则作为引入注意力机制后的改进方法。三种方法共同构成本文目标识别系统的算法基础。
为了评价目标检测模型的性能,常用指标包括准确率、召回率、mAP、推理时间和 FPS 等。准确率用于衡量检测结果中正确目标所占比例,召回率用于衡量真实目标中被成功检测出的比例,mAP 是目标检测任务中常用的综合评价指标,能够反映模型在不同类别上的检测效果。
除检测精度外,实时性也是人形机器人目标识别系统中的重要评价指标。推理时间表示模型完成一次检测所需的时间,通常以毫秒为单位;FPS 表示系统每秒能够处理的图像帧数,FPS 越高,说明模型实时性越好。由于人形机器人需要在动态环境中工作,因此目标检测模型需要在保证识别效果的同时尽可能提高检测速度。
本章主要介绍本文研究所涉及的相关技术基础,包括目标检测技术、YOLOv7 与 YOLOv8 算法、CBAM 注意力机制以及实验评价指标。具体的模型设计、对比实验和系统测试结果将在后续章节中进一步展开。
- 基于 YOLOv7 与 YOLOv8 的目标检测方法
本课题面向人形机器人室内服务场景,研究机器人视觉系统对常见目标的检测方法。人形机器人在实际运行过程中,需要通过摄像头获取周围环境图像,并从图像中识别出与任务相关的人员和物体目标。目标检测结果可以为后续的人机交互、环境理解、物品定位和任务执行提供基础信息。
根据项目实际实现,系统主要关注室内场景中较常见、且与人形机器人服务任务相关的目标类别,包括人、瓶子、杯子、椅子、手机和书。这些目标均来源于 COCO 数据集中常见类别,能够满足基础室内服务场景下的识别需求。例如,人员目标可用于人机交互和跟随任务,杯子、瓶子、书和手机可用于桌面物品识别,椅子可用于室内环境理解。
本项目不是对所有 COCO 类别进行完整检测,而是在 YOLO 预训练模型输出结果的基础上进行类别筛选,只保留与人形机器人应用场景相关的目标。这样既可以减少无关类别对检测结果的干扰,也可以使系统输出结果更加符合课题需求。
项目系统支持三种输入方式:图片检测、视频检测和摄像头检测。其中,图片检测适合用于静态场景测试,视频检测适合用于连续画面分析,摄像头检测则用于实时目标识别。为了满足这些功能需求,检测模型不仅需要具有一定识别准确性,还需要具备较好的推理速度和工程可调用性。
结合项目实际代码,系统采用 YOLOv7 和 YOLOv8 两种目标检测方法进行实现。其中,YOLOv8 是系统默认加载的检测模型,主要用于实际检测任务;YOLOv7 作为对比模型,用于分析不同 YOLO 版本在人形机器人目标检测场景中的性能差异。
本项目的检测模型主要在 models/detector.py 文件中实现。为了统一 YOLOv7 和 YOLOv8 的调用方式,系统设计了统一的检测器接口。代码中定义了 BaseDetector 检测器基类,该类规定了模型加载、目标检测、检测结果绘制和模型信息获取等基本功能。
在 BaseDetector 基类基础上,系统分别实现了 YOLOv7Detector 和 YOLOv8Detector 两个检测器类。YOLOv7Detector 用于加载和调用 YOLOv7 模型,YOLOv8Detector 用于加载和调用 YOLOv8 模型。两类检测器虽然底层调用方式不同,但最终都返回统一格式的检测结果,包括目标边界框、目标类别、置信度和类别编号。
为了便于模型切换,项目中设计了 DetectorFactory 检测器工厂类。系统根据用户选择的模型类型创建对应检测器。当模型类型为 yolov7 时,创建 YOLOv7 检测器;当模型类型为 yolov8 时,创建 YOLOv8 检测器。该设计使 GUI 界面和命令行检测模块不需要直接处理不同模型的加载细节,提高了系统代码的可维护性。
YOLOv8 检测器基于 Ultralytics 接口实现,默认加载项目根目录下的 yolov8n.pt 权重文件。YOLOv8n 属于轻量化模型,模型体积较小,推理速度较快,适合用于视频和摄像头实时检测。项目入口 main.py 中默认模型参数也是 yolov8,说明 YOLOv8 是系统实际运行时的主要检测模型。
YOLOv7 检测器使用 weights/yolov7.pt 权重文件。由于 YOLOv7 官方代码中也包含名为 models 的模块,而本项目本身也存在 models 目录,因此代码在加载 YOLOv7 时对本地 models 包进行了临时隔离,避免与 YOLOv7 官方代码中的 models.yolo 发生命名冲突。该处理保证了 YOLOv7 模型能够在本项目中正常加载和推理。
在目标类别设置方面,项目代码中定义了人形机器人场景关注的 6 类目标,其 YOLO 类别映射如下:
|
YOLO 输出索引 |
目标类别 |
|
0 |
person |
|
39 |
bottle |
|
41 |
cup |
|
56 |
chair |
|
67 |
cell phone |
|
73 |
book |
|
YOLO 输出索引 |
目标类别 |
模型完成检测后,系统会调用类别解析方法对输出类别进行过滤。如果检测结果属于上述目标类别,则保留该结果;如果属于其他类别,则直接忽略。经过筛选后的检测结果会进一步用于图像绘制、界面显示、数据记录和实验统计。
-
- YOLOv7 与 YOLOv8 对比实验
为了验证 YOLOv7 和 YOLOv8 在本项目目标检测任务中的实际表现,项目提供了模型对比实验脚本 scripts/run_comparison.py。该脚本会对测试样本进行检测,并将对比结果导出到 data/exports/ 目录中。项目中已有实验结果文件 model_comparison_20260523_175231.md,记录了 YOLOv7 与 YOLOv8 的检测性能。
实验主要使用项目中的测试图片进行对比,包括 bus.jpg、scene_normal.jpg、scene_low_light.jpg、scene_occlusion.jpg 和 scene_small_objects.jpg。这些图片分别对应普通人员场景、正常场景、低光照场景、遮挡场景和小目标场景。实验过程中,YOLOv7 和 YOLOv8 在相同测试样本上分别进行检测,并记录目标数量、推理时间和 FPS。
本项目默认检测参数为:置信度阈值 0.25,IOU 阈值 0.45,运行设备为 cpu。置信度阈值用于过滤置信度较低的检测框,IOU 阈值用于非极大值抑制,减少重复检测框。统一参数设置能够保证两个模型对比实验具有一致性。
根据项目导出的实验结果,YOLOv8 和 YOLOv7 均可正常运行。两种模型的平均检测性能如下:
|
模型 |
是否可用 |
平均推理时间/ms |
平均 FPS |
|
YOLOv8 |
是 |
51.95 |
19.25 |
|
YOLOv7 |
是 |
499.19 |
2 |
从实验结果可以看出,YOLOv8 的平均推理时间约为 51.95 ms,平均 FPS 约为 19.25;YOLOv7 的平均推理时间约为 499.19 ms,平均 FPS 约为 2.00。YOLOv8 的推理速度明显快于 YOLOv7,更适合用于实时检测场景。
分场景检测结果如下:
|
模型 |
图片 |
目标数 |
类别 |
推理时间/ms |
FPS |
|
YOLOv8 |
bus.jpg |
4 |
person |
53.84 |
18.57 |
|
YOLOv8 |
scene_normal.jpg |
4 |
person |
52.58 |
19.02 |
|
YOLOv8 |
scene_low_light.jpg |
0 |
- |
51.19 |
19.54 |
|
YOLOv8 |
scene_occlusion.jpg |
0 |
- |
50.79 |
19.69 |
|
YOLOv8 |
scene_small_objects.jpg |
0 |
- |
51.36 |
19.47 |
|
YOLOv7 |
bus.jpg |
4 |
person |
490.75 |
2.04 |
|
YOLOv7 |
scene_normal.jpg |
4 |
person |
488.02 |
2.05 |
|
YOLOv7 |
scene_low_light.jpg |
0 |
- |
508.7 |
1.97 |
|
YOLOv7 |
scene_occlusion.jpg |
0 |
- |
524.97 |
1.9 |
|
YOLOv7 |
scene_small_objects.jpg |
0 |
- |
483.53 |
2.07 |
从分场景结果可以看出,在 bus.jpg 和 scene_normal.jpg 中,两种模型均检测到 4 个 person 目标,说明 YOLOv7 和 YOLOv8 对明显人员目标均具有有效检测能力。在低光照、遮挡和小目标样本中,两种模型均未检测到符合筛选条件的目标,说明复杂场景仍会影响基础模型的检测效果。
根据项目实际实验结果,YOLOv7 和 YOLOv8 均能够完成本课题设定的人形机器人目标检测任务。在人员目标明显的场景中,两种模型都可以检测到目标,并输出目标类别、边界框和置信度信息。这说明基于 YOLO 系列算法构建人形机器人目标检测系统是可行的。
从检测速度来看,YOLOv8 明显优于 YOLOv7。YOLOv8 的平均 FPS 达到 19.25,基本能够满足视频检测和摄像头实时检测需求;而 YOLOv7 的平均 FPS 约为 2.00,检测速度较慢,不适合作为系统默认实时检测模型。因此,项目中将 YOLOv8 设置为默认模型是合理的。
从工程实现角度来看,YOLOv8 的调用方式更加简洁。项目中通过 Ultralytics 接口即可加载 yolov8n.pt 并完成推理,适合集成到 PyQt5 图形界面中。相比之下,YOLOv7 需要额外处理官方代码加载和模块命名冲突问题,工程复杂度更高。因此,YOLOv7 更适合作为对比实验模型,而 YOLOv8 更适合作为系统主要检测模型。
从检测效果来看,两种模型在普通人员场景中表现较好,但在低光照、遮挡和小目标场景中均存在漏检情况。这说明基础 YOLO 模型在复杂场景下仍有一定局限性。对于人形机器人实际应用而言,机器人所处环境可能存在光照不足、目标遮挡、目标距离较远等情况,因此有必要进一步研究改进方法,提高模型对关键目标区域和复杂场景特征的表达能力。
综合分析可知,本项目采用 YOLOv8 作为主要目标检测方法,YOLOv7 作为对比检测方法,符合系统实际需求。YOLOv8 在推理速度、工程实现和系统集成方面更具优势;YOLOv7 能够作为实验对照,帮助分析不同模型的性能差异。基于第三章实验结果,后续章节将进一步研究基于 YOLOv8-CBAM 的目标识别改进方法。
- 基于 YOLOv8-CBAM 的目标识别方法
- YOLOv8-CBAM 改进思路
第三章实验结果表明,YOLOv8 在人形机器人目标检测任务中具有较好的实时性,能够满足系统对图片、视频和摄像头检测的基本需求。但在低光照、目标遮挡、小目标以及背景复杂等场景下,基础 YOLOv8 模型仍可能出现漏检或识别不稳定的情况。对于人形机器人而言,其工作环境通常具有动态性和不确定性,因此有必要在 YOLOv8 基础上进一步增强模型对关键目标特征的表达能力。
为提高模型在复杂场景下的目标识别效果,本文引入 CBAM 注意力机制,对 YOLOv8 进行改进,形成 YOLOv8-CBAM 目标识别方法。CBAM 由通道注意力模块和空间注意力模块组成,能够从特征通道和空间位置两个角度对特征图进行加权处理,使模型更加关注与目标识别相关的重要信息。
设输入特征图 F
,CBAM 首先通过通道注意力模块生成通道权重 Mc(F)
,并与原始特征图相乘,得到增强后的特征图 F'
。随后,空间注意力模块根据 F'
生成空间权重 Ms(F')
,进一步得到最终增强特征 F''
。其计算过程可表示为:
F'=Mc(F)⊗F![]()
F''=Ms(F')⊗F'![]()
其中,⊗
表示逐元素相乘。通道注意力用于突出重要特征通道,空间注意力用于突出目标所在区域。通过这种方式,模型可以抑制无关背景信息,增强目标区域的有效特征表达。
图4-1 CBAM 注意力机制结构示意图
在人形机器人室内场景中,待识别目标主要包括人员、瓶子、杯子、椅子、手机和书等常见目标。这些目标在图像中可能存在尺寸较小、姿态变化、局部遮挡和背景相似等问题。引入 CBAM 后,模型能够更加关注目标区域及其关键特征,从而提升复杂场景下的识别稳定性。
YOLOv8-CBAM 目标识别流程以 YOLOv8 检测框架为基础,在特征提取阶段引入注意力增强机制。整体流程主要包括图像输入、特征提取、注意力增强、目标预测、类别筛选和结果输出等步骤。
首先,系统从图片、视频或摄像头中获取输入图像。对于图片检测,系统直接读取单张图像并送入模型;对于视频和摄像头检测,系统按帧读取图像,并对每一帧执行目标识别。输入图像经过尺寸调整、格式转换等预处理后,进入 YOLOv8-CBAM 网络。
其次,模型通过主干网络提取图像特征。为了增强关键特征表达能力,在特征提取过程中引入 CBAM 注意力模块,使网络能够对不同通道和不同空间位置分配不同权重。经过注意力增强后的特征图继续进入后续特征融合和检测部分,完成多尺度目标预测。
然后,模型输出候选目标的类别、置信度和边界框坐标。由于本文研究对象为人形机器人室内服务场景,系统只保留与任务相关的六类目标,即 person、bottle、cup、chair、cell phone 和 book。对于其他无关类别,系统不作为最终识别结果输出。
最后,系统对筛选后的识别结果进行可视化处理。每个目标均包含类别名称、置信度和边界框位置,系统根据边界框坐标在图像中绘制检测框,并标注类别名称和置信度。识别结果可用于图形界面展示,也可用于实验记录和后续分析。

图4-2 YOLOv8-CBAM 目标识别流程图
为了验证 YOLOv8-CBAM 方法在人形机器人目标识别任务中的可行性,本文设计了模型测试与对比实验。实验以 YOLOv8 为基础模型,以 YOLOv8-CBAM 为改进模型,在相同测试样本和相同评价指标下进行对比分析。
实验目标类别为人员、瓶子、杯子、椅子、手机和书六类。测试样本主要包含正常场景、低光照场景、遮挡场景和小目标场景,用于分析模型在不同环境条件下的识别表现。实验过程中,分别使用 YOLOv8 和 YOLOv8-CBAM 对测试图像进行检测,并记录目标数量、目标类别、推理时间、FPS 和可视化检测结果。

图4-3 YOLOv8 目标检测结果示例图
实验评价主要从两个方面展开。第一,分析 YOLOv8-CBAM 是否能够保持 YOLOv8 原有的基础检测能力,即在正常场景中是否能够稳定识别人员和常见物体目标。第二,分析 YOLOv8-CBAM 在低光照、遮挡和小目标场景下是否能够提高目标检出能力,从而验证注意力机制对复杂场景识别的作用。
由于 CBAM 模块会增加一定计算量,因此实验还需要关注模型实时性变化。若 YOLOv8-CBAM 在提升复杂场景识别效果的同时,仍能够保持较高 FPS,则说明该方法具有较好的实用价值。对于人形机器人应用而言,模型不仅要提高识别准确性,还应尽量满足实时检测需求。
在本课题系统实现中,YOLOv8-CBAM 已完成检测流程设计和模型调用接口。当未加载独立训练的 YOLOv8-CBAM 权重时,系统可回退到标准 YOLOv8n 模型以保证检测流程正常运行。因此,本章重点对 YOLOv8-CBAM 的方法设计、流程实现和测试方案进行分析,完整性能提升效果仍需基于训练后的专用权重进一步验证。
从方法原理上看,YOLOv8-CBAM 能够增强模型对关键目标特征的关注能力。通道注意力模块可以提高重要特征通道的响应,空间注意力模块可以突出目标所在区域,从而降低背景干扰对检测结果的影响。对于人形机器人室内服务场景,该方法有助于改善遮挡、小目标和低光照情况下的识别效果。
从系统适配角度看,YOLOv8-CBAM 与 YOLOv8 具有一致的输入和输出形式,均能够输出目标类别、置信度和边界框坐标。因此,改进模型可以直接接入系统的检测、显示、记录和导出流程,不需要改变系统整体架构。这说明 YOLOv8-CBAM 具有较好的工程兼容性。
从实验条件看,YOLOv8-CBAM 的性能提升需要依赖训练后的模型权重。如果未使用独立训练权重,系统实际检测效果与标准 YOLOv8n 基本一致,无法充分体现 CBAM 注意力机制带来的改进。因此,为了进一步验证该方法的有效性,应在六类目标数据集上训练 YOLOv8-CBAM 模型,并与 YOLOv8 在相同测试集上进行对比。
后续实验应重点比较以下内容:一是比较正常场景下两种模型的检测结果,验证改进模型是否保持基础检测能力;二是比较低光照、遮挡和小目标场景下的检测情况,分析 CBAM 是否提高复杂场景下的识别效果;三是比较两种模型的推理时间和 FPS,判断改进方法是否满足实时检测要求。
综上所述,YOLOv8-CBAM 是在 YOLOv8 基础上引入注意力机制的改进目标识别方法。该方法通过通道注意力和空间注意力增强目标特征表达,能够为人形机器人复杂室内场景下的目标识别提供改进思路。当前系统已经具备 YOLOv8-CBAM 的检测流程和测试条件,后续可通过补充训练权重和完善实验数据进一步验证其识别性能。
本文设计的人形机器人目标识别系统面向室内服务场景,主要用于实现对人员及常见物体目标的检测与识别。系统需要能够从图片、视频和摄像头中获取图像信息,并调用目标检测模型完成识别任务。检测结果应能够在界面中直观显示,同时保存检测记录,便于后续实验统计和结果分析。
根据课题需求,系统主要功能包括:模型选择、参数设置、图片检测、视频检测、摄像头检测、检测结果显示、检测记录保存和数据导出等。系统支持 YOLOv7、YOLOv8 和 YOLOv8-CBAM 三种模型选项,其中 YOLOv8 作为默认检测模型,YOLOv7 用于对比实验,YOLOv8-CBAM 作为改进模型接口。

图5-1 系统总体架构图
系统采用分层设计思想,整体可分为界面层、业务逻辑层和数据存储层。界面层主要负责用户操作和检测结果展示;业务逻辑层负责模型加载、目标检测、结果绘制和多模型切换;数据存储层负责检测记录保存和实验数据导出。通过分层设计,可以降低各模块之间的耦合度,提高系统的可维护性。
系统总体工作流程如下:首先,用户在图形界面中选择检测模型、置信度阈值、IOU 阈值和运行设备;然后,用户选择图片、视频或摄像头作为输入源;系统读取图像数据后调用对应检测模型进行推理;模型输出目标类别、置信度和边界框坐标;最后,系统将检测结果绘制到图像中,并显示目标数量、推理时间、FPS 等信息,同时将检测记录保存到数据库中。
目标检测模块是系统的核心部分,主要负责模型加载、目标推理、类别筛选和结果绘制。为便于系统支持多种检测模型,本文采用统一检测器接口对不同模型进行封装。YOLOv7、YOLOv8 和 YOLOv8-CBAM 均按照统一格式输出检测结果,包括目标边界框、目标类别、置信度和类别编号。
系统将 YOLOv7 和 YOLOv8 作为主要检测方法进行实现。YOLOv7 使用 yolov7.pt 权重文件,主要用于模型对比实验;YOLOv8 使用 yolov8n.pt 权重文件,是系统默认检测模型。由于 YOLOv8n 模型较轻量,推理速度较快,因此更加适合图片、视频和摄像头实时检测任务。
在人形机器人室内场景中,系统不保留全部 COCO 类别,而是只筛选与应用场景相关的六类目标,即 person、bottle、cup、chair、cell phone 和 book。模型完成推理后,系统会对检测类别进行判断,仅保留上述目标类别。这样可以减少无关类别对识别结果的影响,使系统输出更加符合人形机器人服务场景需求。
检测结果绘制时,系统会根据目标边界框坐标在图像中绘制矩形框,并在框附近标注目标类别和置信度。不同类别可以使用不同颜色显示,便于用户直观区分目标类型。对于越界或无效检测框,系统会进行边界处理,避免绘制错误影响结果显示。
YOLOv8-CBAM 模型作为改进模型接口被纳入系统中。系统支持选择 yolov8_cbam 模型类型,但由于当前未提供独立训练完成的 YOLOv8-CBAM 权重,运行时会回退到标准 YOLOv8n 模型。该设计保证了系统可正常运行,同时为后续训练并加载 YOLOv8-CBAM 权重提供了扩展空间。
系统采用 PyQt5 设计图形用户界面,主界面主要由模型参数设置区、功能按钮区、图像显示区和检测信息区组成。用户可以在界面中选择检测模型、设置置信度阈值和 IOU 阈值,并选择 CPU 或 CUDA 设备运行模型。界面提供图片检测、视频检测、摄像头检测、停止检测和导出数据等功能按钮。

图5-3 系统主界面图
图片检测功能用于处理单张静态图像。用户点击图片检测按钮后,系统弹出文件选择窗口,用户选择图片文件后,系统读取图像并显示原始图像。随后,系统调用当前选定模型进行目标检测,并将绘制后的检测结果显示在结果区域。图片检测完成后,系统会记录模型类型、输入来源、目标数量、推理时间、FPS 和图像尺寸等信息。

图5-4 图片检测结果示例图
视频检测功能用于处理本地视频文件。用户选择视频后,系统按帧读取视频画面,并对每一帧执行目标检测。为保证界面响应速度,视频检测过程在后台线程中运行,检测结果按一定刷新频率显示到界面中。用户可以随时点击停止按钮结束视频检测。
摄像头检测功能用于实时目标识别。系统调用摄像头获取实时画面,并将每一帧送入检测模型。检测结果会实时显示在界面中,同时更新 FPS、目标数量和推理时间等信息。该功能能够模拟人形机器人通过摄像头感知外部环境的过程。
为了避免模型加载和视频检测过程阻塞主界面,系统采用多线程方式处理耗时任务。模型加载在线程中完成,避免用户切换模型时界面卡顿;视频和摄像头检测也在线程中执行,主线程只负责界面刷新和用户交互。通过这种方式,系统在进行实时检测时仍能保持较好的操作响应。
检测记录存储采用 SQLite 数据库实现。系统会保存检测时间、模型类型、输入类型、输入文件名、检测结果、目标数量、FPS、推理时间和图像尺寸等信息。用户可以通过导出功能将检测记录导出为 JSON、CSV 和 Markdown 文件,便于后续整理实验数据。

图5-5 检测记录导出结果示例图
为验证系统功能的完整性和运行效果,本文对图片检测、视频检测、摄像头检测、模型切换和数据导出等功能进行了测试。测试结果表明,系统能够正常加载 YOLOv7 和 YOLOv8 模型,并能够完成图片、视频和摄像头输入下的目标检测任务。
在模型检测方面,YOLOv8 能够作为默认模型正常运行,并完成对人员目标的检测。在测试样本 bus.jpg 和 scene_normal.jpg 中,YOLOv8 均检测到 4 个 person 目标,说明系统在明显人员目标场景下具有较好的检测能力。YOLOv7 也能够完成相同目标检测,但推理速度明显低于 YOLOv8。
在实时性方面,第三章实验结果显示,YOLOv8 平均推理时间约为 51.95 ms,平均 FPS 约为 19.25;YOLOv7 平均推理时间约为 499.19 ms,平均 FPS 约为 2.00。由此可见,YOLOv8 更适合作为系统默认检测模型,能够较好满足视频检测和摄像头检测需求。
在数据记录方面,系统能够将检测过程中的结果保存到数据库,并支持导出为多种格式。已有导出结果显示,系统共记录检测数据 4072 次,平均 FPS 为 17.11。其中,YOLOv8 检测记录数量最多,说明系统实际运行中主要以 YOLOv8 作为检测模型。导出的 Markdown、CSV 和 JSON 文件能够较好支持实验分析和论文数据整理。
从系统测试结果来看,本文设计的人形机器人目标识别系统基本实现了预期功能。系统能够完成多模型切换、目标检测、检测结果显示、检测记录保存和实验数据导出等任务。YOLOv8 在检测速度和系统集成方面表现较好,适合作为系统主要模型;YOLOv7 可作为对比模型用于实验分析;YOLOv8-CBAM 已具备接口扩展条件,后续可通过补充训练权重进一步完善识别效果。
综上所述,本章完成了人形机器人目标识别系统的设计与实现。系统整体结构清晰,功能较完整,能够为人形机器人室内场景目标识别提供基础支持,也为后续模型优化和系统扩展提供了良好的实现基础。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)