CompressAI

InterDigitalIncBSD-3-Clause-Clear活跃维护

基于 PyTorch 的端到端神经压缩研究库与评测平台,提供预训练模型、常用网络结构和指标,方便复现和对比学习类图像压缩算法。

A PyTorch library and evaluation platform for end-to-end compression research

暂无版本1,657star +3 / 7 天284fork同步于 2026-11-11 05:45 UTC

怎么上手

由 README 提炼,执行前请确认
pip install compressai
硬件要求按 README 说明

README 未说明具体显存要求;训练示例使用 --cuda 参数,说明需要 NVIDIA GPU,多 GPU 支持为实验性。

多卡 / 张量并行
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

基于 PyTorch 的端到端压缩研究库,提供学习式图像/视频压缩模型与评测脚本

基于 PyTorch 的端到端神经压缩研究库与评测平台,提供预训练模型、常用网络结构和指标,方便复现和对比学习类图像压缩算法。

核心能力

  • 提供深度学习压缩的自定义算子、层与模型
  • 移植部分 TensorFlow compression 官方库
  • 内置学习式图像压缩的预训练模型
  • 提供脚本对比学习模型与经典编解码器
  • 支持 DDP 多 GPU 训练(实验性)

容易踩的坑

仅提供 Linux 和 MacOS 的 wheel,其他平台需源码编译并依赖 C++17 编译器;官方不支持 Conda 环境;多 GPU 训练时 --batch-size 为每进程大小,全局批量会翻倍

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    License PyPI Downloads

    CompressAI (compress-ay) is a PyTorch library and evaluation platform for end-to-end compression research.

    CompressAI currently provides:

    • custom operations, layers and models for deep learning based data compression
    • a partial port of the official TensorFlow compression library
    • pre-trained end-to-end compression models for learned image compression
    • evaluation scripts to compare learned models against classical image/video compression codecs

    PSNR performances plot on Kodak

    Note: Multi-GPU support is now experimental.

    Installation

    CompressAI supports python 3.8+ and PyTorch 1.7+.

    pip:

    pip install compressai
    

    Note: wheels are available for Linux and MacOS.

    From source:

    A C++17 compiler, a recent version of pip (19.0+), and common python packages are also required (see setup.py for the full list).

    To get started locally and install the development version of CompressAI, run the following commands in a virtual environment:

    git clone https://github.com/InterDigitalInc/CompressAI compressai
    cd compressai
    pip install -U pip && pip install -e .
    

    For a custom installation, you can also run one of the following commands:

    • pip install -e '.[dev]': install the packages required for development (testing, linting, docs)
    • pip install -e '.[tutorials]': install the packages required for the tutorials (notebooks)

    Note: Docker images will be released in the future. Conda environments are not officially supported.

    Documentation

    Usage

    Examples

    Script and notebook examples can be found in the examples/ directory.

    To encode/decode images with the provided pre-trained models, run the codec.py example:

    python3 examples/codec.py --help
    

    An examplary training script with a rate-distortion loss is provided in examples/train.py. You can replace the model used in the training script with your own model implemented within CompressAI, and then run the script for a simple training pipeline:

    python3 examples/train.py -d /path/to/my/image/dataset/ --epochs 300 -lr 1e-4 --batch-size 16 --cuda --save
    

    To run the same training script on 2 GPUs with Distributed Data Parallel, use torchrun:

    CUDA_VISIBLE_DEVICES=0,1 torchrun --standalone --nproc_per_node=2 examples/train.py -d /path/to/my/image/dataset/ --epochs 300 -lr 1e-4 --batch-size 16 --cuda --save
    

    Note: --batch-size is per process, so the effective global batch size is 2 x --batch-size when using 2 GPUs.

    Note: the training example uses a custom ImageFolder structure.

    For video training, examples/train_video.py can be launched the same way:

    CUDA_VISIBLE_DEVICES=0,1 torchrun --standalone --nproc_per_node=2 examples/train_video.py -d /path/to/my/video/dataset/ --epochs 300 -lr 1e-4 --batch-size 16 --cuda --save
    

    Note: for examples/train_video.py, --batch-size is also per process, so the effective global batch size is 2 x --batch-size when using 2 GPUs.

    A jupyter notebook illustrating the usage of a pre-trained model for learned image compression is also provided in the examples directory:

    pip install -U ipython jupyter ipywidgets matplotlib
    jupyter notebook examples/
    

    Evaluation

    To evaluate a trained model on your own dataset, CompressAI provides an evaluation script:

    python3 -m compressai.utils.eval_model checkpoint /path/to/images/folder/ -a $ARCH -p $MODEL_CHECKPOINT...
    

    To evaluate provided pre-trained models:

    python3 -m compressai.utils.eval_model pretrained /path/to/images/folder/ -a $ARCH -q $QUALITY_LEVELS...
    

    To plot results from bench/eval_model simulations (requires matplotlib by default):

    python3 -m compressai.utils.plot --help
    

    To evaluate traditional codecs:

    python3 -m compressai.utils.bench --help
    python3 -m compressai.utils.bench bpg --help
    python3 -m compressai.utils.bench vtm --help
    

    For video, similar tests can be run, CompressAI only includes ssf2020 for now:

    python3 -m compressai.utils.video.eval_model checkpoint /path/to/video/folder/ -a ssf2020 -p $MODEL_CHECKPOINT...
    python3 -m compressai.utils.video.eval_model pretrained /path/to/video/folder/ -a ssf2020 -q $QUALITY_LEVELS...
    python3 -m compressai.utils.video.bench x265 --help
    python3 -m compressai.utils.video.bench VTM --help
    python3 -m compressai.utils.video.plot --help
    

    Tests

    Run tests with pytest:

    pytest -sx --cov=compressai --cov-append --cov-report term-missing tests
    

    Slow tests can be skipped with the -m "not slow" option.

    License

    CompressAI is licensed under the BSD 3-Clause Clear License

    Contributing

    We welcome feedback and contributions. Please open a GitHub issue to report bugs, request enhancements or if you have any questions.

    Before contributing, please read the CONTRIBUTING.md file.

    Authors

    • Jean Bégaint, Fabien Racapé, Simon Feltman and Hyomin Choi, InterDigital AI Lab.

    Citation

    If you use this project, please cite the relevant original publications for the models and datasets, and cite this project as:

    @article{begaint2020compressai,
    	title={CompressAI: a PyTorch library and evaluation platform for end-to-end compression research},
    	author={B{\'e}gaint, Jean and Racap{\'e}, Fabien and Feltman, Simon and Pushparaja, Akshay},
    	year={2020},
    	journal={arXiv preprint arXiv:2011.03029},
    }
    

    For any work related to the variable bitrate models, please cite

    @article{kamisli2024dcc_vbrlic,
    	title={Variable-Rate Learned Image Compression with Multi-Objective Optimization and Quantization-Reconstruction Offsets},
    	author={Kamisli, Fatih and Racap{\'e}, Fabien and Choi, Hyomin},
    	year={2024},
    	booktitle={2024 Data Compression Conference (DCC)},
    	eprint={2402.18930},
    }
    

    Related links