Main idea
这是把deep learning用于2D图像中进行patch match的research。
这个CS Network是这篇文章,主要思想是把一个64
∗
*
∗ 64的patch先downsample得到一个32
∗
*
∗ 32的低分辨率的patch1,然后在原先64
∗
*
∗ 64的patch的中心区域截取32
∗
*
∗ 32得到patch2,这两个patch分辨率一个高一个低,相当于中心区域的信息twice,还包含了整体的信息。两个待比较的patch有四个小patch,用4个通道两两一组(组内param是share的)同时进行比较,不仅加快了计算速度还让比较更加有重点(中心区域)。metric function也是learned的。
本文改了主体网络,而且不用learned metric,直接concatenation然后用自己的loss function去train(metric是L2)
preprocessing
L2-Net CVPR2017
一种从patch中提取descriptor的网络结构,主要设计了一种data preprocess和loss function
data preprocess
随机选p个值,并选出这p个值的correspondence,组成p*p的矩阵。对角线对应positive,其他都是negative,这么做的原因可能是:真实情况下model面对的negative更多,model需要在众多的negative中找到一个positive,就需要有更强的negative的分辨能力,所以train中,positive:negative=1:1是有些不合理的,negative>>positive才能更接近真实情况。
loss function
1. Descriptor 的距离(相对距离)
match领域的文章喜欢用Hinge loss,但是Hinge loss在gradient的时候会不稳定,主要是由于threshold,你不知道每次迭代是哪些sample在起作用,所以有些文章用hard sample mining强迫所有sample都参与,但是hard sample mining有threshold,有些文章把hinge loss改成softplus。本文直接用相对距离,不用绝对距离这样就不会有threshold(括号里的2可以约掉)
2. 对feature的每一维去相关
因为overfitting与这个相关性成正相关,不加这一项会有严重的overfitting why???
3. Intermediate feature 距离
(就是在网络中把某层的feature抽出来进行restriction,这个也是后文中的DIF)
从结果来看。。这个加不加都没太大区别,加了好一点点,但是加多了preformance会断崖式下降,因为约束太紧了
Result
这篇文章我最感兴趣还是为什么Batch norm是不learn的,result里给出了结果,,其实learn不learn。。都差不太多,不learn好一点点