前言
遇到一个需求,需要调研下action-recognition,基于加强记忆和节约时间两个因素,本文主要是记录调研的参考文献。顺序为插序。
视频的分析不同于图片的分析,因为多了一个维度:时间。在时间维度上,视频分析需要考虑两个相邻帧的图片。从而引出第一个知识点——光流。
关于视频分析是干什么的,有什么难点,请参见如下连接:
https://www.zhihu.com/question/264575930/answer/852525445 《行为识别(action recognition)目前的难点在哪?》
https://www.cnblogs.com/captain-dl/p/11831685.html《动作识别新论文20191110:action recognition》
第一步:光流
所谓光流,可简单理解为物体的运动方向。上一秒(其实单位是帧)物体A在(x1,y1)点,下一秒(其实单位是帧)物体A在(x2,y2),这就是物体A的流向。
定义+数学理论+实验代码(opencv实现)详见如下链接:
https://docs.opencv.org/4.0.0-alpha/d7/d8b/tutorial_py_lucas_kanade.html《opencv官网指南》
https://zhuanlan.zhihu.com/p/69999853《OpenCV视频分析-光流分析》
一个视频好多帧,一帧好多像素点,每个像素点我们都要处理它的光流吗?即,我们需要分析一帧中所有像素点(物体对象A)吗?显然不是,这就引出第二个知识点——角点。
第二步:检测Shi-Tomasi角点
所谓角点,就是关键点,它的改变对整体改变很大,也称特征点。关于名称的叫法,记住便可,如果我是先驱,我就把它叫做“最最牛角尖”。
角点的检测可以说是视频分析的第一步,意思是说,一开始核心点(位置)都找错了,后面的处理便失去了意义。因此角点的检测算法也是不断的更新,从Moravec到Harris再到Shi-Tomasi。
详见参考链接:https://blog.csdn.net/xw20084898/article/details/21180729《Harris角点及Shi-Tomasi角点检测》
https://www.jianshu.com/p/163ff90e35a9《OpenCV-Python教程:35.Shi-Tomasi 角点检测和特征跟踪》
第三步:图像金字塔
从光流到角点,现在在回头继续往下看光流,opencv的中实现函数为:cv2.calcOpticalFlowPyrLK()。它有两个参数,是与图像金字塔概念相关的,从而又引出了什么是图像金字塔。
- winSize--> 在计算局部连续运动的窗口尺寸(在图像金字塔中),default=Size(21, 21);
- maxLevel--> 图像金字塔层数,0表示不使用金字塔, default=3;
所谓图像金字塔就是:层次级别表示图像,金字塔最底,所占面积大,越向上层,所占面积越小;同理,图像金字塔最底层分辨率最大,越向上分辨率越小。好处:一个源图片,存在多个尺度(分辨率)的表达。
https://blog.csdn.net/zhu_hongji/article/details/81536820《【OpenCV学习笔记】之图像金字塔(Image Pyramid)》
https://www.cnblogs.com/FHC1994/p/9128005.html《python+opencv图像处理之图像金字塔》
第四步:R-C3D网络实现动作检测
读了一篇论文《R-C3D: Region Convolutional 3D Network for Temporal Activity Detection》。核心思想总结如下:
基于现有模型,存在两点问题:计算效率较低和视频分析时只支持固定帧数(比如16帧)。一起分析的帧数越少,相关性获取到的特征越差,所以R-C3D来解决这两个问题。
R-C3D由三个问题组成,一个是视频特征提取,一个是活动检测的提案,一个是活动分类及边界优化。
为了解决原先固定帧数的问题,R-C3D将二维的卷积扩展到三维卷积上,这样宽、高、时长(帧数)都是可以任意了。
动作检测涉及三个维度:时间上,就是活动什么时候开始,什么时候结束;空间上,这个对象(动作的发出者)的宽高范围。所以R-C3D的第二部分就是处理这个问题。时间维度上:生成L/8个的中心点(L为帧数),然后在每中心点存在K个偏移。
活动检测生成的提案有许多,在活动分类时,会基于NMS和IOU对提案进行过滤,将有价值的提案再进行分类处理和边界优化。
第五步:NMS和IOU概念与实现
NMS(Non-Maximum Suppression)非极大值抑制。在物体检测中,会画出好多个候选框来,在当前的分类类别里,每个框里是这个分类的概率是不同的,概率最高的框最有可能是物体检测的结果,其他的框则可以忽略。
NMS的过程是:将所有框按概率从高到低排序,去掉低概率的框(基于IOU)。
IOU(Intersection-over-Union) 意思是交并比,用来表述两个框重合度的。比如框A和框B,P(A)>P(B),NMS过程中要不要去掉B,取决于框A与框B的重合程度。(A交B)/(A并B)。
参考链接:
https://blog.csdn.net/zhang_shuai12/article/details/52716952《物体检测中常用的几个概念迁移学习、IOU、NMS理解》
https://blog.csdn.net/m0_37605642/article/details/98358864《目标检测中NMS(非极大抑制)的概念理解》
第六步: