行为识别模型简介
2023-9-8
| 2024-2-28
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password

1. 行为识别 Human Action Recognition (HAR)

  • 行为识别模型有两个方向: 第三人称动作识别和第一人称动作识别.
  • 使用的各方向和对应的方法大致如下图, 本篇文章只介绍第三人称动作识别 RGB 模态.
    • notion image
  • 详细可以参考调研论文. [1]

2. 第三人称动作识别 RGB 模态

第三人称动作识别 RGB 模态方面的研究很多, 因为二维的视频数据相对来说更容易获得.
notion image
notion image

2.1. Two-stream CNN-based

双流指的是空间流和时间流, 其中空间流获得单帧图片的特征图, 时间流获得光流图 (水平分量, 垂直分量, 这里计算的是稠密的光流图, 逐像素都进行计算) 的特征图, 两者 Softmax 结果融合. [2]
notion image
  • 双流 CNN 方法的优点是在数据较少的情况下, 光流直接作为输入传递给时间流, 这样动作的特征更容易学习. 所以在数据较少的情况下, 双流 CNN 比 3D CNN 效果更好. [3]
    • notion image
光流图如何生成?
  • 光流式空间运动物体在观察成平面上像素运动的瞬时速度, 是利用图像序列中像素在时间域上的变化. [5]
  • 光流图的生成需要两个假设
    • 假设相邻帧之间光的亮度不变
    • 假设领域光流相似
  • 传统方法有 稀疏光流估计算法 (Lucas Kanade Method) 稠密光流估计算法 (Gunnar Farneback Method). [7] 传统稠密光流估计函数 cv2.calcOpticalFlowFarneback, 性能由于稀疏光流估计, 但是速度较慢, 50w ppi 视频 CPU 9.75 fps; CUDA 170.22 fps
    • 传统的光流估算方法介绍
      假设一个物体的亮度为 , 它移动到了 处, 此时亮度为 . 假设两帧之间的亮度不变, 则
      移动后亮度使用泰勒近似可以获得
      将公式 (1) 带入公式 (2)
      取消相同项可以获得
      两边除以 就可以获得光流方程
      • 其中
      • 是沿横轴的图像梯度, 是沿纵轴的图像梯度, 是沿时间的图像梯度.
      转换为矩阵形式
      这里需要计算每个像素点的 这两个向量 (光流的水平分量和垂直分量), 两帧之间的时间 已知, 但是只有一个公式是无法算出两个未知量的.
      这里需要用到领域光流相似的假设. [7] 就是以某一点为中心, 设定的 (如 3x3) 领域内所有像素点光流值一致.
      notion image
      上面的公式是 的形式, 可以求得光流 的最小二乘解.
      但是必须要求 可逆, 否则公式 (4) 会出现多个解, 即孔径问题 (Aperture problem), 如下图, 相邻帧从圆孔中观察条纹变化, 发现没有变化, 从而无法计算出光流方向.
      notion image
      所以, 亮度变化明显的角点更容易被计算出光流.
深度学习方法: FlowNet 性能低于传统方法; FlowNet2 [10] 性能追平传统方法, 并且速度很快
notion image
notion image
  • 稀疏光流估计算法做了两个假设: 1. 亮度不变, 假设前后两帧同一物体亮度不变; 2. 领域光流相似, 假设一个像素点周围的8个像素点的移动方向与该像素点一致.

2.2. 3D CNN-based

