阅读笔记-Trans2Seg Segmenting Transparent Object in the Wild with Transformer

来源: https://arxiv.org/abs/2101.08461
组织: 港大、商汤、南大、

title


总结这篇文章之前,想吐槽一下现在这个领域的风气。
现在研究计算机视觉的人太多了,哪怕是小领域。而且这个领域真正技术创新的东西很少很少。一旦某个领域有一个东西被证明有效,大家就开始赶着在各个领域刷一遍。 比如之前的图卷积网络,注意力机制再到现在的transformer, transformer本质上也是attention。
不反对这种做法,但是也不能为了占坑就不在乎写作质量吧,你的文章好多明显的问题就直接放出来,也不能因为是arXiv文章就不严谨吧,让人能相信你的实验结果的真实性吗。。。唉


好,下面说说这篇文章。

文章主要有两个点:

  • 针对于透明物体的检测数据, 在Trans10K-v1 数据集上提供了更细致的类别, 在v1版本上只提供了两个粗略的类thing和stuff, 其中thing是一些可以用机械手臂操作的东西,比如玻璃杯,透明瓶子等, 而stuff则是一些较大的透明物品,无法移动,可以用来辅助导航,比如玻璃门,窗户等。 在新的版本也就是v2中为每个大类提供了更加细致的划分,总共划分成11小类。下图是子类的示意以及数据集的统计信息。


    Trans10K-v2

    错误1. table1的title中, Translabv2 应该为 Trans10K-v2. 麻烦前后一致可以吗。
    image num 表示包含该类目标的帧数, CMCC表示每帧图像中平均存在的对应类的区域个数, pixel ratio则是每一类的像素点个数在所有前景总的像素点个数中的占比。

标注要求:

  1. 仅完全透明的区域(文章使用的是pixels)进行了标注
  2. 目标区域中出现不透明的部分要挖掉(这和前一点的区别是什么?)
  3. 标注的出发点是实际应用,比如Fig2的第五列,就不需要标注玻璃门后面的玻璃门。
  • 提出了以及基于transformer的场景分割模型 trans2seg。结构如下图所示:


    Trans2Seg

这里使用 hybrid CNN-Transformer 表述还是比较准确的。 我们前面介绍了TransReID方法,那个方法没有使用CNN的backbone,称为基于transformer的方法,这里还是使用了CNN的backbone的,因此可以成为混合方法,但目前对这种情况没有明确的区分吧。

这个图里槽点在于 caption 里没说 Res2是啥,然后看图吧 encoder和decoder 这种模块性的东西都是用圆角矩形表示,咋small conv head 模块就直接在箭头上标注了呢?你说Fig4有解释?那Fig还解释了decoder呢,你为啥不直接箭头标注??OK,就算你想表示经过small conv head得到mask, 那Res2对应的数据流在哪里??虽然结合Fig4我知道在干嘛,但是这两个图就是不对应啊,Fig4中这个模块有两个输入,你Fig3就画一个从attention map的输入??

Fig4图如下:


detail

其实这部分很简单,就是典型的decoder模块,并在最后一个decoder layer 输出每个query在encoder的feature map上多头注意力map, 再与backbone的特征进行cat后接每一类上的逐像素二分类。

但看这个图我会以为每一个decoder layer都输出attention map,那输出来用于什么呢?或许是计算new query?但图中他俩是独立的两个输出啊?而且这里encoded features的size也标注错了,应该是

然后看4.3节的槽点, 公式1中 , 假设你就默认softmax是按行归一化,那softmax之后的size是 , 请问你和 能直接矩阵乘吗??不应该是?
另外,下标这么表示是迭代的意思?这让人误以为是类似于连乘算子的连续操作,迭代应该表示为

还得解释s表示decoder中layer的个数。

我不是杠精,我觉得数学本来就是最精确的语言描述,能通过数学表达准确的知道你在干嘛,你表述不清还不如不写。整篇文章就2个公式,你还写错就过分了吧。。。

另外需要注意的是,这里的decoder 似乎没有self-attention过程,无论图还是文本描述还是公式表达,都只有cross-attention的过程。

文中还有许多描述不清的东西,比如5.2里的说的Figure2明明是Table2.。。等等,这里不说了,累觉不爱。

实验部分作者分析时是采用的FCN框架,逐步嵌进去encoder和替换decoder,但不知道具体怎么做的,这部分都需要读代码。。。

总结

总结下吧,这篇文章对我而言接收到的有用idea,就是类似于Sparse RCNN中给每个目标学习对应的模板,这里是对每一类统计出一个模板,当然这个模板是用来生成attention的,其实在检测中也可以只用不同类别的模板做吧,比如COCO中就用80个模板生成attention,然后后续检测部分其实还是采用anchor-free这种检测头,当然损失也可以使用prediction set的方式,不知道性能如何,最起码收敛肯定比DETR快,感觉是个人炼丹师的可选方案。

你可能感兴趣的:(阅读笔记-Trans2Seg Segmenting Transparent Object in the Wild with Transformer)