@wanghuijiao
2021-07-12T11:24:41.000000Z
字数 7471
阅读 1438
视频理解领域小样本调研报告
学习笔记
- 修改记录:
- 2021.3.26:
- 前言增加小样本学习的解决效果
- 第一章增加了1.1结论部分
- 2.2小节增加了论文一句话总结
- 2.3小节增加了论文分类信息
- 2021.4.15:
- 调整第0和1章的结构,让行文逻辑更清晰
- 明确1.1问题定义
- 整理4.2节开源代码评估信息
- 增加2.3节中开源代码的超链接
0. 前言
背景
- 在利用行为识别算法解决跌倒检测任务过程中,出现了数据极度不均衡和跌倒样本少的问题,公开数据集中日常行为样本量远多于跌倒样本,而跌倒样本数据采集和标注成本高且困难。小样本学习任务则是利用少量带标签的数据来训练得到一个好模型。因此,对视频领域的小样本学习方法进行调研,评估是否能够用来解决跌倒样本少和数据不均衡问题。
本文组织结构
- 第一章给出小样本学习和行为识别面临的问题的定义和本文的调研结论;第二章至第四章分别从算法原理、实施步骤、开源算法资源等角度评估小样本学习的可行性,调研了视频领域小样本学习方法的最新算法研究现状、算法流程以及应用小样本学习解决行为识别任务操作说明。附录给出了一些小样本学习任务中必要的概念说明。
参考资料
1. 问题定义和调研结论
1.1 问题定义
1.1.1 行为识别算法面临什么问题?
- 跌倒数据量太少
- 缺少专门用于跌倒检测任务的公开数据集
- 自费采集的曼孚数据集跌倒动作太假,且跌倒类别单一,数量少
- 数据分布极度不均衡
1.1.2 小样本学习可以解决什么问题?解决的怎么样?
“小样本学习”问题定义
- 人类非常擅长通过极少量的样本识别一个新物体,比如小孩子只需要书中的一些图片就可以认识什么是“斑马”,什么是“犀牛”。在人类的快速学习能力的启发下,研究人员希望机器学习模型在学习了一定类别的大量数据后,对于新的类别,只需要少量的样本就能快速学习,这就是 小样本学习要解决的问题。小样本学习重点解决模型扩展性差、样本量少的问题。
如何解决扩展性差的问题?
- 对于一个训练好的模型,有新的类别要识别的话,常规做法是:首先收集新类别大量的标注样本,然后重新训练模型。这种方法费时费力,且很难收集大量样本,比如摔倒动作。小样本学习可以通过学习“分类能力”,在不改变模型的前提下,对从未出现在训练集中的新类别也能进行识别。
- 如何学习“分类能力”?
- 在训练阶段,每次训练都喂给模型不同类别的数据,例如每批次训练从100类数据中选5类数据作为本批次训练的数据(设为数据A),并提供来自相同类别的“参考图片”(设为数据B)给模型,让模型将数据A归类到数据B的类别中,完成分类任务;在下一批次中选定相同格式的另外5类数据A和对应“参考图片”B继续训练,循环往复,直至模型获得对任意输入的5类测试图像正确归类到“参考图像”类别的“分类能力”。
- 解决的如何?
- 最新的小样本动作识别算法对于新类别分类精度大约为60-80%。
如何解决样本量少的问题?
- 小样本多小算小?
- 如何解决?
- 由于模型学习的是分类能力,与具体分什么以及分哪几类都没有关系,每个批次中包含的每类数据量只需要每类6个样本即可;以批次为单位的一次训练可以看作是一个分类任务,因此需要很多个类别(50类以上)的分类任务进行泛化这种“分类能力”。
- 解决的如何?
- 从论文公开的实验结果看,最少需要16类(8类做训练集,8类做测试集),每类50个样本。精度可达60-80%。(参考Olympic-Sports数据集)
1.2 调研结论
1.2.1 能否用小样本学习解决行为识别模型遇到的问题?
- 结论:不能。原因如下:
- 1.开源代码少,且质量堪忧,复现难。
- 2.论文少,且不太成体系,没有像目标检测领域的SSD,Yolo, R-CNN这种级别的论文。
- 3.从原理上分析,小样本模型学习的是“学会分类的能力”,对于目前行为识别中个别类别样本较少的问题而言,小样本学习算法更侧重于模型对于新类别的扩展性,即对从未出现在训练集中的类别进行分类。当训练集中类别数很少(只有6类或者12类,比如曼孚数据集)时,不确定是否能够使模型获得这种“对从未见过的数据进行分类的能力”。
- 直观感受:
- 发论文可以,实际应用大概不行。现在在数据集上精度大多是70-80%,实际应用时效果预计会更差一点。
1.2.2 假如尝试将小样本学习用于跌倒检测,预计能达到什么效果?
- 预计在50类行为数据,每类100个视频的数据集上,识别精度达60-80%。
- 假如要做视频理解小样本学习的话,或许可以从元学习或图像分类小样本学习任务中进行拓展,下面提供几个靠谱的元学习的开源项目:
2. 小样本学习研究现状
2.1 常用数据集
2.2 主流算法可以分为哪几类
- Generative Method生成:
- 利用生成模型为标签少的类别生成足够的数据去微调训练模型;(有点像数据增强的一种,凭空造数据,然后用假数据去训练模型)。
- Metric-Based方法:
- 通过模型学习一个好的特征表达,便于用分类器分类或者直接用距离度量函数去度量相似度。
- 例如复合记忆网络(Compound Memory Network, CMN-2018ECCV), CMN结构将支撑集中所有类别的特征进行存储,然后用Multi-Saliency Embedding算法 将Query中不同长度的视频序列编码成固定长度的矩阵表征,之后搜索最近邻类别作为识别结果。
- 从这个分支又可以分为基于时间信息的或基于空间和时序的方法。
- 基于时序对齐的方法
- 时序注意关联网络(Temporal Attentive Relation Network,TARN-2019BMVC),利用注意力机制对齐视频时序,然后学习距离度量策略计算对齐后视频表征间的相似度。
- 有序时序对齐算法(Ordered Temporal Alignment Module,OTAM-2020CVPR),通过有序时间对齐操作利用视频中的时间有序信息显著提高小样本的数据使用效率,通过在对齐路径中计算Query视频和新类别间的距离进行分类。
- 时间相关交叉转换器(Temporal-Relational CrossTransformers, TRX-2021CVPR)通过交叉转换器(CrossTransformer)注意力机制建立类别原型,与之前的工作不同在于,建立类别原型的过程中考虑到了支撑集中所有相关子序列,不是最优的一个视频片段,也不是类别中所有视频的平均,而是综合考虑了长度不一的子序列的信息,最终得出类别原型。然后进行分类操作。
- 基于时空的方法
- 动作关联网络(Action Relation Network,ARN-2020ECCV),在C3D编码器的基础上构建时空视频块来捕获短程动作模式,同时利用了空间和时间注意力模块和自监督来加强池化过程中的重写模块的权重。同样也是通过计算视频特征相似度来进行动作识别的。
- 半监督小样本动作识别(Semi-supervised Few-Shot Atomic Action Recognition FAAR-arXiv2020), 模型通过无监督和对比视频嵌入特征、动作对齐、多特征比较和基于注意力的聚合等操作,提取更多有代表性的特征,增加了模型在空间和时间对齐以及动作变化方面的灵活性。
- 还有结合深度信息与RGB信息的方法
- 自适应元融合网络(Adaptive Meta-Fusion Network, AMeFu-Net-2020ACM), 在计算特征的时候,多加了一路深度信息,用融合网络将RGB特征和深度特征进行融合,然后用分类器进行分类。
2.3 各种SOTA方法在数据集上的精度
- 以下精度特指5-Way 5-Shot任务(N-Way k-Shot定义见附录)
算法 |
算法类别 |
UCF101 |
HMDB51 |
Kinetics-100 |
SSv2-100 |
miniMIT |
Olympics-Sports |
HAA |
Finegym |
ProtoGAN (2019ICCV) |
Generative Method |
80.2 |
54.0 |
-- |
-- |
-- |
86.3 |
-- |
-- |
Ashish et.al (2018WACV) |
Generative Method |
78.68 |
52.58 |
-- |
-- |
83.81 |
-- |
-- |
|
CMN (2018ECCV) |
Metric-Based |
-- |
-- |
78.9 |
-- |
-- |
-- |
-- |
-- |
CMN-J (2020TPAMI) |
Metric-Based |
-- |
-- |
78.9 |
48.8 |
-- |
-- |
-- |
-- |
TRAN (2019BMVC) |
Metric-Based (时序) |
-- |
-- |
78.5 |
-- |
-- |
-- |
-- |
-- |
ARN (2020ECCV) |
Metric-Based (时空) |
84.8 |
59.1 |
82.4 |
-- |
57.35 |
-- |
-- |
-- |
OTAM (2020CVPR) |
Metric-Based(时序) |
-- |
-- |
85.8 |
52.3 |
-- |
-- |
-- |
-- |
TRX Git (2021CVPR) |
Metric-Based(时序) |
-- |
-- |
85.9 |
59.1 |
-- |
-- |
-- |
-- |
AMeFu-Net (2020ACM) |
Metric-Based(深度) |
95.5 |
75.5 |
86.8 |
-- |
-- |
-- |
-- |
-- |
Semi-supervised FAAR Git (2020arXiv) |
Metric-Based(时空) |
-- |
-- |
-- |
-- |
61.77 |
-- |
80.68 |
75.84 |
UCF101 Few-Shot Action Recognition Git |
-- |
94.28% |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
3. 小样本学习流程
3.1 数据集长这样
- 以应用最多的Kinetics-100为例
- 来源:Kinetics-100由CMN-ECCV2018算法首次提出,是从Kinetics-400(包含400类动作,共306245个视频片段组成的动作数据集 )中随机筛选出了的100类动作,每类包含100个视频片段。
- 训练集、验证集、测试集分配:按类别分,训练集、验证集、测试集依次为64:12:24。
- 小样本学习经常采用元学习的训练方式,而元学习的训练和测试阶段通常包含两种数据集,分别为Support Set和Query Set。
- Kinetics数据集划分Support Set和Query Set (以5-way 5-shot任务为例)
- 训练过程的Support Set(S)和Query Set(Q)划分:
- 从64类动作中,任意挑选任意类(通常为5-20,假设为5类)动作,每类任意个(假定5-20)样本,组成S;从这5类动作中剩下的样本中任意选取任意个样本组成Q。
- 测试过程的Support Set(S')和Query Set(Q')划分:
- 从24类动作中,挑选5类(必须为5,因为是5-Way)动作,每类5个样本(5-shot),组成S';从这5类动作剩下的样本中挑选任意个样本组成Q'。验证过程同上。
3.2 模型训练过程
- Episodic Training
- 小样本学习通常采用Episodic Training的方式,Episodic训练过程与通用的基于batch的训练很类似,不同之处在于一个episode采样的数据是由Support Set和Query Set组成的;以5-way 5-shot的任务为例,每个episode的数据由Support Set中5类*5=25个动作视频和Query Set中5类*1=5个动作视频组成。之后训练过程与普通神经网络训练无异。基于Episode的训练方法就是Episodic Training。
3.3 测试流程
- 测试过程与训练过程一模一样,也是以Episode为单位进行推理的。一个Episode由Support Set和Query Set组成,每个Episode数据都是随机挑选的,计算精度的时候是计算10000个Episode的平均。
- 一般5-Way 1-Shot和5-way 5-Shot两种任务较多,少数方法也会公布5-way 2,3,4,10-Shot的精度。
4. 用小样本学习解决行为识别需要做什么
4.1 数据集准备
- 假如要做异常行为检测,需要准备相关数据每类数据至少25个,行为类别数参考公开数据集类别数,大多在50类以上。然后根据需要划分训练过程和测试过程的Support Set和Query Set。
4.2 开源算法复现可行性评估
- 依托论文:Matching Networks for One Shot Learning(非官方源码,是第三方复现)
- 发表时间:NIPS2016
- 作者单位:DeepMind
- 数据集:UCF101
- 算法性能:94.29%(UCF101)
- 源码信息:
- 纯粹是个git repo,没有发表论文
- 依托论文是小样本领域挺出名的文章,解决小样本图像分类问题的,谷歌引用量2514。这个repo应该是从图像到视频任务的拓展。
- 提供了数据集,完整训练和测试代码,训练教程。缺预训练权重文件。
- 个人判断:
附录. 一些必须了解的基本概念