Working hard to know your neighbor’s margins: Local descriptor learning loss(2018)(三)

主要是在L2-NET上的改进,在L2-NET中中间feature map层以及最终的feature维度上都进行了监督,容易造成过拟合,因此本文做了优化

主要贡献点:1. End-to-end的训练模式。

                      2. loss简单有效

 

首先:

如上图所示,A和P表示两个匹配集合, 例如a1和p1是一个gt中的匹配, d(a1,p1)是两个匹配之间的descriptor之间的距离。

本文中目标:尽量缩小正确匹配的feature之间的距离,尽量增大错误匹配之间的距离,并且形成一套端到端的训练模式。

本文解决方式: 不使用L2-NET中对最终的距离矩阵每一个维度进行操作约束,这里使用triplet loss 。

triplet loss: 假设在P集合中和a1次近邻的是pi,那么计算d1 = d(a1,pi),假设在A集合中和p1次近邻的是ai,那么计算d2 = d(ai, p1

                    选择min(d1,d2)和a1 p1 这样构成triplet loss。

形式:

            可以看出:d(ai , pi)惩罚正确匹配之间的不相似性,− min (d(ai , pjmin ), d(akmin , pi))惩罚错误匹配之间的相似性

 

网络结构(和l2种的网络结构一样):

    

 

结果:

            

           上表表示的是recall95%(匹配上95%的patch)的时候的匹配中的错误匹配率。

耗时:由于依赖于detector+blob,因此耗时应该不小

总结:

  1. 训练数据(使用的公开室外的path数据。从3d重建中获取,都是一个个32x32的path)

  2. scale(网络中没有scale的概念,但是依赖于detector,如果使用带scale的detector训练那么就是有scale的)

  3. oritation(网络中没有scale的概念,但是依赖于detector,如果使用带scale的detector训练那么就是有scale的)

  4. wild-base(看训练数据有)

  5. detector & descriptor(输入path,因此需要先DOG,在blob,最后输入网络)

  6. 网络的输入输出(输入32x32path,输出128维度的单位向量)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值