[论文理解]MetaAnchor: Learning to Detect Objects with Customized Anchors

MetaAnchor: Learning to Detect Objects with Customized Anchors

Intro

本文我其实看了几遍也没看懂,看了meta以为是一个很高大上的东西,一搜是元学习的范畴,学会如何学习,很绕人。万般无奈之下请教了下老师,才知道他想表达什么。其实作者的想法很简单,就是先把最后anchor预测类别和位置的权重拿出来,这里的权重通过设计另一个网络来预测,而这个网络的参数又可以通过整个网络的训练梯度回传来学习。这样做的好处是,将anchor的配置(w,h)当成了输出,只需要给定一组anchor参数,就可以完成特定的预测任务,也不用事先指定anchor的数量了,确实是好想法。

Anchor Function

我们知道传统神经网络都是通过事先设定好anchor的种类,然后训练,在训练完成后anchor就固定了,如果想要改变anchor的数量,那么就需要重新训练网络了,而本文的方法的好处是,一次训练,稍微更改,就能适应新的任务!

首先这个anchor function是给定输入的某个bin的特征x和参数sita,来表征这个bin在给定参数下的类别置信度和回归offset的。sita cls 和sita reg 其实理解过来就是预测和回归网络的权重,以参数的形式表达了出来。我觉得这里只要理解了后面就没啥问题了。

这里的抽象很有用,作者的想法也很简单,就是把anchor的配置作为输入来预测这个权重,这样就能很方便的动态调整anchor的尺度。

Anchor Function Generator

作者先做了个下标变换,其本质目的还是为了使得anchor function的通用化,原来每个bin都有自己独立的一套参数,这个参数其实是预先设计好的,即anchor的配置,把bi放到参数sita里,就是上面提到的,将anchor的配置变为输入的参数,而不是预先设计好并且一一对应的。这里的理解是预先设计好的anchor的尺寸其实是预先设计了anchor function,如果sita改变,势必得重新训练网络。

然后就是提出anchor function generator来预测给定anchor配置下的参数sita_bi,这时候bi就是输入的anchor配置。

然后将上面的公式扩展成下面的子网络形式,这样就能够通过网络来学习这个网络的参数,从而预测网络权重了。

Architecture Details

文章用retina net来做验证,通过将retina net的最后预测层的权重交由另一个子网络来预测,实验证了文章的想法。其中,其网络结构如图:

其中,anchor的配置如下图计算:

Conclusion

MetaAnchor的想法很简单,也很实用,解决的问题也很明确,就是图个方便,每次改配置不用重新训练了,文章说实话不好懂,但是懂了就简单了。几句话其实就说完了。

猜你喜欢

转载自www.cnblogs.com/aoru45/p/10604283.html