基于红外视频的有害气体识别方法
本文共622字。
版权声明:
署名-非商业性使用-相同方式共享 | CC BY-NC-SA 2.5 CN
简介
有个半研究型的任务,要从红外摄像头拍摄的视频中判断是否有气体泄漏。假定:
- 摄像头位置固定
- 输出为灰度视频
- 人眼可识别气体泄漏(该摄像头对特定波长的光谱信号敏感)
要求
- 识别出来有没有
- 泄漏的位置
- 估算浓度
我的方案
运动是气体泄漏识别的关键,单帧图像中,气体泄漏部分的那层“雾”和背景的亮度差太小,无法判断。因此我做帧间差分来生成特征图像,然后用深度学习算法进行训练。
差分
三个差分帧,如下表所示。
源帧1编号 | 源帧2编号 |
---|---|
1 | 5 |
5 | 15 |
15 | 35 |
每个差分帧由两帧的差值生成。差值有正有负,所有点+128则可得到非负整数,把三个差分帧+128, 组合起来可以得到一个彩色的差分特征图像。
局部区域提取
如果用一个图像的整体去训练,会导致无法识别局部区域。因此,我提取了局部区域,用局部区域训练。提取的方法是累计差分的绝对值和,设定阈值和小块,多帧中某小块累计差分的绝对值和大于阈值,则认为是感兴趣的小块,把多个小块组合起来,得到待分析的局部块。用这个局部块做mask,从差分特征图像提取块,送去训练/推理。
训练和推理
这步比较像炼金术,我尝试了下,用Pytorch的几个基础的预训练模型做Finetune, 效果还可以
- Resnet
- Inception
但是我感觉这里面有一个问题,我标注的图像块大小都是 ,而Resnet 的输入图像是 ,这导致
- 不必要的向上Scale,算法有些慢
- 有可能,需要手动设计算法架构,修改输入图像的大小为 ,可能能得到更好的结果。
难点
气体团不是刚性物体,运动也不大,常常与其他类型的运动混淆/被其他的运动所掩盖:
- 云朵的运动
- 风吹树叶的摆动
比如下面这个视频,就算是人看,不注意的话是不知道气体泄漏的,需要仔细分辨。