Hello,大家好,我是 JioNLP。
最近一直在想一个问题。为什么我们的图像 AI 模型那么耗算力?比如,现在多模态图文理解 AI 模型本地化部署一个节点,动不动就需要十几个 G 的显存资源。
这个原因当然很多,这篇文章我只说一个点。
那就是 AI 模型的图像输入是 RGB 。
RGB 图像的压缩
一般像一张 1920 x 1080 的图像,如果要输入 AI 模型做处理的话,必须首先转换成 RGB 三颜色格式,形成一个 1920 x 1080 x 3 字节大小的输入,这个大小大概是 6M 内存空间的大小。
但是除了 RGB 这种格式之外,还有 YUV 这种图像存储格式,它利用了人眼睛对亮度敏感,对颜色不敏感这个特性,实现了对图像的压缩。存储一张1920 x 1080 的 YUV 格式的图像只需要大概 3M 内存空间。空间减半了。
当然,3M 还是太大了,有很多的压缩算法,它可以把图像做极致的压缩,一张 1920 x 1080 的图像,按照jpeg 的压缩方法,可以压缩到几百 KB 的大小。比原始 RGB 高效多了,但是从人肉眼视觉角度看,两者几乎看不出差别。(下图中,png 存储的就是最原始的 RGB 三色图,jpg 是压缩过后的图像)
也就是说,从信息论的角度,RGB 图像是信息冗余的。它可以压缩到一个很小的信息表示。
AI 图像模型和 AI 语言模型
现在流行的 AI 图像模型都是把 RGB 直接输入神经网络来处理的。
但是 AI 图像模型和 AI 的语言模型有个很明显的不同。图像模型往往输入端模型参数大,输出端模型参数小,整个神经网络层数非常多。
而 语言模型则输入和输出两端大小相同,神经网络层数也偏少。
这些从一些经典网络的结构图就能看出来。一个 VGG 图像模型的结构图,可以明显看出这是一个三角形的结构,输入侧(原始图像端)宽大,输出侧细小。而且模型层数动不动就好几十层。
VGG16图像 AI 模型
而语言模型,几乎都是输入输出两边一样的粗细。模型的层数,最多也就十多层。
语言模型
造成这种现象的原因是:图像 RGB 是一种存在大量信息冗余的图像表示方法,AI 模型的处理过程需要不断地在每一层神经网络对图像做信息压缩。
而 语言本来就是一种人类高度压缩的信息表示,人脑已经做过高度压缩了,因此就不再需要 AI 神经网络去压缩。再压缩就意味着语言的信息量丢失,造成 AI 模型效果差。
RGB 的原罪?
所以,你会发现,图像 AI 模型往往模型参数体量更大,语言模型参数体量要小一些。
一本《红楼梦》小说,也就100万字,存在电脑里也只需要5M 左右的硬盘空间。但是把红楼梦绘制成画本,制作成电影、电视剧,存在电脑里就需要好多个 G 的硬盘空间了。但是两者讲述的故事都是相同的,其实就是说,语言高度压缩,图像和视频高度冗余。
AI 神经网络就是在对图像做压缩上面,花费了大量的算力。这就造成了图像神经网络相比语言模型更加耗算力。
所以,问题就出在了,我们在用 RGB 图像格式作为 AI 模型的输入,这种方式不高效,它只是方便人类的理解而已。
用 RGB 输入图像,明确表示了图像空间位置关系,也就方便了 CNN 这种模型结构的推广。这是一直以来学术界研究这个问题的技术惯性导致的。
抛弃 RGB 作为 AI 的图像输入格式?
如果把 YUV 输入模型呢?或者,直接把压缩后的 jpg 格式输入模型呢?
当然,我这里只是抛出问题,我目前并没有解决方法。如果能够设计出一种 AI 神经网络结构,能够很好地拟合 jpg 格式的数据,做到信息压缩,我想,这对节省 AI 硬件算力有很大的好处。
抛出几个想法
首先当然是 YUV 作为 AI 的输入。这个输入格式降低了一半的信息表示空间,但图像的信息量几乎没有丢失。你可以简单理解为,YUV 就是对 RGB 的一种数据降采样。
然后,对图像做 DCT 变换,也就是频域变换,把图像从空间域转换到频率域。
这样一来,人眼对低频的敏感,对高频的钝感可以很明确区分开来。
处理频域信息需要一种什么样的神经网络结构呢?我想应该是一种很不同的神经网络。但是也有可能,还是逃不开 attention 这一机制。因为 attention 的机制普适性比较强。
最后,我想要不直接把图像的压缩后的 bytes 直接输入 AI 模型,采用处理音频的方式来处理图像。
当然以上都是我的想象,还没有落地的方案,实验和测试。如果感兴趣,可以联系我看看如何推进这一部分工作。可以关注我的公众号 JioNLP,我想进一步研究一下这个问题。
文章来自于微信公众号“JioNLP”,作者“JioNLP”
发评论,每天都得现金奖励!超多礼品等你来拿
登录 后,在评论区留言并审核通过后,即可获得现金奖励,奖励规则可见: 查看奖励规则