提出了一种基于局部特征的分块图像标注方法,利用EBike-DET数据集和主流目标检测模型,以提升复杂电梯场景下的电动自行车检测性能。
方法文章
提出了一种基于局部特征的分块图像标注方法,利用EBike-DET数据集和主流目标检测模型,以提升复杂电梯场景下的电动自行车检测性能。
电动自行车(EBike)在住宅电梯等封闭环境中的使用日益增多,引发了严重的安全担忧,并为自动化目标检测带来了显著挑战,尤其是在频繁遮挡的情况下。传统的检测方法主要依赖整体标注,通常难以在视觉复杂的场景中准确识别部分被遮挡的电动自行车。为克服这些局限性,本研究提出了一种基于局部特征的新型分块标注方法,提供更具可解释性的标注策略。通过将电动自行车分解为多个关键区域并进行独立标注,该方法使检测模型能够学习到更精细的结构信息,从而在高度遮挡条件下提升鲁棒性。此外,本研究还构建了一个专用数据集 EBike-DET,以支持真实电梯场景下的检测任务。该数据集采用分块标注方法,并结合模拟环境条件进行增强,有效提升了模型性能与适应能力。所提出的方法通过使目标检测过程更加透明且结构上可解释,推动了可解释人工智能(XAI)的发展,这在安全关键型应用中尤为重要。本研究基于三种主流模型(YOLOv5、YOLOv10 和 SSD)开展了大量实验。结果表明,使用分块标注的 EBike-DET 训练 YOLOv5 模型时,精度提升 3.7%,召回率提升 5.3%,F1 分数提升 4.5%,mAP 提升 4.4%。与公开数据集相比,EBike-DET 在遮挡条件下表现出更强的稳定性与鲁棒性。本研究不仅提高了检测精度,也为在现实世界安全监控系统中部署更具可解释性的 AI 解决方案迈出了重要一步。
随着电动自行车(EBike)在全球范围内的迅速普及,尤其是在中国,截至2022年总量已超过3.5亿辆,电动自行车已成为短途出行的主要交通工具。然而,电动自行车频繁进入住宅电梯等封闭空间,带来了严重的安全隐患,包括异常振动、设备损坏、异味以及火灾风险。最近一项研究估计,与电动自行车相关的火灾事故发生的概率约为1.44%1。这些风险凸显了在电梯环境中亟需高效且准确的电动自行车检测方法,以提升安全水平。
尽管计算机视觉和深度学习取得了进展,电梯内的电动自行车检测仍然具有挑战性。公开可用的数据集稀少,且通常缺乏电动自行车型号、颜色和遮挡情况的多样性,限制了模型的泛化能力2。此外,电梯场景中经常出现复杂的遮挡情况,电动自行车可能被乘客或结构部件部分遮挡,进一步降低了检测精度3,4,5。现有的整体标注方法将电动自行车视为单个边界框,在此类条件下常常失效,表明需要改进的标注与检测策略。如表1所示,与分块标注相比,整体标注导致性能显著下降,在交并比(IoU)阈值为0.5时平均精度均值(mAP@0.5)最多降低21.5%。
基于深度学习的检测技术进展
深度学习方法,尤其是卷积神经网络(CNNs),已广泛应用于目标检测领域。You Only Look Once(YOLO)系列模型展现出强大的实时性能。然而,在检测被遮挡或重叠目标时,YOLO 模型容易产生冗余的边界框。例如,YOLOv5 通过深度卷积和特征金字塔网络增强多尺度特征提取能力6,7,而 YOLOv10 则通过消除非极大值抑制并采用路径聚合网络来提升检测速度和多尺度融合效果8,9。尽管已有这些改进,冗余边界框问题以及在严重遮挡环境下鲁棒性下降的问题仍未得到充分解决。当电动自行车的关键结构部分被遮挡时,上述模型均表现不佳,因为整体标注提供的局部线索有限。如图1A-C所示,在中度或重度遮挡条件下,这一局限性会导致边界框冗余以及检测置信度不稳定。相比之下,分块标注通过使模型能够检测独立区域(如车轮或车尾部分),有效缓解了该问题,从而在遮挡情况下减少冗余边界框。图1D-F进一步表明,当仅有部分电动自行车部件可见时,分块标注可改善特征定位能力,并维持检测的稳定性。
类似地,基于 VGG-16 骨干网络的单次多框检测器(Single Shot MultiBox Detector, SSD)模型10,11 能够在不同尺度上实现高效检测,并在小目标检测方面表现良好12。 然而,当严重遮挡导致特征连续性中断时,SSD 同样面临挑战,即使引入了注意力机制,仍可能导致漏检或边界框回归不稳定13。分块标注在此也具有优势:模型仍可依赖剩余可见的局部特征,从而在多尺度和遮挡条件下提升检测的稳定性。
注释策略与局部特征学习
目前大多数检测方法采用整体标注,这种方法简化了标注过程,但主要依赖于全局特征14,15当关键的电动自行车区域(如车轮、前部或后部)部分缺失时,该方法面临困难。最近的一项研究16 已表明,局部特征学习(即将物体分割为多个标注部分)可在具有挑战性的场景中提高鲁棒性和精确度。与此一致的是,结果在 表2 表明当至少40%–60%的关键电动自行车部件仍可见时,分块标注仍保持有效, 尤其是在标注车轮、前部区域和后部区域时。相比之下,在低遮挡场景下(例如, <20% 遮挡)或图像分辨率≥1280 x 720(完整轮廓得以保留)时适用。当遮挡超过≈70%,或特征级区域过小而无法提供具有区分性的空间信息时,分块处理的优势将减弱。
使用 Harris 角点检测的方法学依据
由于Harris角点检测具有确定性行为、计算效率高以及无需训练等特性,非常适合在电梯环境中进行可靠的标注,因此被选用于局部特征提取。与SuperPoint和LoFTR等基于学习的特征点检测器不同,Harris角点检测避免了额外的训练过程,并在标注数据有限且存在严重遮挡的情况下减少了域偏移问题。与Canny和Sobel等基于边缘的算子相比,Harris角点更强调具有几何意义的交点,而非噪声较多的背景边缘,从而能够稳定地定位电动自行车的结构,例如车轮和车架的交点。此外,Harris角点检测提供了可解释的超参数。经验常数 k 用于控制角点的灵敏度与稳定性。如第2.6.2.4节和图2所示,调节 k 可在鲁棒性与过检测之间实现可控的平衡,这与本文提出的基于规则的分块标注策略高度契合。
用于增强鲁棒性的数据扩增
数据增强已被证明在提升检测模型的多样性和适应性方面具有显著效果。常见的技术包括几何变换(例如旋转、缩放、裁剪)和颜色调整(例如灰度化、亮度调节),这些方法能够模拟真实环境中的条件和光照变化17,18,19。通过引入这些策略,检测模型对变异的鲁棒性得以增强,更适用于实际部署。
针对上述局限性,本研究提出了一种基于局部特征的改进型分块标注方法。该方法通过将电动自行车划分为多个独立标注的部分,增强了特征学习能力与模型鲁棒性,从而在复杂遮挡条件下实现更有效的检测。此外,构建了一个专门针对电梯环境的电动自行车检测数据集(EBike-DET),并通过多种数据增强手段对数据集进行扩充,以提升模型的适应性。最后,该方法在 YOLOv5、YOLOv10 和 SSD 模型上进行了验证,结果显示平均精度(mAP)一致提升了 +5.69% 至 +39.81%,如表3所示。本研究的主要贡献可总结如下:提出一种改进的分块标注方法,增强了遮挡条件下的特征学习能力;构建了面向电梯场景的专用 EBike-DET 数据集,并融合了多种数据增强技术;在主流检测模型上开展实验验证,结果表明相较于整体标注方法,该方法具有更高的检测精度与鲁棒性。
访问受限。请登录或开始试用以查看此内容。
本研究使用的EBike-DET数据集由作者通过在电梯、停车场和街道环境中进行实地拍摄所收集的图像,以及从网络平台获取的公开电动自行车图像组成。所有实地图像采集均在非私人环境中进行,仅用于电动自行车检测相关的安全技术研究。图像并非有意针对个人,任何偶然捕捉到的人员均因距离、遮挡、背对镜头或经过适当处理(去除了面部特征及其他个人身份信息)而无法识别。网络来源的图像仅从允许学术研究再使用的平台或根据开放许可发布的资源中获取。所有图像 strictly 用于非商业性研究和教育目的。由于未收集可识别的个人数据,且未与人类受试者发生直接互动,根据作者所在机构的指导原则,本研究无需获得机构伦理委员会的批准。
1. 数据集构建
2. 局部特征分块注释
注意:为了提高在复杂遮挡场景下对电动自行车的检测精度,提出了一种基于改进局部特征的分块标注方法。该方法通过提取电动自行车的局部特征点来分割其区域,并根据相应特征区域的遮挡程度判断该区域是否需要进行标注。详细的实验过程如图3所示。
(2)
(3)
(4)
(5)
,
(9)
(10)
(14)
和
分别为左上角和右下角的坐标。
(15)
(16)
(17) 3. 数据增强
注意:先前的研究表明,缺乏充分预处理和数据增强的训练数据集通常会导致模型性能下降22。为解决这些挑战,遵循了以下步骤。
4. 实验环境
5. 评估指标
注意:尽管在训练和推理过程中使用分块标注,但评估是在电动自行车对象级别上进行的。根据第2.4、3节中定义的规则,将部件级别的检测结果聚合为单个电动自行车判定。
(18)
(19)
(20)
(21) 访问受限。请登录或开始试用以查看此内容。
在公共数据集上比较整体注释与分块注释
评估在一个包含210张电动自行车图像的公开数据集上进行,这些图像采集自开放的监控和交通监测场景,涵盖了多样的光照条件、电动自行车颜色以及不同程度的遮挡情况。每张图像均采用整体方法(单个边界框)和所提出的分块方法(将电动自行车划分为车轮、前部区域和后部区域)进行标注。
定量结果总结于表1中。在YOLOv5上,整体标注方法达到了0.81的精确率和0.74的召回率,得到0.77的F1分数和0.78的mAP@0.5。当使用分块标注进行训练时,YOLOv5的精确率提升至0.86,召回率提升至0.79,F1分数达到0.82,mAP@0.5达到0.84。与整体标注相比,这分别在精确率、召回率和mAP上实现了0.05、0.05和0.06的绝对提升。
同样,YOLOv10 表现出显著的改进。采用整体标注时,模型的精确率为 0.84,召回率为 0.76,F1 得分为 0.80,mAP@0...
访问受限。请登录或开始试用以查看此内容。
关键步骤
本方案中的一个关键步骤是基于局部特征的分块标注方法,即将电动自行车分割为车轮、前部和后部区域。这种划分方式确保了检测模型能够学习到细粒度的特征表示,这在遮挡严重的电梯环境中被证明至关重要。例如,使用 EBike-DET 数据集上的分块标注训练 YOLOv5 后,其 mAP@0.5 从 0.925 提升至 0.966,凸显了精确局部特征划分对实现稳健性能的必要性。此外,Harris 角点检测阶段是局部特征提取的关键预处理步骤。经验常数的选择(k=0.05)对优化角点检测结果尤为关键,因为偏离该值(如 k=0.04 或 k=0.06)会导致误检增多或特征敏感性下降。
方法的改进与故障排除
可通过多种改进措施来提高该方法的稳健性。首先,可引入自适应的角点检测阈值,使系统能够根据不同的光照和遮挡程度进行动态调整。这一调整可进一步减少误检,特别是在电梯等光照频繁变化的复杂场景中。其次,在数据集构建过程中...
访问受限。请登录或开始试用以查看此内容。
本研究得到中国教育部2025年人文社会科学研究规划基金(项目编号:25YJAZH002)、2024年广东省重点学科研究能力提升项目(项目编号:2024ZDJS086)、2024年广东省大学生创新创业训练计划项目(项目编号:S202413714017)以及教育部就业-教育联动计划的资助。 "面向人工智能技术的计算机应用专业人才培养机制创新与实践" (资助编号:2025072869464)
访问受限。请登录或开始试用以查看此内容。
| 姓名 | 公司 | 目录编号 | 评论 |
|---|---|---|---|
| h5py (SSD) | HDF Group | 2.10.0 | |
| matplotlib (SSD) | Matplotlib 社区 | 3.1.2 | |
| matplotlib (YOLOv10) | Matplotlib 社区 | 3.9.0 | |
| matplotlib (YOLOv5) | Matplotlib 社区 | 3.8.4 | |
| matplotlib (YOLOv5+SAHI) | Matplotlib 社区 | 3.8.4 | |
| matplotlib (YOLOv8-Seg) | Matplotlib 社区 | 3.9.0 | |
| numpy (SSD) | NumPy 社区 | 1.17.0 | |
| numpy (YOLOv10) | NumPy 社区 | 1.26.3 | |
| numpy (YOLOv5) | NumPy 社区 | 1.26.4 | |
| numpy (YOLOv5+SAHI) | NumPy 社区 | 1.26.4 | |
| numpy (YOLOv8-Seg) | NumPy 社区 | 1.26.3 | |
| onnx (YOLOv10) | ONNX | 1.14.0 | |
| onnx (YOLOv5) | ONNX | 1.14.0 | |
| onnx (YOLOv5+SAHI) | ONNX | 1.14.0 | |
| onnxruntime (YOLOv10) | Microsoft | 1.15.1 | |
| onnxruntime (YOLOv5) | Microsoft | 1.15.1 | |
| onnxruntime (YOLOv5+SAHI) | Microsoft | 1.15.1 | |
| opencv-python (SSD) | OpenCV | 4.1.2.30 | |
| opencv-python (YOLOv10) | OpenCV | 4.9.0.80 | |
| opencv-python (YOLOv5) | OpenCV | 4.9.0.80 | |
| opencv-python (YOLOv5+SAHI) | OpenCV | 4.9.0.80 | |
| opencv-python (YOLOv8-Seg) | OpenCV | 4.9.0.80 | |
| pandas (YOLOv10) | Pandas 社区 | 2.2.2 | |
| pandas (YOLOv5) | Pandas 社区 | 2.2.2 | |
| pandas (YOLOv5+SAHI) | Pandas 社区 | 2.2.2 | |
| pandas (YOLOv8-Seg) | Pandas 社区 | 2.2.2 | |
| Pillow (SSD) | Pillow 开发者 | 8.2.0 | |
| Pillow (YOLOv10) | Pillow 开发者 | 10.2.0 | |
| Pillow (YOLOv5) | Pillow 开发者 | 8.5.0 | |
| Pillow (YOLOv5+SAHI) | Pillow 开发者 | 8.5.0 | |
| Pillow (YOLOv8-Seg) | Pillow 开发者 | 10.2.0 | |
| psutil (YOLOv10) | Psutil 开发者 | 5.9.8 | |
| psutil (YOLOv5) | Psutil 开发者 | 5.9.8 | |
| psutil (YOLOv5+SAHI) | Psutil 开发者 | 5.9.8 | |
| pycocotools (YOLOv10) | COCO 联盟 | 2.0.7 | |
| pycocotools (YOLOv5) | COCO 联盟 | 2.0.7 | |
| pycocotools (YOLOv5+SAHI) | COCO 联盟 | 2.0.7 | |
| pycocotools (YOLOv8-Seg) | COCO 联盟 | 2.0.7 | |
| py-cpuinfo (YOLOv10) | Py-CPUInfo 开发者 | 9.0.0 | |
| py-cpuinfo (YOLOv5) | Py-CPUInfo 开发者 | 9.0.0 | |
| py-cpuinfo (YOLOv5+SAHI) | Py-CPUInfo 开发者 | 9.0.0 | |
| PyYAML (YOLOv10) | PyYAML | 6.0.1 | |
| PyYAML (YOLOv5) | PyYAML | 6.0.1 | |
| PyYAML (YOLOv5+SAHI) | PyYAML | 6.0.1 | |
| PyYAML (YOLOv8-Seg) | PyYAML | 6.0.1 | |
| requests (SSD) | Python Requests | 2.27.1 | |
| requests (YOLOv10) | Python Requests | 2.32.3 | |
| requests (YOLOv5) | Python Requests | 2.31.0 | |
| requests (YOLOv5+SAHI) | Python Requests | 2.31.0 | |
| SAHI | SAHI 开发者 | 0.3.4+ | |
| scipy (SSD) | SciPy 社区 | 1.2.1 | |
| scipy (YOLOv10) | SciPy 社区 | 1.13.0 | |
| scipy (YOLOv5) | SciPy 社区 | 1.13.0 | |
| scipy (YOLOv5+SAHI) | SciPy 社区 | 1.13.0 | |
| scipy (YOLOv8-Seg) | SciPy 社区 | 1.13.0 | |
| seaborn (YOLOv10) | Seaborn 开发者 | 0.13.2 | |
| seaborn (YOLOv5) | Seaborn 开发者 | 0.13.2 | |
| seaborn (YOLOv5+SAHI) | Seaborn 开发者 | 0.13.2 | |
| seaborn (YOLOv8-Seg) | Seaborn 开发者 | 0.13.2 | |
| shapely (YOLOv5+SAHI) | Shapely 开发者 | 2.0.4 | |
| SSD | Caffe/原始 SSD 作者 | Python 3.6.13+; PyTorch 1.2.0+; CUDA 10.0; CUDNN 7.4.1 | |
| tensorboard (SSD) | 2.10.1 | ||
| tensorboard (YOLOv5) | 2.16.2 | ||
| tensorboard (YOLOv5+SAHI) | 2.16.2 | ||
| torchvision (SSD) | PyTorch | 0.4.0 | |
| torchvision (YOLOv10) | PyTorch | 0.15.2 | |
| torchvision (YOLOv5) | PyTorch | 0.17.2 | |
| torchvision (YOLOv5+SAHI) | PyTorch | 0.17.2 | |
| torchvision (YOLOv8-Seg) | PyTorch | 0.16.1+ | |
| tqdm (SSD) | TQDM 开发者 | 4.60.0 | |
| tqdm (YOLOv10) | TQDM 开发者 | 4.66.4 | |
| tqdm (YOLOv5) | TQDM 开发者 | 4.66.2 | |
| tqdm (YOLOv5+SAHI) | TQDM 开发者 | 4.66.2 | |
| ultralytics (YOLOv8-Seg) | Ultralytics | 8.2.99+ | |
| YOLOv10 | YOLOv10 团队 | Python 3.8.0+; PyTorch 2.0.1+cu118; CUDA 11.8; CUDNN 8.7 | |
| YOLOv5 | Ultralytics | Python 3.8.0+; PyTorch 2.2.2+; CUDA 11.2; CUDNN 8.1.2 | |
| YOLOv5 + SAHI | Ultralytics + SAHI 开发者 | Python 3.8.0+; PyTorch 2.2.2+; CUDA 11.2; CUDNN 8.1.2 | |
| YOLOv8-Seg | Ultralytics | Python 3.8.0+; PyTorch 2.0.1+cu118; CUDA 11.8; CUDNN 8.6.0+ |
访问受限。请登录或开始试用以查看此内容。
申请许可以重复使用本 JoVE 文章的文本或图表
申请许可