1. Abstract
Adjust Anchored Neighborhood Regression for Fast Super-Resolution
R Timofte et al. ACCV 2014
A+的方法主要是对ANR(Anchored Neighborhood Regression 锚定邻域回归)的改进, 理论来自之前的四个算法
- Anchored Neighborhood Regression
- Simple Functions
- Sparse Representation
- Neighbor embedding approaches
后面两个我们之前都讲过了, 在这儿把前两个是怎么回事儿简单说一下
ANR
ANR是从NE和SC出发的改进方案, 改进的目的就是要fast
主要是两个方面
① l2-norm替代l1-norm
将原先的问题转换成一个l2-norm问题来求解
为什么要转成l2-norm去求解呢?因为l1-norm没有解析解, 所以在inference的过程中还要迭代去求LR representation, 而l2-norm就可以在训练阶段就得到LR representation, 这样, inference的速度就会快很多, 但l1-norm的好处就是解具有稀疏性(这个可以看一下我收藏的那篇机器学习中的五种回归模型及其优缺点)
这个公式其实对NE和SC来说是通用的, Nl就是对应LR的字典, 只不过对于Sc来说就是全字典, 对NE来说就是对应yF的Neighborhood Feature, β就是表征, 也就是Prior认为的LR和HR patch相似的几何结构
这里yF是input LR feature
β的代数解是
那从表征β还原HR patch的过程就是
这里就引出了映射矩阵P_G
这个P_G是可以离线算出的, 那在线恢复时, 我们只要计算PG和yF的乘积就可以了, 这就快了不少
如果用的是从Dictionary Learning学到的全字典的话, 那这个方法就叫Global Regression, 作者觉得这还不够快
② Anchored Neighborhood Regression
从Global 到 Anchored Neighborhood, 作者参考了NE的思想, 就是我不用全字典, 而是找离我要转换的yF最近的atom, 字典中的atom就是空间转换的基, 这个最近的atom就被称为anchored
If instead of considering the whole dictionary as starting point for computing the projective matrix we consider local neighborhoods of a given size we allow more flexibility of the approach at the expense of increased computation – we will have more than one projective matrix and neighborhoods
这个想法其实就是那么多基其实有点冗余, 我只需要跟yF关系最大的那几个基就可以求出yF的表征, 这有点类似PCA的思想
基于这个思路, 在求映射矩阵PG的时候, 作者显示把atom按临近关系group, 这个临近关系作者用correlation来表示, 而不是Euclidean distance, 在离线的时候我们可以对每一个atom找K个临近的atom, 组成一个group, 这个group是全字典的一个子集
We start by grouping the dictionary atoms into neighborhoods. More specifically, for each atom in the dictionary we compute its K nearest neighbors, which will represent its neighborhood.
然后在恢复的时候, 我们可以找到跟y_F关系最大的那个atom构成的group(对应之前的Nl, Nh), 用这个group形成一个针对yF的映射矩阵Pj, 这样就可以进一步减少在推理时的计算量, 所谓关系最大, 其实就是最像, 就像PCA里面寻找主成分, 就是看哪个atom最能够表达yF
The super-resolution problem can then be solved by calculating for each input patch feature yiF its nearest neighbor atom, dj , in the dictionary, followed by the mapping to HR space using the stored projection matrix Pj
x=Pj yiF
SF
SF强调SR一直饱受ambiguity problem, 就是HR->LR多对一问题, ambiguity problem会造成高频细节的损失(high frequency loss), 而解决这个问题的方案就是足够多的样本, 同时为了在test phase减少运算量, SF在training phase大大提高了运算量
we spend intensive computational load during the training phase
在training phase主要是两步
① patch聚类, 把大量的patch经过简单的feature化(去均值)后聚类成为4096 clusters, 每个cluster中心作为后续训练的一个样本(这个方法让我想到之前老白提到的为了保证样本的均衡, 在训练之前先对样本聚类的方法)
② 训练映射矩阵
我们先看一下这个目标函数
Cn(m+2)是映射矩阵
Wnl是l个HR patch构成的目标矩阵
Vml是l个LR patch构成的输入矩阵
这就是单层神经网络结构啊, 1就是Bias, 画出来就是这样
所以, SF实际上就是一种DL的方法, 学习v->w的转换系数, 但是是纯线性的, 所以效果有限, 因为泛化性有限, 所以需要足够多的数据去驱动
Tricks
SF里有两个Tricks来提升效果
① LR patch并不对应HR patch的全部, 只取HR patch中间的部分
作者认为LR不包含学边界需要的信息, 所以应该把这部分排除在HR patch之外, 那问题是你怎么知道应该取多大一块中心区域?
We do not learn mapping functions to predict the HR boundary pixels as the LR patch Pl does not carry sufficient information to predict those pixels
② 对样本聚类, 这应该算是一个通用方法, 可以提高学习的效率, 保证样本比例的平衡
2. Algorithm
A+的改进
https://blog.csdn.net/u011630458/article/details/65635155
在ANR的基础上, A+在计算投影矩阵P_j的时候, 每个atom寻找邻居不是找其他atom, 而是在训练用的LR/HR patch中找, 论文中建议是2048个
优化的公式还是和ANR一样
只不过, ANR中Nl就是局部字典, 就是anchor atom附近的基的组合, 而在A+中, 直接去LR的patch中去找, 要的量就更大得了(K=2048)
We have replaced the neighborhood of atoms N_l (of which each dictionary atom has its own version) with a matrix S_l, containing the K training samples that lie closest to the dictionary atom to which the input patch y is matched. We set K to 2048 in our experiments.
基于的理论基础就是作者认为, 相对于稀疏的基(atoms), 稠密的基(样本)能够更好的表达patch
the local manifold around an atom, which is the associated hypercell of an atom, is more accurately spanned by dense samples interior to the hypercell than by a set of external neighboring atoms.
3. Discussion
优势
其实是用了SF数据驱动的思想, 更好地利用了众多的样本, 因为反正映射矩阵PG是离线算的, 并不会增加在线的成本, 所以如果效果好, 可以用更多的更稠密的基来表达patch, 实验证明效果要比ANR强
但是速度上图显示是比ANR更快, 我存疑, 因为A+和ANR在推理阶段是没有差异的, 都是只做一次矩阵乘法, 那A+比ANR究竟快在哪儿了呢?
劣势
劣势暂时还没看到, 神经网络在效果上超越A+应该是没什么问题, 但是速度上很难PK, 因为A+毕竟在线就算一个矩阵乘法, 连非线性操作都没有, 这个在速度上想有所超越就相当难了