GaussianImage:基于2D高斯分布的1000 FPS图像表示与压缩技术
张新杰*、葛星彤*、许桐达、何代兰、王彦、秦宏伟、陆国、耿静📧、张军📧
(* 表示贡献相同,📧 表示通讯作者)
这是我们论文GaussianImage的官方实现,该论文提出了一种基于2D高斯分布的突破性图像表示和压缩范式。通过紧凑的2D高斯表示和新颖的光栅化方法,我们的方法以短暂的训练时间、最小的GPU内存开销和超快的渲染速度实现了高性能的表示。此外,我们整合了现有的向量量化技术,构建了一个低复杂度的神经图像编解码器。值得注意的是,我们编解码器的解码速度达到约2000 FPS,超过了JPEG等传统编解码器,同时在较低比特率下提供了更好的压缩性能。这在神经图像编解码器领域取得了重大进展。更多定性结果可以在我们的论文中找到。
新闻
-
2024/7/8:🔥 我们发布了论文中呈现的GaussianImage的Python和CUDA代码。快来试试吧!与第一个版本相比,我们通过移除熵编码操作,进一步将GaussianImage编解码器的解码速度提高到约2000 FPS,同时仅略微增加了bpp开销。
-
2024/7/1:🌟 我们的论文已被ECCV 2024接收!🎉 欢呼吧!
概述
隐式神经表示(INRs)最近在图像表示和压缩方面取得了巨大成功,在假设有足够GPU资源的情况下,提供了高视觉质量和10-1000 FPS的快速渲染速度。然而,这一要求常常阻碍了它们在内存有限的低端设备上的使用。为此,我们提出了一种基于2D高斯分布的突破性图像表示和压缩范式,名为GaussianImage。我们首先引入2D高斯分布来表示图像,其中每个高斯分布有8个参数,包括位置、协方差和颜色。随后,我们揭示了一种基于累积求和的新型渲染算法。值得注意的是,我们的方法在GPU内存使用量至少降低3倍、拟合时间缩短5倍的同时,不仅在表示性能上与INRs(如WIRE、I-NGP)相媲美,而且还能提供1500-2000 FPS的更快渲染速度,且不受参数大小的影响。此外,我们整合了现有的向量量化技术来构建图像编解码器。实验结果表明,我们的编解码器在率失真性能上可与基于压缩的INRs(如COIN和COIN++)相媲美,同时实现了约2000 FPS的解码速度。另外,初步的概念验证显示,在使用部分比特回传编码时,我们的编解码器在性能上超越了COIN和COIN++。
快速开始
克隆仓库
该仓库包含子模块,因此请使用以下命令检出:
# SSH
git clone git@github.com:Xinjie-Q/GaussianImage.git --recursive
或
# HTTPS
git clone https://github.com/Xinjie-Q/GaussianImage.git --recursive
克隆仓库后,您可以按照以下步骤在不同任务下训练GaussianImage模型。
要求
cd gsplat
pip install .[dev]
cd ../
pip install -r requirements.txt
如果在安装requirements.txt中列出的包时遇到错误,您可以尝试使用pip命令单独安装每个Python包。
在训练之前,您需要下载kodak和DIV2K-validation数据集。数据集文件夹组织如下:
├── dataset
│ | kodak
│ ├── kodim01.png
│ ├── kodim02.png
│ ├── ...
│ | DIV2K_valid_LR_bicubic
│ ├── X2
│ ├── 0801x2.png
│ ├── 0802x2.png
│ ├── ...
表示
sh ./scripts/gaussianimage_cholesky/kodak.sh /path/to/your/dataset
sh ./scripts/gaussianimage_rs/kodak.sh /path/to/your/dataset
sh ./scripts/3dgs/kodak.sh /path/to/your/dataset
sh ./scripts/gaussianimage_cholesky/div2k.sh /path/to/your/dataset
sh ./scripts/gaussianimage_rs/div2k.sh /path/to/your/dataset
sh ./scripts/3dgs/div2k.sh /path/to/your/dataset
压缩
在过拟合图像后,我们从图像表示中加载检查点,并应用量化感知训练技术来获得GaussianImage模型的图像压缩结果。
sh ./scripts/gaussianimage_cholesky/kodak_comp.sh /path/to/your/dataset
sh ./scripts/gaussianimage_rs/kodak_comp.sh /path/to/your/dataset
sh ./scripts/gaussianimage_cholesky/div2k_comp.sh /path/to/your/dataset
sh ./scripts/gaussianimage_rs/div2k_comp.sh /path/to/your/dataset
致谢
我们的代码基于gsplat开发。这是一个简洁且易于扩展的高斯分布库。
我们感谢vector-quantize-pytorch提供的框架,用于实现残差向量量化。
引用
如果您发现我们的GaussianImage范式对您的研究有用或相关,请引用我们的论文:
@inproceedings{zhang2024gaussianimage,
title={GaussianImage: 1000 FPS Image Representation and Compression by 2D Gaussian Splatting},
author={Zhang, Xinjie and Ge, Xingtong and Xu, Tongda and He, Dailan and Wang, Yan and Qin, Hongwei and Lu, Guo and Geng, Jing and Zhang, Jun},
booktitle={European Conference on Computer Vision},
year={2024}
}