关注公众号,发现CV技术之美

作者:炎思提

原文:https://zhuanlan.zhihu.com/p/425226244

本文转自知乎,已获作者授权,请勿二次转载。

✎ 编 者 言 

来自今年九月arXiv上一篇关于视频检索文章。作者来自国科大和快手,提出CAMoE模型,投稿AAAI。实验结果非常恐怖,在几乎所有主流数据集上达到SoTA,其中video retrieval challenge刷榜6个数据集,而文章所作改变非常小,主体上仅修改了loss,而且代码量仅1行。本文工作我认为非常有意义,因此将详细描述文章各个模块和步骤,最后给出思考。

详细信息如下:

  • 论文名称:Improving Video-Text Retrieval by Multi-Stream Corpus Alignment and Dual Softmax Loss

  • 论文链接:https://arxiv.org/abs/2109.04290

  • 项目链接:https://github.com/starmemda/CAMoE/

video retrieval challenge

      01      

Overall structure

  • 语义方面:使用POS和SGS分别解析语句和整合语句,应用CLIP预训练的Bert进行语义提取。这里的Bert应该是CLIP中的使用的Bert。

  • 视觉方面:使用CLIP预训练的ViT提取feature。分流成三路,使用三种expert加一个Gate模块。这里的Gate只对fusion expert做限制,因为作者认为由于fusion expert采集了整体的信息,导致加入到网络的信息太丰富,这会导致其余两个entity和action expert的学习任务太simple,所以要对fusion做限制。

  • 最后整体进行similarity的计算,得到  的相似度矩阵,取矩阵对角线之和为loss值。

      02      

Sentence generation strategy

文章测试了三种生成Entity和action embedding的结构。

  • 将词性分割后提取出的单词直接输入Bert,输出CLS embedding

  • 整句输入,将对应词性的单词平均

  • mask掉无关词,句子长度不变。CLS embedding作为输出

      03      

Visual Frames Aggregation Scheme

B个视频为一个Batch,每个视频提取C帧,每一帧为d维向量,所以我们编码的数据为  .作者同样采用三种聚合方式。注意这里聚合的方式是聚合C方向,保留d和B,最后得到  .

  • 采用mean pooling,但这个mean pooling不是检测里那种,而是直接将x从C的方向上压缩平均

  • Squeeze-and-Excitation attention(se attention):简言之,给mean pooling加入一个重要性分数score。

  • self-attention:这个就不介绍了吧。

      04      

Loss function

  • original loss function:

用图像理解,就是对着下面这幅图按列取softmax,再按行取softmax,最后将对角线上的概率求和,得到loss:

  • Dual -softmax loss function

这个function可以被视作是本文的灵魂。式子如下:

其中P_r计算式如下:

看起来非常繁琐,但是仔细一看,其实非常简单,代码一行就能解决。以下图中的数据为例,我用尽量简洁的语言描述:

  • 首先,我们假设对角线上的概率表征与GT的匹配程度。就是说对角线是一个视频文本pair。

  • 当我们需要求解video→text的匹配程度,按照原来的loss求解,是对相似度矩阵每一行做softmax,如图,得到的概率最大值都为第一列。即每一个视频都选择了第一个文本作为最优的描述sentence。

  • 但是作者在求解video→text的匹配程度时,是先求解text→video的匹配程度(概率矩阵),即按列做softmax。这个时候我们可以看到图中第一个文本选择第一个视频作为最优,第二个选择了第二个视频,第三个还是选择了第一个视频。接着将这个概率矩阵与原矩阵相乘,得到revise后的相似度矩阵,最后求解video→text,也就是按行做softmax得到最后的概率矩阵。

  • 结果是,经过逆向任务revise后,正向任务的精确程度提升了。对角线上是最高概率。

而实现的代码更简单,作者git仓库中github.com/starmemda/CA只有一个文件,代码如下:

from torch import nnimport torch.nn.functional as Fimport torchclass dual_softmax_loss(nn.Module):def __init__(self,):super(dual_softmax_loss, self).__init__()def forward(self, sim_matrix, temp=1000):sim_matrix = sim_matrix * F.softmax(sim_matrix/temp, dim=0)*len(sim_matrix) #With an appropriate temperature parameter, the model achieves higher performancelogpt = F.log_softmax(sim_matrix, dim=-1)logpt = torch.diag(logpt)loss = -logptreturn loss

      05      

