提出了一种基于局部特征的分块图像标注方法,利用EBike-DET数据集和主流目标检测模型,以提升复杂电梯场景下的电动自行车检测性能。
需要JoVE订阅才能观看此内容。 请登录或开始免费试用
提出了一种基于局部特征的分块图像标注方法,利用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%。
访问受限。请登录或开始试用以查看此内容。
本研究使用的EBike-DET数据集由作者通过在电梯、停车场和街道环境中进行实地拍摄所收集的图像,以及从网络平台获取的公开电动自行车图像组成。所有实地图像采集均在非私人环境中进行,仅用于电动自行车检测相关的安全技术研究。图像并非有意针对个人,任何偶然捕捉到的人员均因距离、遮挡、背对镜头或经过适当处理(去除了面部特征及其他个人身份信息)而无法识别。网络来源的图像仅从允许学术研究再使用的平台或根据开放许可发布的资源中获取。所有图像 strictly 用于非商业性研究和教育目的。由于未收集可识别的个人数据,且未与人类受试者发生直接互动,根据作者所在机构的指导原则,本研究无需获得机构伦理委员会的批准。
1. 数据集构建
访问受限。请登录或开始试用以查看此内容。
在公共数据集上比较整体注释与分块注释
评估在一个包含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+ |
访问受限。请登录或开始试用以查看此内容。
本文已发表
视频即将推出