不同于分类、检测等 high level 任务,low level 任务往往需要保持图像原始分辨率,比如去噪、增强、HDR 等。这样一来,当图像分辨率上来之后(比如现在手机相机主摄主流的分辨率就是 4096x 3072,远高于分类使用的 256x256 的尺寸),网络的整体计算量会变得非常恐怖,端侧动不动可能就要上百毫秒。所以,一般都需要对原图做一些降分辨率的处理,这样端侧的芯片才能 hold 住。
-
原图直接 downsample,过网络,输出再 upsample。最简单的方法,效果也最差,边缘什么的表现肯定是不指望了;
-
原图直接 downsample,过网络,用一些具有保边性质的方法来 upsample,典型的方法比如 HDRNet,学一组小分辨的系数,再联合学习到的引导图像,经过三线性插值上采样回原图分辨率;又或者对网络输出的小图直接用引导滤波上采样,也可以起到保边的效果。此类方法的核心思想主要是在小图上做完预测之后,采取何种保边的方式来做上采样。但往往会遇到细节不足、局部对比度不足的问题,原因在于你的最终结果毕竟是插值插出来的,只能保大边,小边缘保不住。
-
对原图构建 Laplace 金字塔,将最顶层的 low freq 图像过一个复杂的网络,其他的 high freq 可以过一些小网络来做调整,最后再塌缩回去。在一些 low level 任务中,主要差异体现在低频部分,高频细节可能差异很小,比如风格转换任务,所以直接对低频动手本身也更合理。同时 Laplace 金字塔又可以实现分频处理的功能,笔者认为此类范式应该是潜力还比较大的。
-
另一个比较 trick 做法是对输入做 pixel unshuffle,把像素从分辨率层面放到通道层面,最后把结果 pixel shuffle 回去,因为网络的计算量主要是受到特征图 size 的影响,所以也可以减小计算量,同时这样的做法会变相地扩大网络的感受野,也算是一个增益,在实际工作中也属于一个比较行之有效的做法。