将具有空间维度和时间维度的视频帧一起输入 3D CNN 网络中. 可以更好的获取到视频中的时间信息 [9]. 但是 3D CNN 的计算成本高于 2D CNN (不包括光流图的计算).
notion image
  • 优化方案
    • TSM [8a][8b] 提供了一种既高效, 性能又好的模块. 这个模块可以注入 Backbone, 后面可以接行为识别或者物体检测 (用于应对运动模糊, 遮挡, 失焦等问题), 这个论文用的是二维卷积, 但是达到了三维卷积的效果.
      notion image
      • 网络
        • 网络末尾做了一个自适应池化nn.AdaptiveAvgPool2d(1), 将结果拉成了一维, 用nn.Linear(feature_dim, num_class))作为全连接层, 最后softmax分类.
      • 视频帧采样, 使用 long-range temporal 采样策略. 就是将视频均分为 等分. 每一份片段中随机采样 1 帧 (这个和 TSN 一样), 获得网络输入 .
      • Temporal Shift Module (TSM)
        • 本论文最重要的贡献就是 TSM. 通过网络结构图可知, 每张图片都经过 Conv-2D, 获得的是一组按时间排列的二维特征图, 问题是为什么 TSM 能够实现在 Conv-2D 上对时空双方进行建模呢?
        • Shift: 对于矩阵 tensor(T*C*H*W) C=3, TSM 沿着时间 (temporal) 维度移动部分的通道 (比如bi-direction 进行了时间维度上的 shift +/- 1), 使得每个时间维度上的矩阵 tensor(C*H*W) 能够获得相邻帧的特征 (一般通道只有三条, 所以一条后退 1 帧, 一条前进 1 帧, 一条不动), 在时间维度上感受到 3 (-1 0 +1)帧的范围.
        • Multiply-accumulate(乘法累加): 假设有一维卷积, kernel size 为 3, 则 , 卷积算子 , 假设输入是一维向量 (单通道), 算子的输出可以被写为 .
        • 举例来说, Shift 移动的 3 个位置 分别乘以这三个权重, 乘法累加的总和为 (输出)
          • 但是这样简单的位移策略效率和性能都不高.
        • 模块的优化方案
          • 使用残差位移, 在残差分支内融合时间维度信息.
            • notion image
          • 对于实时的视频来说, shift 就只能单向了, 因为后一帧是未知
            • notion image
        • 性能和效率
          • notion image
            notion image
        TDN [17] 提出了一种时间差分网络 (Temporal Difference Networks), 利用时间差分算子来设计有效的时间模块 (TDM). 为了充分捕捉视频的信息, TDN 使用了两级差分建模.
        • 预处理
          • 稀疏采样, 将视频分为 个区域, 在每个区域中随机采样一帧.
          • 密集采样, 采样稀疏采样帧的前后的连续两帧, 就是一共连续 5 帧的密集采样.
        • 网络结构
          • 短期时差模块 (S-TDM) 连续帧上的时间差异用于为 2D-CNN 提供更精细的运动模式. 因为只用单帧无法获得局部的运动信息.
            • 在相邻帧之间作差, 并堆叠起来用单一尺度的卷积层计算特征, 并与中间的那一帧的特征做融合. 这样就可以获得短期运动信息.
            • 这里对连续帧之间的差值, 做了平均池化+堆叠+卷积 (这么做是为了提升效率), 论文中说, RGB 差异在运动区域非常明显, 所以特征在低分辨率下也不会有太大损失.
            • 但是, 这个模块获得的特征无法学习到长期的运动信息.
          • 长期时差模块 (L-TDM)较大时间间隔短期运动信息来获得长时间的运动特征.
            • L-TDM 是双向的, 多尺度的注意力机制.
              • 双向是指: 对相邻的局部运动特征
            • 由于间隔时间较大, 相邻的片段之间的空间位置可能没有对齐.
              • 通过相邻的片段来计算对齐的时间差
                • 表示 对齐的时间差, 用于空间平滑的通道卷积.
            • 使用三个尺度的特征信息相融合获取长时间间隔的运动特征.
        notion image
        notion image
        notion image

    2.3. RNN-based

    使用 LSTM 或变种, 输入一般和双流一样, RGB帧 + 光流图, 如 [11], 网络结构如下
    notion image
    也有不使用光流图的, 如[12], 但是性能上不如较新的有光流图的网络结构.
    总之由于使用了 RNN 网络, 使模型的效率降低, 所以 RNN-based HAR 论文中一般都不会去标出效率指标.

    2.4. Transformer-based

    将 ViT (用于图片分类的 transformer 模块) 扩展到了视频, 将视频分解成一连串帧级别的块, 使用分割注意力机制, 在模型的每个块内分别应用空间和时间的注意力. [13]
    notion image
    notion image
    ViViT [14] 从视频中提取时空特征, 通过变换层进行编码.
    notion image
    notion image
    notion image
    MTV-H [15] 引入了由多个独立编码器组成的多视图转换器, 可有效融合来自不同表示形式的信息, 包括视频的时空特征信息. [15]
    notion image
    RViT 进行了效率优化, 它的 FLOPs 与 TSM 和 TDN 是相同级别, 并且性能高于 TDN. 目前平衡性能和效率的最佳选择. [16]
    RViT 在变压器中采用递归机制来实现视频动作识别任务. 这个机制导致了性能, 效率的提升并且降低了显存使用量.
    notion image
    notion image
    notion image

    参考

     
  • Deep Learning
  • PyTorch
  • HAR
  • 一些数据预处理的方法OCR文本识别和CRNN算法简介
    • Giscus
    目录