如何评价FAIR的新论文DETR?

链接:https://www.zhihu.com/question/397692959

编辑:深度学习与计算机视觉

声明:仅做学术分享,侵删

作者:匿名用户
https://www.zhihu.com/question/397692959/answer/1249687016

刚看到论文题目的时候,我以为它是像翻译一样,按照某种规则得到一个不定长的序列。后来仔细看论文和代码,才发现它的输出是定长的:100个检测框和类别。

从这种角度看,DETR可以被认为具有100个adaptive anchor,其中Encoder和Object Query分别对特征和Anchor进行编码,最后用Decoder+FFN得到检测框和类别。

这篇文章也从侧面说明100个Anchor完全够用。但是进一步想,100个Anchor其实也是有一些冗余输出的:很多图里面物体很少,并不能用完100个检测框吧。当然定长的输出有利于显存对齐,训练的时候会方便一些。

在DETR的尾巴上加个head就是2D pose,一点都没有违和感。

看到实验部分,感觉这篇文章的显存占用挺劝退的,每块V100(32G显存)只能放下四张图片的batch,64个batch是用了16块V100实现的。在 V100/A100/相同量级的显卡 普及之前,或者这类模型被简化之前,这个工作注定是普通炼丹群众无法follow的。

如何评价FAIR的新论文DETR?_第1张图片

简化这个方法也会是很有价值的工作。

作者:丶favor
https://www.zhihu.com/question/397692959/answer/1249853158

给力就完事了。给力到ECCV under review的时候挂在arixv上公然放出submission id也不想喷它。毕竟看完这篇文章给我第一观感是“此处不留爷,自有留爷处”。

整体观感上,这篇文章真正妙用了Transformer,而不仅仅是说明self-attention能代替卷积,甚至做出了新高度。类似后者的文章有谷歌系列《Attention Augmented Convolutional Networks》——>《Stand-Alone Self-Attention in Vision Models》,用attention代替CNN这样。除此之外,文章也很有开路之风,实验上非常克制(没有trick注意没有trick),但是性能上对标Faster-Rcnn是完全没有问题的,同时又告诉你这个方法的limitation在哪里。这种文章中的大度风范即便是挂个submission id出来也找不到槽点。

再大致说一下文章内容。整体做法还真就像翻译的操作,这也能想到并且能work也是强。CNN backbone以及Transformer encoder就不介绍了,基本上就是提特征的重点就是positional embedding了,不过也是常规操作。重中只重就是在decoder上面。如何在没有anchor也不用nms的情况下得到结果呢?做法其实有点像翻译,只不过很抽象。图上的object queries实际上是N个emebding,更具体得说应该是N个实例query的embedding(我理解是这样),退一步不准确一点可以简单理解成位置。N是固定值但是emebding完之后N个quries都不太一样。所以差不多的意思就是告诉模型要100个实例,然后decoder根据encoder得到特征的位置和显著性decoder出100个抽象点代表instance,其中部分是前景instance,部分是背景instance,前景的就class+box loss,背景的就当背景。这就是训练过程。推理过程也就很简单了,前景的就直接用,背景的就丢掉。

如何评价FAIR的新论文DETR?_第2张图片

这思路自然是强无敌了,毕竟我能想到的只是CNN+Transformer然后再回到传统检测那一套。除此之外,fair还很general的告诉了填坑者坑要怎么填。比如由于Transformer的特点对大目标检测很好但是对小目标检测不好;由于N的限制,每次只能检测100个;GFLOPs看着还行,但是速度却不怎么行之类的。并且瞄了一眼代码也是非常简洁,底下还有一句:欢迎魔改。

总而言之就是各种没毛病,a novel and solid work!

作者:哈佛孙一峰

https://www.zhihu.com/question/397692959/answer/1250062705

扫了一眼paper,个人觉得最直白的理解方式就是用positional embedding替代了原本的anchor。

第一步用CNN提feature,然后展开成一维之后加上位置信息进入encoder加工。之后decoder里的object queries,实际上是另一组可学习的positional embedding,其功能类似于anchor。之后每个query进过decoder后算一个bbox和class prob。

这篇paper怎么说呢,个人觉得有点华而不实。毕竟把原有的二维feature给flatten成一维再加上位置信息实际上在我看来是一道脱裤子放屁的流程。不过在detection上这样操作能work,实际上说明了transformer果然更适合看成GCN的一个特例而不是LSTM的上位替换。

作者:匿名用户
https://www.zhihu.com/question/397692959/answer/1249728651

很振奋人心的Det新框架!

paper链接:https://arxiv.org/abs/2005.12872v1

code链接:https://github.com/facebookresearch/detr

作者也在paper中指出了一些drawbacks,实在又可爱,真真科研人员!

如何评价FAIR的新论文DETR?_第3张图片

作者:匿名用户
https://www.zhihu.com/question/397692959/answer/1252524209

从整体上,方法的结构还是在跑一个  特征提取+message passing + inference  的框架,如果抛弃端到端学习这个特性,其实从思想上和传统的方法还是一致的, 只不过把传统的需要人工设计的所有参数都通过训练来替代了。

如果我来理解,那么

(1)CNN的特征提取部分没有什么可以说的,这就是个标准操作。

(2)Transformer encoder:注意力机制本质是在跑message passing去对提取的特征进行一种滤波,这里面在很大程度上就是实现了其他分析中的去提取不同位置不同物体之间的相互关系这个功能,通过发掘这个约束提高了对物体识别的可靠性。

(3)Transformer decoder: 这个算regression操作吧,从提取和滤波后的特征来得到目标位置和分割模板等信息。

所以,我倒是不觉得非要去强调什么transformer或者是NLP对这个工作的影响,还是只需要从message passing的角度去理解更直接,就是如何去发掘局部信息之间的关系和约束,去拟合整个特征空间的联合分布,这和传统的graphical model的思想还是完全一致的,真正的实质性差异还不过是引入了训练过程替代人工设计而已。这个工作更多是说明了transformer的结构用来做message passing在图像上也是有效的,很多原来需要人工设计的机制可以用transformer去学习获得。这个transformer和在NLP中的作用一样,都是去抓住问题数据中的结构,NLP中是去发掘有意义的语句,这里是去发掘有意义的图景,通过发掘数据中元素之间的约束关系,完成数据嵌入。

现在AI重发明了太多已有的概念,注意力是其中之一,其实它和传统的message passing没任何区别,只不过引入了训练。历史上对这些东西已有相当多的分析,不妨回顾一下,不必重新发明轮子。

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文(无广告)。

扫描二维码添加小编↓

你可能感兴趣的:(如何评价FAIR的新论文DETR?)