前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用于机器视觉任务的图像压缩前处理

用于机器视觉任务的图像压缩前处理

作者头像
用户1324186
发布2023-09-09 09:09:16
3670
发布2023-09-09 09:09:16
举报
文章被收录于专栏:媒矿工厂

论文标题:Preprocessing Enhanced Image Compression for Machine Vision 作者:Guo Lu, Xingtong Ge, Tianxiong Zhong, etc. 论文链接:https://arxiv.org/pdf/2206.05650.pdf 内容整理:陈予诺 本文提出了一种用于机器视觉任务的图像压缩前处理方法,通过在传统编码器之前引入神经网络前处理模块来优化图像压缩的性能。实验结果表明,该方法通过节省约20%的码率,能够在下游机器视觉任务的性能和编码比特率之间取得更好的平衡。

引言

最近,越来越多的图像被压缩并发送到后端设备进行机器视觉分析任务(例如目标检测),而不仅仅是供人类观看。然而,大多数传统的或可学习的图像编解码器都是最小化人类视觉系统的失真,而没有考虑到机器视觉系统的需求。在这项工作中,我们提出了一种用于机器视觉任务的图像压缩前处理方法。我们的框架不依赖于可学习的图像编解码器,而是可用于传统的非可微分编解码器,这意味着它与编码标准兼容,并且可以轻松部署在实际应用中。具体而言,我们在编码器之前增加一个神经网络前处理模块,用于保留对下游任务有用的语义信息并抑制无关信息以节省比特率。此外,我们的神经网络前处理模块是量化自适应的,可以在不同的压缩比下使用。更重要的是,为了联合优化前处理模块和下游机器视觉任务,我们在反向传播阶段引入了传统非可微分编解码器的代理网络。我们在几个具有不同骨干网络的代表性下游任务上进行了广泛的实验。实验结果表明,我们的方法通过节省约20%的比特率,在编码比特率和下游机器视觉任务性能之间取得了更好的权衡。

方法

整体框架

图1

上图所示为:(a) 针对人类视觉系统的图像压缩方法。(b) 我们提出的用于机器视觉任务的图像压缩前处理方法。(c) 对于来自BPG编解码器和我们的方法(NPP+BPG)的图像进行的图像分类结果展示。

图2

我们用于机器视觉的图像压缩前处理框架的总体架构如上图所示。整个系统旨在在编码比特率和机器分析任务性能之间实现更好的权衡。具体而言,我们首先将输入图像 X 输入到神经网络前处理模块(NPP)进行非线性变换,并生成滤波后的图像

\bar{X}

,其中保留关键的语义信息。然后,

\bar{X}

通过传统编解码器(如BPG)进行编解码。最后,解码后的图像

\hat{X}

输入到机器分析网络,如FCOS。

由于传统编解码器可能不是可微分的,所以提出的前处理模块无法享受与下游机器分析任务的联合端到端优化的好处。为了解决这个问题,在训练阶段,我们额外引入了一个可学习的图像压缩网络作为传统编解码器的代理网络,并将代理网络的梯度传播到前处理模块。在我们的实现中,我们使用BPG作为传统编解码器。通过使用以下损失函数来优化框架。

\mathcal{L}=R_t+\lambda \mathcal{D}_m+\beta D_{\text {pre }} \quad(1)

其中

{D}_m

R_t

分别表示基于重构图像

\hat{X}

的下游机器视觉任务的损失和传统编解码器的编码比特率。λ是超参数。此外,为了稳定训练过程,我们还考虑输入图像X和滤波图像

\bar{X}

之间的失真,表示为

D_{pre}

,β是权重超参数。

前处理网络

图3

如上图所示,我们提供了神经网络前处理模块的网络架构。具体而言,原始图像X被输入到两个并行分支中,其中第一个分支使用1×1卷积层学习非线性像素级变换,第二个分支使用 U-Net 提取语义信息。两个分支的输出被相加作为最终的滤波图像

\bar{X}

,通过浅层和深层变换保留了有用的纹理和语义信息。

此外,考虑到传统编解码器具有不同的压缩比(即量化参数),神经网络前处理模块需要为每个压缩比生成最佳的滤波图像

\bar{X}

。在这里,我们提出了一个量化自适应层用于神经预处理模块,它基于编解码器中的量化参数实现自适应预处理。如上图所示,我们将量化自适应层集成到NPP模块中,并对中间特征进行自适应滤波的缩放。