Experiment

文章中在三个数据集上做了实验,全部SoTA。下图是在LSMDC(最多数据量)和MSVD(最难数据集)上的表现:

其实看到这样的结果,对于它达到SoTA我并不意外,因为结合了CLIP的模型,借助于大规模数据集,再对自己的模型进行一些调优达到SoTA并不难,但是加入了Dual-softmax loss后,模型提高了2~3个点的确令人吃惊,也倍感欣喜。因为从直觉上来看,DSL确实使得T2V和V2T两个任务的交互更加紧密,也更容易抑制过拟合。

Ablation study

消融实验

消融实验中,V2T的表现优于T2V。作者解释:文本标注可能会有歧义。例如:狗在玩耍——视频1,猫和狗在一起玩耍——视频2.那么用视频去选择句子时,模型就会直接偷懒,因为“狗在玩耍”一定是比“猫和狗在一起玩耍”的内容范围要更大的,那么既然选第一句一定不会错,那么为啥还要费力去选择第二句呢?而视频出现歧义的可能性几乎没有,所以这也是为什么V2T的表现优于T2V的原因。对于作者这个观点我也很赞同。

Visualization

相似度最高的点明显更加聚集到了对角线附近。

可视化结果

      06      

Reflection

这篇文章给我很大的震撼,不仅在于其极强的performance,更在于他所作的工作非常优美。总结一下,表现在下面两点:

  • 观点和动机:

作者的观察和解释我认为很有趣,也很有意义。文章最大的亮点在于如何将正向检索和逆向检索综合,使得两者进行互补,从而引入了DSL。而文中对一些现象的解释我觉得也很有道理,非常符合直觉。

  • 实现方式:

通过修改loss,直接就优化了模型,而且代码量极少,非常容易迁移到其余存在正逆向的任务上。但这一点,也是我认为本文的一点不足。对于DSL提出的理论依据不够强,只凭借直觉多少有点玄虚。

其次,是我自己对这个模型的一些思考。

我认为这个模型最大的亮点,最本质的解释就是加入了先验。比如在T2V任务中,我们引入了V2T,其本质就是我们认为V2T任务是一个值得我们信赖的任务,我们认为其携带的信息能够指导T2V任务,这也是本文最大的假设,最后也证明这个先验确实不错。从这个角度出发,我们对模型的改进其实不仅仅是对输入进行先验的补充,其实可以把思路扩展到如何对网络内部已经产生的结果,将其假设为先验,加入到模型的优化中,这一点与Resnet又有一点相似了。

总结来说,文章做的很漂亮,结果和解释也对的上,期待AAAI2022能见到本文。

END

欢迎加入「视频检索交流群

