R2D2: Repeatable and Reliable Detector and Descriptor(2019)(七)

tech2023-12-04  32

本文的核心思想是提出一套同时detector和descriptor的网络,区别于别的网络,本文会输出Repeatable和Reliable层 用来表示feature map的score和权重(置信度)。   首先我们来看下整体网络结构:      输入一张W*H的image,输出三块东西:         1)dense 的descriptor 的feature map(H*W*128)          2)H*W*1的reliability层表示每个像素的feature的置信度(可靠性)Rij ∈ [0, 1]          3)repeatability层表示每个像素的score(其实就是detector)(S ∈ [0, 1])   1.Learning repeatability     假设知道两张匹配图,并且知道他们之间的转换关系U,那么理想情况下: 最大 (第一项是一张图输出的score map,第二项是另一张图输出的scoremap通过U变换到和第一章图一样的坐标下,     理想情况下两个向量W*H的数值完全相同),但是由于S维度很大,往往很难满足,因此将S拆分成一个一个  有overlap的patch,计算每个应该相同的小patch的相似性,如下:                  考虑到????不知道啥意思,增加了一项约束项   Learning reliability         feature层和reliability层的loss同时回传,定义feature之间的相似性度量矩阵D ,           假设匹配图是A和B,本文由于是dense的descriptor map因此构建D的行是图像A中的descriptor个数。           列是图像B中descriptor的个数,每个元素表示的是一个匹配距离。           引用了一个AP概念,所谓的AP就是对D中的每一行距离进行排序,距离越近的越靠前,如果真正的匹配越靠前,这时候两张图的匹配的AP值越大,            因此最大化AP即可监督学习descriptor,具体公式如下;     ·····               文中提到如果使用AP来训练就需要作用到整个descriptor上并且计算复杂,因此引入了 reliability层,该层就是类似score一样提供每个pixel位置     descriptor的置信度(比如天空了,树叶了等不应该作用在网络上),因此使用如下loss:                  上述公式是(i, j )表示每个像素位置,Rij表示 reliability 层输出的置信度,k是设置的阈值, ,这样就在R=0的时候不再计算AP         这个loss同时回传到descriptor网络和reliability网络。   !!!!!!!!!!!!!!!上述是训练的过程!!!!!!!!!!!!!!!!!!!!!!   teset的时候:首先输入image,然后在S层进行非极大值抑制得到最终的score map,然后将S和R相乘的到每个像素上的最终的score,  然后取出score>阈值的descriptor作为最终的descriptor和detector。    
最新回复(0)