基于红外视频的有害气体识别方法

本文共622字。
版权声明: 署名-非商业性使用-相同方式共享 | CC BY-NC-SA 2.5 CN
展开

简介

有个半研究型的任务,要从红外摄像头拍摄的视频中判断是否有气体泄漏。假定:

  • 摄像头位置固定
  • 输出为灰度视频
  • 人眼可识别气体泄漏(该摄像头对特定波长的光谱信号敏感)

要求

  • 识别出来有没有
  • 泄漏的位置
  • 估算浓度

我的方案

运动是气体泄漏识别的关键,单帧图像中,气体泄漏部分的那层“雾”和背景的亮度差太小,无法判断。因此我做帧间差分来生成特征图像,然后用深度学习算法进行训练。

差分

三个差分帧,如下表所示。

源帧1编号 源帧2编号
1 5
5 15
15 35

每个差分帧由两帧的差值生成。差值有正有负,所有点+128则可得到非负整数,把三个差分帧+128, 组合起来可以得到一个彩色的差分特征图像。

局部区域提取

如果用一个图像的整体去训练,会导致无法识别局部区域。因此,我提取了局部区域,用局部区域训练。提取的方法是累计差分的绝对值和,设定阈值和小块,多帧中某小块累计差分的绝对值和大于阈值,则认为是感兴趣的小块,把多个小块组合起来,得到待分析的局部块。用这个局部块做mask,从差分特征图像提取块,送去训练/推理。

训练和推理

这步比较像炼金术,我尝试了下,用Pytorch的几个基础的预训练模型做Finetune, 效果还可以

  • Resnet
  • Inception

但是我感觉这里面有一个问题,我标注的图像块大小都是 48×4848 \times 48 ,而Resnet 的输入图像是 224×224224 \times 224 ,这导致

  • 不必要的向上Scale,算法有些慢
  • 有可能,需要手动设计算法架构,修改输入图像的大小为48×4848 \times 48 ,可能能得到更好的结果。

难点

气体团不是刚性物体,运动也不大,常常与其他类型的运动混淆/被其他的运动所掩盖:

  • 云朵的运动
  • 风吹树叶的摆动

比如下面这个视频,就算是人看,不注意的话是不知道气体泄漏的,需要仔细分辨。

可能的改进思路

视频分类算法列表

TimeSformer

openmmlab