CAMoE——屠榜 video retrieval challenge相关推荐

  1. 基于Go的语义解析开源库FMR,“屠榜”模型外的NLP利器

    (由AI科技大本营付费下载自视觉中国) 作者 | 刘占亮 一览群智技术副总裁 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) 如何合理地表示语言的内在意义?这是自然语言处理业 ...

  2. DINO:目标检测benchmark COCO屠榜的正确姿势

    作者丨陈泰红(已授权) 来源丨https://zhuanlan.zhihu.com/p/478461226 编辑丨极市平台 不小心在paperwithcode看到,DETR系列的论文又屠榜了,在COC ...

  3. ICCV 2021 Best Paper | Swin Transformer何以屠榜各大CV任务!

    作者:陀飞轮@知乎(已授权) 来源:https://zhuanlan.zhihu.com/p/360513527 编辑:智源社区 近日,Swin Transformer拿到2021 ICCV Best ...

  4. NeurIPS 2019揭榜!华人作者贡献42%,谷歌170篇屠榜;国内清华第一,腾讯领衔产业界(附链接)...

    本文经AI新媒体量子位(公众号 ID: QbitAI)授权转载,转载请联系出处 本文约2900字,建议阅读6分钟. AI科研决战揭榜! 一年一度,AI科研华山论剑. 只是2019年NeurIPS,决战 ...

  5. 5300亿参数,SOTA屠榜!最大NLP预训练模型新王登基,微软英伟达联手称霸

    来自:新智元 [导读]微软和英伟达联合发布了迄今为止最大.最强的人工智能语言模型:Megatron-Turing自然语言生成模型(MT-NLG).其包含5300亿个参数,在一系列自然语言任务包括阅读理 ...

  6. 屠榜大杀器UniMP!百度登顶图神经网络权威榜单三项榜首

    允中 发自 凹非寺 量子位 编辑 | 公众号 QbitAI 近日,百度在图神经网络领域取得新突破,提出融合标签传递和图神经网络的统一模型UniMP(Unified Message Passing),在 ...

  7. NeurIPS 2019放榜:华人作者贡献42%,谷歌170篇屠榜;国内清华第一,腾讯领衔产业界...

    李根 一璞 乾明 发自 凹非寺  量子位 报道 | 公众号 QbitAI 一年一度,AI科研华山论剑. 只是2019年NeurIPS,决战之巅选在了加拿大温哥华. NeurIPS,全称Conferen ...

  8. scratch跳一跳游戏脚本_涂鸦骑士3D版强势屠榜,腾讯跳一跳“宝刀未老” | 休闲新游周报...

    休闲新游周报每周统计微信小游戏.QQ小游戏.硬核小游戏以及App Store和Google Play上的新游爆款,并按照分类制作表格,将游戏排名情况等信息公布,希望给到行业同侪帮助. 本周统计数据截取 ...

  9. 屠榜CV还不是这篇论文的终极目标,它更大的目标其实是……

    文 | 魏旭 编 | 橙橙子,小戏 当 BERT 模型出来之后,Transformer 架构基本成为 NLP 任务的底色.诸如 Roberta.XLNet.ELECTRA.GPT3 等刷榜各类 NLP ...

最新文章

  1. 【Flutter学习】组件学习之目录
  2. BZOJ2743 [HEOI2012]采花
  3. 服务器 | 种类及区别
  4. PMCAFF微课堂「已结束」| 测试兄弟CEO揭秘如何提高创初团队的产品质量
  5. DS系列服务器硬盘扇区,硬盘基本知识(磁道、扇区、柱面、磁头数、簇、MBR、DBR)...
  6. org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 110; schema_reference.4: 无法读取方案文档
  7. otdr全部曲线图带解说_副业推荐:电影解说号,4个快速见收益的技巧
  8. 并行算法第二讲:并行算法基础知识
  9. S11 day 94 RestFramework 之 APIView视图
  10. (转) QImage总结
  11. 2022最新最全升级版【精品工具】用Appuploader发布上传iOS APP上架流程简单快速
  12. 电子线路(线性部分)——第一章 晶体二极管
  13. centos7系统时间校对(和北京时间同步)
  14. 分享一个小案例,用HMS Scankit做一个安卓扫码购小应用
  15. 10个致工程师在工作中快速成长的技巧
  16. 关于那封刷屏的论文致谢,这碗鸡汤我干了
  17. iOS学习—让View从下面弹出
  18. 想体验.NET7又不想安装体验版,Windows沙盒了解一下
  19. vertx 异步编程指南 step8-使用RxJava进行反应式编程
  20. 你真的了解CSS包含块么?

热门文章

  1. 工控系统安全测试平台及攻防验证【会议】
  2. XML Schema语法规则
  3. 线性代数【5】矩阵和矩阵运算
  4. win7临时文件_教你win7网页打开慢的应对办法
  5. c#求三角形面积周长公式_C#源代码—三角形面积、圆的面积
  6. paddle 标注_质量检查丨生成序号标注,究竟可以有多快多准确?
  7. php 读写远程文件内容,php获取远程文件内容的函数
  8. oracle升级后报 06502,Oracle数据库升级后报ORA-00704和ORA-39700错误
  9. java后台用 requset对象 存储值 前台获取不到_springmvc form表单提交后台对象获取不到值(解决)...
  10. 九度搜索引擎点击优化_吉林免费seo优化工具