Working hard to know your neighbor's margins:Local descriptor learning loss论文笔记
Abstract
论文提出了一种新的训练方法,受到了 Lowe’s matching criterion for SIFT的启发。这种新的loss,要比负责的正则方法更好。把这个新的loss方法结合L2Net就得到了HardNet。它具有和SIFT同样的特征维度(128),并且在 wide baseline stereo, patch verification and instance retrieval benchmarks这样的任务上取得了最高水准的表现。
Introduction
Sampling and loss
过程如图1.首先一个batch中的匹配块生成 \(\mathcal{X}=\left(A_{i}, P_{i}\right)_{i=1 . . n}\),A代表anchor,P代表positive。那么每一对就是源于相同的一个3D point。
然后这2n个patches进入图2中的网络,使用得到的特征计算出一个图1中的距离矩阵。
\]


然后在这个矩阵里寻找与\(a_i,p_i\)最相近的那两个negative点(不属于同一个3D point)。假设\(a_i\)对应的是M,\(p_i\)对应的是N。倘若\(distance(a_i,M)<distance(p_i,N)\),这样的话,我们就得到了一个triplet的训练数据\((a_i,p_i,M)\),反之则是\((p_i,a_i,N)\)。
然后将这n个配对,送到loss函数里面:
\]
上述的M就是\(p_{j_{min}}\),N就是\(a_{k_{min}}\)
Results

batch size influence

通过上文中的Sampling and loss小节可以看出,HardNet的表现与Bathsize应该有很大关系,
当Bathsize>512之后,模型性能就不会有明显提示了。
Empirical evaluation
Ablation study
这一节作者使用不同的loss函数和不同的采样方法进行研究,得出hardest-in-batch的采样方法是使得模型表现好的主要原因。

Wide baseline stereo
为了检测模型的泛化能力以及对极端情况的应对能力,作者在W1BS这个数据集上进行测试,关于这个数据集的extreme change可参考下图:

结果:

可以看到,HardNet和L2Net的表现相差不大。
Conclusion
- 作者提出了一种基于Batch的
Hard-neagtive mining和loss function,使得模型更加容易训练表现更好
Working hard to know your neighbor's margins:Local descriptor learning loss论文笔记的更多相关文章
- HardNet解读
论文:Working hard to know your neighbor’s margins: Local descriptor learning loss 为什么介绍此文:这篇2018cvpr文 ...
- Learning Spread-out Local Feature Descriptors
论文Learning Spread-out Local Feature Descriptors 为什么介绍此文:引入了一种正则化手段,结合其他网络的损失函数,尤其是最新cvpr 2018的hardne ...
- KNN(k-nearest neighbor的缩写)又叫最近邻算法
KNN(k-nearest neighbor的缩写)又叫最近邻算法 机器学习笔记--KNN算法1 前言 Hello ,everyone. 我是小花.大四毕业,留在学校有点事情,就在这里和大家吹吹我们的 ...
- cluster analysis in data mining
https://en.wikipedia.org/wiki/K-means_clustering k-means clustering is a method of vector quantizati ...
- 阅读MDN文档之基本盒模型(三)
Box properties Margin collapsing Adjacent siblings(相邻兄弟) Parent and first/last child Empty blocks Ac ...
- face recognition[翻译][深度人脸识别:综述]
这里翻译下<Deep face recognition: a survey v4>. 1 引言 由于它的非侵入性和自然特征,人脸识别已经成为身份识别中重要的生物认证技术,也已经应用到许多领 ...
- 学习笔记之k-nearest neighbors algorithm (k-NN)
k-nearest neighbors algorithm - Wikipedia https://en.wikipedia.org/wiki/K-nearest_neighbors_algorith ...
- LogisticRegression in MLLib
例子 iris数据训练Logistic模型.特征petal width和petal height,分类目标有三类. import org.apache.spark.mllib.classificati ...
- SVM的代码实现-python
隔了好久木有更新了,因为发现自己numpy的很多操作都忘记了,加上最近有点忙... 接着上次 我们得到的迭代函数为 首先j != yi j = yi import numpy as np def sv ...
随机推荐
- python-mysql-replication原理分析
源码地址:https://github.com/noplay/python-mysql-replication 文件解析: ├── binlogstream.py ├── bitmap.py ├── ...
- Java线程安全MAP ,LIST ,SET
ConcurrentHashMap是线程安全的HashMap, CopyOnWriteArrayList是线程安全的ArrayList CopyOnWriteArraySet是线程安全的Set.
- Kernel PCA for Novelty Detection
目录 引 主要内容 的选择 数值实验 矩形框 spiral 代码 Hoffmann H. Kernel PCA for novelty detection[J]. Pattern Recognitio ...
- Linux 离奇磁盘爆满解决办法
问题原因&通用解决步骤 频繁收到es数据节点磁盘使用监控告警,到es上查看,磁盘使用率40%,因此登录该告警服务器,df -h 查看,如图 发下根目录使用超过了80%,因此持续告警,按照以往办 ...
- spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象
相关 知识 >>> 相关 练习 >>> 实现要求: 在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXm ...
- RabbitMQ基础教程系列
Ubuntu16.04下,erlang安装和rabbitmq安装步骤 Ubuntu16.04下,rabbimq集群搭建 C# .net 环境下使用rabbitmq消息队列 .net core使用rab ...
- javascript中逻辑运算(||,&&,!)
作为一个后端开发的程序员,一直就对JavaScript情有独钟,作为一门前后端通吃的语言,必须赞一下.而且之前很长一段时间都有在做JavaScript,一路都是和ie8死磕,磕完又找低版本的谷歌磕,坑 ...
- Echart可视化学习(十一)
文档的源代码地址,需要的下载就可以了(访问密码:7567) https://url56.ctfile.com/f/34653256-527823386-04154f 官网找到类似实例, 适当分析,并且 ...
- html手机调试
长话短说 npm install anywhere -g 安装好后,cmd 命令 进入你要调试html页面的目录,运行 anywhere AnyWhere 静态文件服务器 软件简介 AnyWhere是 ...
- 深入理解Java虚拟机之自己编译JDK
题外话 最近在阅读<深入理解Java虚拟机>,其中有一小节实战是自己编译JDK,实际操作下来后遇到问题不少,为此特地记录,也希望可以给大家带来一些参考! 前置准备 平台及工具:Window ...