具体而言,基于传统编解码器中给定的量化参数(QP),我们使用一个2层MLP网络生成比例向量

s

,输出特征

f'

是输入特征

f

和生成的比例向量

s

的逐通道乘积。基于这个策略,预处理模块中的中间特征将根据量化参数进行调制;因此,我们的模块将为BPG编解码器中给定的QP生成最佳的滤波图像

\bar{X}

,并实现更好的码率-准确性权衡。

代理网络

表1

在我们的框架中,为了实现整个系统的端到端优化,引入了一个可学习的图像压缩网络作为代理网络,在反向传播阶段替代传统编解码器。在这里,我们使用Minnen的方法(Joint autoregressive and hierarchical priors for learned image compression)作为我们的代理网络。

为了确保代理网络能够很好地逼近传统编解码器,BPG和Minnen的方法的重构质量应该相似。由于学习的图像压缩方法是基于R-D失真损失

R + λ_pD

进行优化的,而重构图像的质量取决于超参数

λ_p

。因此,我们首先选择具有适当

λ_p

参数的可学习图像压缩模型来逼近BPG编解码器,然后按照以下方式对代理网络进行微调。

\mathcal{L}_p=R_p+\lambda_p D=R_p+\lambda_p d(\hat{X}, \hat{Y})\quad(2)

其中

d(\hat{X}, \hat{Y})

表示BPG重构图像

\hat{X}

和代理网络重构图像

\hat{Y}

之间的失真。

R_p

表示代理网络的相应比特率。之后,我们可以获得一个优化的代理编解码器来模拟BPG编解码器。

我们在以上算法中提供了端到端训练过程的更多实现细节。在前向传播中,我们可以根据输入图像X获取处理后的图像

\bar{X}

,其中

θ_{pre}

表示预处理模块的参数。然后,处理后的图像通过BPG编解码器进行压缩,BPG将计算比特率

R_t

并产生重构图像

\hat{X}

。然后,将重构图像

\hat{X}

输入到分析模型(例如目标检测模块)中,并获得计算机器感知损失

D_m

。之后,我们可以根据算法第5行所示的损失函数计算损失。同时,我们还基于代理网络生成相应的重构图像

\hat{Y}

和比特率

R_p

。在这里,

\hat{Y}

R_p

的值将被重新设置为来自BPG编解码器的

\hat{X}

R_t

实验

可视化结果

图4

上图中(a)和(b)分别代表原始图像和NPP模块的输出图像。使用BPG(QP = 37)编解码器的相应压缩文件大小为63.7kb和47.0kb。同时,图4(c)显示预处理模块丢弃的信息主要分布在背景区域。相反,如(d)所示,基于GradCAM方法[39],分类网络更加关注图像中的前景Dingo。这些结果证明前处理模块可以保留更多关键的语义信息用于下游分析任务。

目标检测和分类任务

图5

目标检测:Figure 5展示了在COCO数据集上使用不同骨干网络和压缩方法的码率-准确率曲线。显然,我们的图像压缩前处理方法在下游目标检测任务中显示出比基线方法更好的码率-准确率性能。具体而言,与现有的BPG编解码器和学习压缩模型相比,我们的神经网络前处理编解码器在FCOS上评估时,在相同的mAP值下节省了20.3%和19.5%的比特率。

图像分类:我们还将我们的方法与传统的和可学习的编解码器在图像分类任务上进行了比较。Figure 6展示了在ImageNet数据集上使用不同压缩方法的码率-准确率(top-1)曲线。值得注意的是,与传统编解码器BPG相比,我们的方法在ResNet50模型上评估时仍然实现了更好的码率-准确率性能,并节省了超过22.0%的比特率。

表2

为了进一步验证我们提出的神经网络前处理模块的泛化能力,我们通过直接将针对FCOS进行优化的NPP应用于其他骨干网络(如RetinaNet)来进行新的实验。图5中的实验结果显示,与基线方法相比,我们的压缩方法仍然表现出色,并在下游Faster-RCNN和RetinaNet模型上分别减少了19.5%和18.8%的比特率。这些结果表明,所提出的解决方案可以用于具有不同架构的下游网络,在实际应用中具有明显提升。相应的BDBR结果在上表中提供。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 媒矿工厂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 方法
    • 整体框架
      • 前处理网络
        • 代理网络
        • 实验
          • 可视化结果
            • 目标检测和分类任务
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档