Learning from Noisy Anchors的思考

文章来源 | 极链AI云(性价比最高的共享算力平台,助力你的技术成长~首次注册可获免费100小时GPU使用时长!官网地址:https://cloud.videojj.com/

作者 | Chaser【极链AI云技术原创奖励计划】千元云币券获得者

 

论文介绍不作论文翻译,没什么意义,只是讨论一下自己的心得和理解。放上作者大大的原文:论文地址

 

前言

最近关注label assignment比较多,感觉自从NIPS2019的FreeAnchor之后涌现出一大批的相关工作,无论是CVPR2020、ECCV2020还是啥别的,已经看过的就有三四篇,还有三篇没来得及看。

自己也尝试了一下部分论文复现了程序,不得不说,这个角度很有效,出发点是好的,只要角度找好了应用上label assignment,你就是一个新的故事,就是新的论文了。

话虽如此,不过很多理解还是很不错的,值得学习借鉴。实际效果确实不错,很多方法都能跨数据集稳定涨几个点。

 

关于 NOISY ANCHOR 的思考

名字来看,什么叫noisy anchor?作者这里从一个角度比较有意思地阐述这个问题:回归分类的标签本身就是noisy的。

比如长颈鹿,框个头,相对于整鹿而言,这个anchor是negtive的,但是信息足够discriminative,值得分类当正样本。怎么办?

所以anchor的定义上这个本身具有不连续性,会带来评判的ambiguous,也就产生noise了。


 

解决方法

其实和Freeanchor等有类似之处,也很直白,先放论文流程图:


大概解释就是:

1、做正常anchor匹配,取出topN(注意他先topK,所以这里的N是候选个数,设置比较大,几十个后面实验有),分配0-1标签。

2、对正样本的anchor计算c和r,采用的参数是网络预测输出的回归后bbox和gt的IoU以及和分类分数。

3、计算loss,其中负样本的c为0,r加权系数是1;正样本则用c作为分类得分,同时分类回归的loss都加权一个r。

这种方法很好想,既然IoU不准,我拿定位精度来算就行了。实际上,不是这样的,我自己的实验来看这样完全不够。当然这个出发点还是不错,但是为啥他能收敛好呢?

因为他不是直接根据这个来划样本,正样本的质量固然很可能是高的,所以他这个方法不用担心发散。同理HAMBOX也是,为啥不发散?因为人家有正样本补偿了(然而我复现的结果依然发散,推测是任务不同匹配难度不同)。所以相当于锦上添花,就能work了。

他提出的损失函数:

我个人感觉不会起很大作用,(盲猜妄测,没有攻击性意味),可能是创新点不够加上去的,至于效果也有一点,这个的话...区别调参法懂的都懂。当然也只是我自己的瞎揣测,不用当真。因为我自己的实验来看这类方法的收效有是有但是很有限。

 

实验和问题

 

loss的加权问题

奇怪的是,依然是在loss上进行加权,而不是直接进行label重新设计,为啥?那样的话不就可以作用到NMS效果更好吗?可能这样真不行。因为最直观的就是soft label的形式,我试过,分类器会倾向于全给0,会陷入一个初始局部极小。为什么容易想的东西却没人做?很可能因为不work或者没办法让他work。

超参数N的实验

个人理解,不一定对。选多了就下降了,说明样本中依然有干扰问题,并且起作用,因为方法设计的原因这个干扰他避免不了。即使加了分类结果兜底还是会受损。

当然,要说避免也可以,我不选那么多就完了,样本质量过硬无干扰,这就是另一回事了。

 

想要认识更多深度学习小伙伴,交流更多技术问题,欢迎关注公众号“极链AI云”(为你提供性价比最高的共享算力平台,官网地址:https://cloud.videojj.com/