近年来,深度学习在计算机视觉领域已经占据主导地位,不论是在图像识别还是超分辨重现上,深度学习已成为图片研究的重要技术;现在深度学习技术已进入图片压缩领域。

本文将和大家分享如何使用深度学习卷积神经网络技术设计图像压缩算法。

当前主要图片压缩算法

说到图像压缩算法,目前市面上影响力比较大的图片压缩技术是WebP和BPG

WebP:谷歌在2010年推出的一款可以同时提供有损压缩和无损压缩的图片文件格式,其以VP8为编码内核,在2011年11月开始可以支持无损和透明色功能。目前facebook、Ebay等网站都已采用此图片格式。

BPG:知名程序员、ffmpeg和QEMU等项目作者Fabrice Bellard推出的图像格式,它以HEVC为编码内核,在相同体积下,BPG文件大小只有JPEG的一半。另外BPG还支持8位和16位通道等等。尽管BPG有很好的压缩效果,但是HEVC的专利费很高,所以目前的市场使用比较少。

就压缩效果来说,BPG更优于WebP,但是BPG采用的HEVC内核所带来的专利费,导致其无法在市场进行大范围使用。在这种情况下,运用深度学习来设计图片压缩算法就应运而生。

如何用深度学习技术设计图片压缩算法

通过深度学习技术设计压缩算法的目的之一是,设计一个比目前商用图片压缩更优的压缩算法,同时借助于深度学习技术还可以设计更简洁的端到端算法。在图片、视频压缩领域,主要用到的深度学习技术是卷积神经网络(CNN)。如图1所显示,像搭积木一样,一个卷积神经网络由卷积、池化、非线性函数、归一化层等模块组成。最终的输出根据应用而定,如在人脸识别领域,我们可以用它来提取一串特征来表示一幅人脸图片,然后通过比较特征的异同进行人脸识别。

