目录
- 总结本项目开发经验和所学到的知识;
- 将开发过程中遇到的问题加以阐述和说明。
名称:开关门识别
提出者:佳博
开发时间:2022年3月11日-
3.1 主要功能
功能点 | 说明 |
开门、关门识别 | 门完全关才算关 |
开关门异常识别 | 门卡住 |
3.2 精度&&性能
指标 | 输入尺寸 | 量化精度 | 推理耗时(200MHz) | 准确率 |
值 | 112x112 | Int16 | 13ms | 99.97% |
4.1 场景分析
场景 | 说明 |
电梯类型 | 双开门、单开门 |
图像尺寸 | 正常模式(16:9) |
中间尺寸 | |
走廊模式(9:16) | |
电梯门 | 带电梯门屏幕电梯 |
不带电梯门屏幕 |
4.2 算法调研
相关算法:
-
- 模板匹配
- 相似性比对
- 图像识别
- 行为识别
- 标志物检测(海康)
4.3 算法开发
4.3.1 阶段一:基于零样本的开发
方法1:模板匹配
测试集:
抖音视频:电梯监控视频
测试结果:
受人影闪动等光线条件不稳定影响,匹配结果的稳定性很差。
方法2:相似性比对
测试集:
同模板匹配
测试结果:
- 对开关门具有一定的区分度;
例:关门相似度为0.98,开门相似度为0.92
- 不同电梯的开关门阈值差异大;
例:一部电梯关门相似度为0.98,开门相似度为0.92,另一部电梯关门相似度为0.85,开门相似度为0.7。
- 对于环境的变化,基本没有优化措施可用
例:遮挡、光线变化、物体搬移
4.3.2 阶段二:基于图像的开发--图像分类
图像来源:维小保
训练集:
数量:6000张
开门类别:
关门类别:
数据预处理
- 图像识别要尽可能去处多余的背景,电梯开关门截取上半部分图片。
- 数据增强:
类型 | 取值范围 | 执行概率(%) |
随机resize | 16:9--9:16 | 1 |
随机裁剪 | 0.02 | |
灰度图 | 0.5 | |
随机变色 | 0.02 | |
随机噪声 | 椒盐噪声、高斯噪声 | 0.02 |
随机模糊 | 高斯模糊 | 0.02 |
随机畸变 | 中心点畸变、水平/垂直畸变,适应不同尺寸的电梯门 | 0.1 |
随机遮挡 | 0.02 | |
水平翻转 | 0.5 | |
随机旋转 | -30°-- 30° | 0.1 |
测试结果:
- 精度可以达到99%以上;
- 存在无法解决的场景:
无法应对电梯门贴巨幅广告的场景;
无法应对特定电梯外背景;
例:电梯外正对管道井门或消防栓门。
4.3.3 阶段三:基于视频的开发--动作识别
视频来源:维小保、云梯
4.3.3.1 面向sca200的动作识别算法设计过程
1. 基于C3D算法的开关门识别精度验证
训练集:
输入帧数:4帧
类别:
开门:
关门:
门不动:
输入:
4x3x112x112
数据预处理:
- 尽可能去处多余的背景,电梯开关门截取上半部分图片。
- 数据增强:
类型 | 取值范围 | 执行概率(%) |
随机resize | 16:9--9:16 | 1 |
随机裁剪 | 0.02 | |
灰度图 | 0.5 | |
随机变色 | 0.02 | |
随机噪声 | 椒盐噪声、高斯噪声 | 0.02 |
随机模糊 | 高斯模糊 | 0.02 |
随机畸变 | 中心点畸变、水平/垂直畸变,适应不同尺寸的电梯门 | 0.1 |
随机遮挡 | 0.02 | |
水平翻转 | 0.5 | |
随机旋转 | -30°-- 30° | 0.1 |
测试结果:
- 精度可以达到99%以上;
- 可以解决图像分类难分样本。
但是sca200不支持3D卷积运算,需要采用2D卷积来近似实现3D卷积的功能。
- N通道输入的2DCNN分类网络
输入:
将4帧3x112x112的图像合并为12x112x112的Tensor,图像分类网络输入卷积层改为3x3x12,
数据预处理:
同上
测试结果:
训练精度在90%左右。分析:2DCNN神经网络对通道顺序不敏感,比如,同一个模型,RGB输入和BGR输入预测的结果相近。
- 仿C3D
说明:C、H、W维度降采样次数与C3D保持一致。
输入:
4个3x112x112输入
数据预处理:
同上
测试结果:
类比C3D
4.3.3.2 模型优化
参数规模:
精度不下降的前提下,参数量可降为原模型的1/5。
数据增强:
类型 | 取值范围 | 执行概率(%) |
帧倒序 | 0.5 | |
帧乱序 | 0.5 |
特殊场景优化
- 临界状态切换不稳定
修改类别标签:
关门:
关门中:
开门:
门不动:
开门中:
添加状态机:
状态转移表:(0:关门 1:关门中 2:开门 3:门不动)
现态 | 次态 | 输出 |
0 | 3 | 3 |
0 | 2 | 2 |
1 | 0 | 0 |
1 | 2 | 2 |
1 | 3 | 0 |
2 | 3 | 3 |
2 | 1 | 1 |
3 | 2 | 2 |
3 | 1 | 1 |
任意 | =现态 | 现态 |
任意 | 连续四次结果一样但不在以上转移范围 | 转移到和四次结果一样的状态 |
其他 | 不变 |
问题:
关门中与关门、开门中与开门存在10%的类别混淆。
- 竖线条状物体的移动会导致识别错误
细分任务上的模型容易受到噪声干扰,借鉴大模型思想,采用开源数据集ucf作为上游任务,训练具有200个类别(含开关门类别)的大模型。
- (针对类别混淆)提高稳定性:输入模糊+输出计数
采用线性滤波器对输入进行特定方向的滤波,只保留门缝清晰:
分别合并开门与开门中、关门与关门中,输出后处理从状态机改为计数。开关门动作是个连续缓变的过程,而不是突变过程,因此可以采用计数累加形式。后处理:
- 设定计数器,值域为0~7
- 当输出状态为0时,计数器减1;当输出状态为1时,计数器加1
- 设定开门阈值o和关门阈值c,当计数器值<c,判断为关,当计数器值>o,判断为开。
5. 遗留问题
缺乏单开门数据