当前位置:网站首页>CompressAI:基于pytorch的图像压缩框架使用
CompressAI:基于pytorch的图像压缩框架使用
2022-07-16 08:34:00 【小夭。】
前言
CompressAI: a PyTorch library and evaluation platform forend-to-end compression research,我的理解是一个基于图像(视频)压缩的API库。他是建立在 PyTorch 之上的,用于基于深度学习的数据压缩的自定义操作、层和模型,其中包括了基于tensorflow.compression压缩包的部分移植,还包括包括一些用于压缩任务的预训练模型。其中可以直接用到的模型来自以下几篇文献:
- bmshj2018-factorized
Ballé J, Laparra V, Simoncelli E P. End-to-end optimized image compression[C]//ICLR 2017 - bmshj2018-hyperprior
Ballé J, Minnen D, Singh S, et al. Variational image compression with a scale hyperprior[C]//ICLR2018 - mbt2018-mean
Ballé J, Toderici G. Joint autoregressive and hierarchical priors for learned image compression[C]//NIPS 2018. - mbt2018
Minnen D, Ballé J, Toderici G. Joint autoregressive and hierarchical priors for learned image compression[C]//NIPS 2018. - cheng2020-anchor
Cheng Z, Sun H, Takeuchi M, et al. Learned Image Compression With Discretized Gaussian Mixture Likelihoods and Attention Modules[C]//CVPR 2020 - cheng2020-attn
Cheng Z, Sun H, Takeuchi M, et al. Learned Image Compression With Discretized Gaussian Mixture Likelihoods and Attention Modules[C]//CVPR 2020
注意: bmshj2018-factorized代码里使用的熵编码方法是Variational image compression with a scale hyperprior提出的全分解方法。官方的tensorflow库里也改了的。
同时提供了与原作者实验对比的测试数据的性能值
并且可以与传统的算法比较效果

相关地址
github:github地址
compressAi简介:简介说明以及使用说明
环境安装
1、pytorch环境
整个项目基于pytorch环境,安装过程可以参考pytorch-gpu版本安装
2、compressai安装
(1)普通版本pip install compressai
(2)开发版本
git clone https://github.com/InterDigitalInc/CompressAI compressai
cd compressai
pip install -U pip && pip install -e .

安装成功进行验证
python
import compressai
这样一来可以直接在对应环境中引入compressai进行调用
import compressai.models as models
1、总览文件结构

这里主要看compressai和example两个文件夹
1、compressai
封装了相关的api,其中models可以看到是封装的模型
2、example
example下包含了一些代码使用的案例,还有train.py
我这里着重看了train.py,包含了我们设置的一些参数以及训练模型的主要流程,调用这个py文件通过命令的方式进行,在命令中设置数据集地址、训练参数等信息,调用此文件进行训练
2、使用方法
1、准备数据集
首先我们要在特定文件夹下放好数据集,根据官方给的地址是/path/to/my/image/dataset/,我们这里采用我们存放数据集的地址,该数据集文件夹下分为了两个部分,一个train,一个test,这部分可以和train.py的代码中看到,根据字符串截取获取了对应数据集的文件
2、通过命令行进行调用train.py
官方给的命令是
python3 examples/train.py -d /path/to/my/image/dataset/ --epochs 300 -lr 1e-4 --batch-size 16 --cuda --save

相关命令说明在代码里有


我们将根据我们需要的命令、数据集地址、调用的模型等参数进行修改
整理训练过程
- 加载训练命令,如上述图片的数据集、 e p o c h epoch epoch、学习率、 p a t c h s i z e patchsize patchsize、随机种子等
- 对数据集图片进行剪裁
分别读取train训练数据集与test测试数据集的图片,剪裁大小 p a t c h s i z e patchsize patchsize初始值是256,train训练集随机剪裁成 p a t c h s i z e ∗ p a t h s i z e patchsize*pathsize patchsize∗pathsize,test测试数据集中心剪裁成 p a t c h s i z e ∗ p a t h s i z e patchsize*pathsize patchsize∗pathsize - 加载剪裁好的两个数据集,以及训练相关数据如 b a t c h s i z e batchsize batchsize等
- 读取需要训练的模型网络、进行优化器的初始设置
- 训练前先判断是否在之前有保存的节点,有则继续训练,无则重新开始
- 对train训练集以及test测试集分别带入优化器进行梯度下降,开始模型训练
- 损失收敛后训练完成,保存模型以及相应的节点
3、更新CDF保证熵编码的正常运行(模型地址与1保持一致)
python -m compressai.utils.update_model --architecture ARCH checkpoint_best_loss.pth.tar
ARCH可换成对应训练的模型如mbt2018
4、评价模型,获取性能值

评估训练模型
python3 -m compressai.utils.eval_model checkpoint /path/to/images/folder/ -a $ARCH -p $MODEL_CHECKPOINT...
评估预训练模型
ython3 -m compressai.utils.eval_model pretrained /path/to/images/folder/ -a $ARCH -q $QUALITY_LEVELS...
具体实例的使用我将再写一篇博客进行记录
边栏推荐
- Finding palindrome prime number in C language
- 面试官:Redis 性能优化都有哪些方法?
- #kubeadm安装Kubernetes 1.15最佳实践#
- ReFi夏季升温:Uniswap v3和绿色资产池在Celo上启动
- Apache stress testing tool AB, with post parameter and token request
- 深度学习中一些注意力机制的介绍以及pytorch代码实现
- 面试秘籍大放送,编测编学独家秘籍遭外泄?!
- Analysis on the necessity and key functions of the construction of video monitoring platform for comprehensive building
- 福赛生物解读2022上半年大气环境变化,VOCs治理依然是破局关键
- 如何利用无常损失从流动资金池中提取价值
猜你喜欢

软件测试面试:请说一下你工作中发现的最有价值的bug?

Chapter3美国大选金献项目数据分析

Principle analysis of Rex engine of osgearth (one, two, eight) Rex engine and layer projection and their relationship

From it R & D staff turnover thought

One of the reasons why deepin wine qq/ wechat Chinese is displayed as a box

【前缀和和差分】
![[training Day2] cinema ticket [combinatorics] [Cartland number]](/img/39/a87cef4d6dc1b393b78f7fa4f71be1.png)
[training Day2] cinema ticket [combinatorics] [Cartland number]
![[prefix and difference]](/img/5b/ecf1a2ab1aad950d73430cc766b8cd.png)
[prefix and difference]

How to set up domain name resolution?

#kubeadm安装Kubernetes 1.15最佳实践#
随机推荐
如何用断言思路优雅地处理代码异常
启用远程 rsyslog 日志服务
JS calculation accuracy and data format
ReFi夏季升温:Uniswap v3和绿色资产池在Celo上启动
JS Object. keys()
LCA问题专题
A lightweight tracking method based on unique identifier of timestamp
图解数组计算模块NumPy下(三角函数、四舍五入函数(around)、取整、将弧度转化为角度、统计分析函数、中位数、数组的排序、argsort()、lexsort())
使用 tcpkill 阻断指定 TCP 连接的数据包
[live registration] oceanbase in simple terms, issue 7
C language -- the implementation of common string functions
关于唐医生的一切:真实的中国人工心脏是什么样?
"Detective Conan" 1049 words painting collapse, the role of frequent "face changes"
【直播报名】OceanBase深入浅出第七期
流动性视角中 CeFi 的功与过
使用IDEA搭建WebService服务
分享一个超好用的 轮询 + 定时器管理器
MRP的基本任务是什么
Assist developers to comprehensively interpret APIs IX test cases
#kubeadm安装Kubernetes 1.15最佳实践#