一行预处理代码,让你的CV模型更强

新闻 前端
Google Research提出一个可学习的resizer,只需在预处理部分略作修改,即可提升CV模型性能!

 [[419098]]

图像预处理的一个重要操作就是resize,把不同大小的图像缩放到同一尺寸,但目前用到的resize技术仍然是老旧的,无法根据数据变换。Google Research提出一个可学习的resizer,只需在预处理部分略作修改,即可提升CV模型性能!

神经网络要求输入的数据的大小在每个mini-batch中是统一的,所以在做视觉任务的时候,一个重要的预处理步骤就是image resize,把它们调整到统一的大小进行训练。

通常缩放(image down-scaling)后的图像不会太大,因为如果分辨率过高会导致训练过程中模型占用的内存急剧上升,并且过高的分辨率也会导致训练速度和推理速度过慢。虽然近年来GPU的性能逐渐提升,但标准的输入图像仍然是224 × 224。

在大多数情况下,经过处理的图像的最终尺寸非常小,例如早期的deepfake生成的图片只有80 × 80的分辨率。

[[419099]]

在人脸数据集中,因为人脸很少有是正方形的,一张图片中的像素会浪费比较多的空间,可用的图像数据就更少了。

一行预处理代码,让你的CV模型更强

目前最常用的图像大小调整方法包括最近邻(nearest neighbor)、双线性(bilinear)和双三次(bicubic)。这些resize方法的速度很快,可以灵活地集成在训练和测试框架中。

但这些传统方法是在深度学习成为视觉识别任务的主流解决方案之前几十年发展起来的,所以并不是特别适合新时代的深度学习模型。

Google Research提出了一种新的方法,通过改进数据集中的图像在预处理阶段缩放的方式,来提高基于图像的计算机视觉训练流程的效率和准确性。

一行预处理代码,让你的CV模型更强

图像大小对任务训练精度的影响并没有在模型训练中受到很大关注。为了提高效率,CV研究人员通常将输入图像调整到相对较小的空间分辨率(例如224x224) ,并在此分辨率下进行训练和推理。

研究人员想到,这些resizer是否限制了训练网络的任务性能呢?

一行预处理代码,让你的CV模型更强

通过一个简单的实验就可以证明当这些传统的resizer被可学习的resizer替代后,可以显著提高性能。

传统的resizer通常可以生成更好的视觉上的缩放图像,可学习的resizer对人来说可能不是特别容易看清楚。

一行预处理代码,让你的CV模型更强

文中提出的resizer模型架构如下图所示:

一行预处理代码,让你的CV模型更强

它主要包括了两个重要的特性:(1) 双线性特征调整大小(bilinear feature resizing),以及(2)跳过连接(skip connection),该连接可容纳双线性调整大小的图像和CNN功能的组合。

第一个特性考虑到以原始分辨率计算的特征与模型的一致性。跳过连接可以简化学习过程,因为重定大小器模型可以直接将双线性重定大小的图像传递到基线任务中。

与一般的编码器-解码器架构不同,这篇论文中所提出的体系结构允许将图像大小调整为任何目标大小和纵横比。并且可学习的resizer性能几乎不依赖于双线性重定器的选择,这意味着它可以直接替换其他现成的方法。

并且这个的resizer模型相对较轻量级,不会向基线任务添加大量可训练参数,这些CNN明显小于其他基线模型。

论文中的实验主要分为三个部分。

1、分类性能。

将使用双线性调整器训练的模型和输出调整分辨率224×224称为默认基线。结果表明,在224×224分辨率的模型中,性能最好,使用文中提出的resizer训练的网络对性能有所提升。

与默认基线相比,DenseNet-121和MobileNet-v2基线分别显示出最大和最小的增益。对于Inception-v2、DenseNet-121和ResNet-50,提出的resizer的性能优于具有类似双线性重定器。

一行预处理代码,让你的CV模型更强

2、质量评估

研究人员使用3种不同的基线模型对AVA数据集进行训练。基线模型根据ImageNet上预先训练的权重进行初始化,并在AVA数据集上进行微调。resizer权重是随机初始化的。在这组实验中,使用双三次resizer为基线方法。通过平均基本真实分数和平均预测分数之间的相关性来衡量性能,相关性的评价采用使用皮尔逊线性相关系数(PLCC)和斯皮尔曼秩相关系数(SRCC)。

与基线模型相比,存在确定性的改进。此外,对于Inception-v2和DenseNet-121型号,文中提出的resizer性能优于双三次resizer。在更高的失败率下,对于学习型resizer来说,EfficientNet似乎是一个更难有所提升的基线模型。

一行预处理代码,让你的CV模型更强

3、泛化性

首先使用与resizer的默认基线不同的目标基线联合微调的可学习resizer。然后,度量目标基线在底层任务上的性能。可以观察到,对大约4个epoch的训练数据进行微调足以使resizer适应目标模型。这个验证是一个合理的指标,能够表明经过训练的resizer对各种体系结构的通用性如何。

由分类和IQA结果可知,每列显示resizer模型的初始化检查点,每行表示一个目标基线。这些结果表明,经过最少次的微调,就可以为一个基线训练的resizer可以有效地用于开发另一个基线的resizer。

在某些情况下,如DenseNet和MobileNet模型,微调的resizer实际上超过了通过随机初始化获得的分类性能。对于IQA的EffectiveNet模型也有同样的观察结果。

最后研究人员指出,这些实验专门针对图像识别任务进行了优化,并且在测试中,他们的 CNN驱动的可学习的resizer能够在这类任务中降低错误率。

未来也许考虑在其他图像任务中训练image resizer。

 

责任编辑:张燕妮 来源: 新智元
相关推荐

2022-02-23 14:37:48

代码Pythonbug

2015-03-20 14:51:09

Testin云测

2020-08-19 10:30:25

代码Python多线程

2016-12-02 08:53:18

Python一行代码

2018-09-19 15:46:51

编程语言Python编译器

2021-06-11 14:15:55

代码前端项目

2017-04-05 11:10:23

Javascript代码前端

2021-05-28 07:39:17

SQL代码操作

2020-07-20 09:20:48

代码geventPython

2020-02-19 15:02:23

代码开发工具

2023-11-10 09:41:44

Python代码

2018-10-07 05:27:03

Python代码机器学习

2021-11-02 16:25:41

Python代码技巧

2021-05-11 20:46:17

Python代码分类

2014-02-12 13:43:50

代码并行任务

2022-04-09 09:11:33

Python

2015-07-30 11:13:24

LinuxShell

2011-07-20 09:11:58

C++

2020-08-12 14:54:00

Python代码开发

2019-11-26 09:47:50

代码开发工具
点赞
收藏

51CTO技术栈公众号