视频目标检测论文

记录一些略看的视频目标检测论文,持续更新。。。

概要:目标检测已经做到很成熟了,但是视频目标检测确实还在发展之中,视频目标检测主要挑战在于在长视频中往往有些帧的质量非常差,比如目标物体出现以下情况,单纯的目标检测算法难以胜任(图片来自于FGFA论文)

 既然单帧图片进行检测效果不好,视频目标检测的主要考虑就是如何去融合更多的时空上面的特征,比如从bbox,frame,feature,proposal等level进行特征融合,从而弥补在训练或者检测中单帧得到的特征的不足。大概就是从上面level上面去融合特征,怎么去融合特征。

数据集:常用的数据集就是ImageNet VID dataset, 其中训练集包含了3862个video snippets,验证集含有555个snippets。共有30个类,这些类别是ImageNet DET dataset类别的子集。有时候训练集也可以用ImageNet DET这30个类的图片集。

评价标准:沿用目标检测中的mAP,但是会根据目标的速度分为mAP(slow), mAP(medium), mAP(fast), 划分标准按照FAFG论文中的方法为求当前帧与前后10帧的IOU的平均得分值score,the objects are divided into slow (score > 0.9), medium (score ∈ [0.7, 0.9]), and fast (score < 0.7) groups。

1.Flow-Guided Feature Aggregation for Video Object Detection(ICCV 2017)

论文链接:https://arxiv.org/abs/1703.10025v2

主要贡献: 论文的主要算法流程如下图

 流程图中的Nfeat才用的是resnet101(其中最后一个block stride改为了1,采用了dilation conv),F(Ii, Ij )用的FlowNet, embedding features采用Embedding network, 按照文中的说法Embedding network(It has three layers: a 1 × 1 × 512 convolution, a 3 × 3 × 512 convolution, and a 1 × 1 × 2048 convolution. It is randomly initialized.) 最后detection network采用R-FCN。Nfeat会随着帧数不断的更新。

最后是实验结果图,就想作者在文中说的,这个方法的速度还是有些慢的。

其他 :

  • 物体速度越快,光流的效果就会越差
  • 只是融合了当前帧相邻的前后帧,是否有些局部,是否有一个更加全局的特征融合

2.Leveraging Long-Range Temporal Relationships Between Proposals for Video Object Detection(ICCV 2019)

论文链接:http://openaccess.thecvf.com/content_ICCV_2019/papers/Shvets_Leveraging_Long-Range_Temporal_Relationships_Between_Proposals_for_Video_Object_Detection_ICCV_2019_paper.pdf

主要贡献:受non loca,relation network的启发设计了一个relation block来发掘视频序列中targetframe与support frames提取的proposal之间的关系,在这个relation block中还引入了feat norm以及一个graph loss进一步提高准确率

主要框架图,这个图为了简化support frame只画了一帧。

 relation block的结构图

 对于图中的feat norm文中采用了两种方式,即uncentered and zero-centered normalizations. zerocentered normalization uses LayerNorm that includes additional learnable parameters,并且对比了效果,结果证明加了loss的 center-norm取得了更好的精度。

 对于文中的graph loss,一个好的矩阵G是满足当proposal xi,xj属于同一个instance的时候,Gij的值比较大,不属于同于个instance的时候,Gij的值比较小。loss公式如下。

 yij是lable,当xi与xj是不同的instance的时候值为0,否则值为1. 在featture norm之后||x_i||^2=||x_j||^2=1

 因为在featnorm之后G的值会被bounded,也就是值会比较小,所以在softmax之前会乘以常数10,

文中还对relation block的位置进行了实验,(support source layer → target source layer(s)),即support与target的feature来自哪里的fc,其中fc6→{fc6, fc7}就对应着主要框架图中的结构,support feature来自fc6,target feature来自fc6,fc7,有两个relation block,可以看出这种情况下效果最好。

最后backbone为resnet101的时候,mAP=81.0

其他:

  • graph loss的作用是为了让相同proposal的feature尽可能的接近,从而取得更好的结果,从实验中看也确实取得了更好的效果,那是否可以理解为relation block是在用相同instance proposal的feature来强化target frame proposal,而弱化不同的呢,可以试试输出最后得到的每个support frame proposal对于target proposal的贡献
  • 实验中的graph loss差不多就是一个二分类的交叉熵,距离度量也是采用的L2,感觉可以考虑其他的损失函数形式和距离度量方法

3.Sequence Level Semantics Aggregation for Video Object Detection(ICCV 2019)

论文链接:https://arxiv.org/abs/1907.06390v2

主要贡献:以faster rcnn为backbone设计了一个selsa模块来提高在视频目标检测数据集即VID中的精度,训练集是DET与VID。这个selsa模块其实就是一个attention模块,训练的时候采用三帧,旨在对rpn输出的proposal提取的roi_feature进行融合,即生成一个similarity(900*900, 三帧每帧提取300个proposal,矩阵的每个值含义为每两个proposal提取出来的特征的余弦距离)矩阵,使得相同物体的proposal得到的roi_feature之间的距离尽可能小,最后用这个similarity矩阵对原来的proposal得到的特征(900*1024, 1024是在roi_pool得到的特征900*256*7*7之后flatten,接着用了一个fc(256*7*7,1024))进行加权,使得最后的proposal提取出来的roi_feature更加具有上下文的特征。最后计算loss的时候,作者采取的方法也很暴力,直接去掉另外两帧得到的特征即得到(300*1024),接着在经过box_head(其实就是两个fc,reg_fc,cls_fc)计算损失。测试的时候采用21帧,计算第11帧的精度的时候其前后10帧都是随机从该sequence中选取的。

贴一张文中的实验结果图

整个网络结构其实就是faster rcnn提取的roi_feature之后接fc-selsa-fc-selsa-box_head, selsa模块pytorch代码待补充(分析与non local联系)。。。

其他

  • 文中说这个selsa的attention模块得到的similarity矩阵有一种Spectral Clustering的思想,即将相同物体的proposal最后得到的特征尽可能聚集在一起,不同的尽可能分开,但是在代码中没有显式的体现出来
  • 训练的时候采用三帧,但是在进行proposal_target的时候只用到了一帧的gt,在计算最后的loss的时候直接把三帧得到的proposal特征900*300丢弃掉其他两帧的,是否还有其他处理方式
  • 开源代码中的backbone resnet101结构跟原来的resnet101有些不一样,在resnet101的block4提取出proposal并计算rpn loss,但是又在resnet的block5进行roi_pool,block5没有产生stride,而且由于没有stride,又为了增加感受野采用了dilation

猜你喜欢

转载自blog.csdn.net/breeze_blows/article/details/104533004