(来源http://blog.csdn.net/hjimce/article/details/47323463)

用深度学习设计的图片压缩

完整的深度学习图片压缩框架包括CNN编码器、量化、反量化、CNN解码器、熵编码、码字估计、码率-失真优化等几个模块。编码器的作用是将图片转换为压缩特征,解码器就是从压缩特征恢复出原始图片。其中编码器和解码器,可以用卷积、池化、非线性等模块进行设计和搭建。

如何评判图片压缩算法

在深入技术细节前,我们先来了解一下如何评判压缩算法。评判一个压缩算法好坏的重要指标有三个:PSNR(Peak Signal to Noise Ratio)、BPP(bit per pixel)和MS-SSIM(multi-scaleSSIM index)

我们知道,任何数据在计算机内都是以比特形式存储,所需比特数越多则占据的存储空间越大。PSNR 用来评估解码后图像恢复质量,BPP用于表示图像中每个像素所占据的比特数,MS-SSIM 值用来衡量图片的主观质量,简单来说在同等的 Rate / BPP 下, PSNR 更高,恢复质量越好;MS-SSIM 更高,主观感受越好。

举个例子,假设长宽为 768*512 的图片大小为1M,利用深度学习技术对它编码,通过编码网络后产生包括 96*64*192 个数据单元的压缩特征数据,如果表示每个数据单元平均需要消耗1个比特,则编码整张图需要 96*64*192 个比特。经过压缩后,编码每个像素需要的比特数为(96*64*192)/(768*512)=3,所以 BPP 值为 3 bit/pixel,压缩比为 24:3=8:1。这意味着一张1M的图,通过压缩后只需要消耗0.125M 的空间,换句话说,之前只能放1张照片的空间,现在可以放8张。

如何用深度学习做压缩

谈到如何用深度学习做压缩,还是用刚才那个例子。将一张大小 768*512 的三通道图片送入编码网络,进行前向处理后,会得到占据 96*64*192 个数据单元的压缩特征。有计算机基础的读者可能会想到,这个数据单元中可放一个浮点数、整形数、或者是二进制数。那到底应该放入什么类型的数据?从图像恢复角度和神经网络原理来讲,如果压缩特征数据都是浮点数,恢复图像质量是最高的。但一个浮点数占据32个比特位,按之前讲的比特数计算公式为(96*64*192*32)/(768*512)=96,压缩后反而每个像素占据比特从 24 变到 96,非但没有压缩,反而增加了,这是一个糟糕的结果,很显然浮点数不是好的选择。

为了设计靠谱的算法,我们使用一种称为量化的技术,它的目的是将浮点数转换为整数或二进制数,最简单的操作是去掉浮点数后面的小数,浮点数变成整数后只占据8比特,则表示每个像素要占据24个比特位。与之对应,在解码端,可以使用反量化技术将变换后的特征数据恢复成浮点数,如给整数加上一个随机小数,这样可以一定程度上降低量化对神经网络精度的影响,从而提高恢复图像的质量。

即使压缩特征中每个数据占据1个比特位,可是 8:1 的压缩比在我们看来并不是一个很理想的结果。那如何进一步优化算法?再看下BPP的计算公式。假设每个压缩特征数据单元占据1个比特,则公式可写成:(96*64*192*1)/(768*512)=3,计算结果是3 bit/pixel,从压缩的目的来看,BPP 越小越好。在这个公式中,分母由图像决定,可以调整的部分在分子,分子中 96、64、192 这三个数字与网络结构相关。很显然,当我们设计出更优的网络结构,这三个数字就会变小。

**那1与哪些模块相关?**1表示每个压缩特征数据单元平均占据1个比特位,量化会影响这个数字,但它不是唯一的影响因素,它还与码率控制和熵编码有关。码率控制的目的是在保证图像恢复质量的前提下,让压缩特征数据单元中的数据分布尽可能集中、出现数值范围尽可能小,这样我们就可以通过熵编码技术来进一步降低1这个数值,图像压缩率会进一步提升。

用深度学习做视频压缩,可以看作是在深度学习图片压缩基础上的扩展,可结合视频序列帧间的光流等时空信息,在单张压缩的基础上,进一步降低码率。

深度学习图片压缩的优势

图鸭科技通过深度学习技术研发的图片压缩——TNG 在内部的测试上已经超过 WebP 与BPG,下图是在 kodak24 标准数据集上测评结果,分别是 PSNR 值与 MS-SSIM 值。


图3图4在kodak24标准数据集上测评结果,上图为 PSNR 结果,下图为 MS-SSIM 的结果

熟悉图像压缩的朋友可以直接通过 PSNR 和 MS-SSIM 值看出: TNG 的 PSNR 值与 MS-SSIM值明显高于 WebP、jpeg2000 和 jpeg;且 TNG 在高码字的情况下 PSNR 值高于 BPG,且其MS-SSIM 值基本一致高于BPG。

在低码字情况下TNG与WebP压缩效果对比



图5图6低码字情况下TNG与WebP压缩效果对比,图5 TNG,图6 WebP

相比 TNG,WebP 尽管保留了更多的细节,但是其失真更多,不利于后期恢复。而TNG采用了保边滤波的方法,让其失真更少,整体图像效果优于WebP。

在高码字情况下TNG与BPG对比



图7图8高码字情况下TNG与BPG压缩效果对比,图7 TNG 图8 BPG

上面两幅图是高码字的情况,在实际的测试中,BPG会出现上图所示的颜色失真情况;而反观TNG其基本不会出现这类的失真状况。这是因为BPG在编码压缩时尽管图片时,其YUV通道是分开进行编解码,产生了一些色差。而TNG在编码时考虑到了整体图片的情况,采用了同一编码,也就避免了上述的情况。

在低码字的情况下TNG与BPG的对比



图9图10低码字情况下TNG与BPG压缩效果对比,图9 TNG 图10 BPG

在低码字的情况下,BPG压缩图片中出现了伪轮廓和块效应等问题,整个图片的连续性比较差;而TNG的图片连续性和物体的轮廓保持的更好。

图片压缩的使用领域可以说的极其广泛了,从社交应用、新闻客户端到游戏等领域,可以说有图片的地方就需要图片压缩。使用更先进的图片压缩技术,可以帮助大量使用图片的企业节省大量图片带宽成本,且能帮助用户节省图片流量,减少加载图片所需时间。

总结

总体而言,借助于深度学习设计图像压缩算法是一项非常具有前景但也非常具有挑战性的技术。深度学习技术图片压缩可以使大家在全面高清屏的时代有更优质的视觉体验,同时在游戏、空间图像传感等领域,深度学习图片压缩技术可以帮助图片达到更高分辨率,更小存储空间,从而为用户提供更好的视觉体验。

深度学习之图片压缩技术相关推荐

  1. 太空夜景_太空深度学习的模型压缩技术概述

    太空夜景 By Hannah Peterson and George Williams (gwilliams@gsitechnology.com) 汉娜·彼得森 ( Hannah Peterson)和 ...

  2. 深度学习为图片压缩算法赋能:节省55%带宽

    本文来自图鸭科技团队的投稿,他们用深度学习技术设计.优化图片压缩算法,在保证图像画质的情况下能节省55%带宽.本文将介绍实现方法及测试对比. 随着互联网的发展,人们对高清图片的需求也在不断增加,在保证 ...

  3. 基于深度学习的病毒检测技术无需沙箱环境,直接将样本文件转换为二维图片,进而应用改造后的卷积神经网络 Inception V4 进行训练和检测...

    话题 3: 基于深度学习的二进制恶意样本检测 分享主题:全球正在经历一场由科技驱动的数字化转型,传统技术已经不能适应病毒数量飞速增长的发展态势.而基于沙箱的检测方案无法满足 APT 攻击的检测需求,也 ...

  4. 基于深度学习的目标检测技术演进:从目标检测到人脸检测

    本篇博客主要转载两篇写得好的分别介绍基于深度学习的目标检测和人脸检测的文章,最近在调研基于深度学习的人脸检测相关的文章,在网上查相关资料时,有幸看到.文末附带基于深度学习的目标检测和人脸检测相关经典文 ...

  5. 深度学习狗图片_狗品种分类的深度学习

    深度学习狗图片 深度学习 (Deep Learning) Stuck behind the paywall? Click here to read the full story with my fri ...

  6. 知识图谱与深度学习(新时代·技术新未来)

    作者:刘知远,韩旭,孙茂松 出版社:清华大学出版社 品牌:清华大学出版社 出版时间:2020-05-01 知识图谱与深度学习(新时代·技术新未来)

  7. 深度学习的异构加速技术(一):AI 需要一个多大的“心脏”?

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:kevinxiaoyu,高级研究员,隶属腾讯TEG-架构平台部,主要研究方向为深度学习异构计算与硬件加速.FPGA云.高速视觉感知等方向 ...

  8. 【深度学习】计算机视觉相关技术探索(一)

    [深度学习]计算机视觉相关技术探索(一) 文章目录 1 计算机视觉概述 2 使用机器学习解决图像分类问题 3 Keras和神经网络简介 4 卷积神经网络(CNN),迁移学习 5 对象检测问题 6 yo ...

  9. Netflix选择AVIF作为下一代图片压缩技术

    Photo by John-Mark Smith from Pexels Netflix在情人节当天公开AVIF作为下一代图片压缩技术,同其宣布在Android端采用AV1视频编解码格式仅相隔一周时间 ...

  10. 基于深度学习的信息抽取技术

    DeepIE: Deep Learning for Information Extraction DeepIE: 基于深度学习的信息抽取技术(预计2020年8月31日前全部更新完毕) TOP 知乎专栏 ...

最新文章

  1. 计算机多媒体理论知识,计算机多媒体技术07311.doc
  2. webpackjsonp 还原_具有催化CO2还原性能的非贵金属配合物的配体设计
  3. LinkedList专题1
  4. c++矩阵转置_lt;读书笔记4gt; 稀疏矩阵基础算法
  5. english 2012020604
  6. C# 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集...
  7. 滴滴技术总监受贿 1000 万,列入招聘黑名单,互联网大厂反腐有多强?
  8. JVM 方法调用之动态分派
  9. 怎么用python找因子_python找出因数与质因数的方法
  10. Python编程实践之Choose
  11. 2022软工K班结对编程任务
  12. MATLAB实现LSBR并采用卡方分析进行分析
  13. 如何制作一个商城小程序?
  14. rgb转换 css 字体
  15. 鸡小德手机小常识 如何鉴定手机是否为行货
  16. 校园网连不上,火绒检测dns错误但修复不了,360直接搞定,nice!
  17. 逻辑推理与判断(委派任务)
  18. 京东E卡购买api接口
  19. ERP规范正式实施 信息化可以对症下药?(转)
  20. 他是阿里年头最久的越南小二,从中供铁军学到地推秘诀

热门文章

  1. 阿星 centos7卸载mysql并且通过yum安装mysql
  2. 利用R语言对RNA-Seq进行探索分析与差异表达分析
  3. 关于TI XDS100V1和XDS100V3仿真器电脑无法识别的解决办法
  4. adb shell循环命令_android adb实用命令小结
  5. php网页游戏开发代码,PHP游戏编程25个脚本代码
  6. 【量化】资产组合理论:鸡蛋不能放在一个篮子里
  7. 每日一道 LeetCode (4):罗马数字转整数
  8. 史上最全的 SQL 注入资料
  9. uniapp定位和选择城市
  10. Kubernetes架构基础知识