CompressAI benchmark经典/传统图像编码器的使用

本文介绍了如何在GitHub上的CompressAI项目中安装和使用BPG编解码器,包括依赖项(如yasm和SDL)的下载与安装,以及处理编译过程中遇到的numaundefined错误的解决方案。

使用简介

  • CompressAI的github仓库中Usage-Evaluation给出了传统编解码器的使用帮助,但是并未给出详细的使用方法。本文旨在进行总结使用方法。下图是传统编解码器相关代码的存放地点,其中codecs为各种编解码器类的定义模块module,被__main__调用。
    传统编解码器相关代码的存放地点
  • 各个编解码器的输入参数的要求在codecs中可以找到,数据集路径参数是必须的。
# 要注意的是
# 在通过python -m script运行脚本的时候,不需要加上后缀
python -m __main__ jpeg
  • 在跑.bpg的时候,你会发现需要自己显式给出encoder和decoder的路径。而bpg的linux编解码器需要在这里可以找到,源码的编译须知在README中可以看到需要安装yasm和SDL。
  • 在安装的时候有个需要注意的地方,如果你和我一样是通过登录用户的方式连接服务器,那么在进行如下python包安装的时候需要在自己的用户目录下安装,而不是对所有用户生效(权限不够)。

安装依赖

常见的图像编码器和解码器有多种类型。在引用中涉及到了一些编码器和解码器相关内容。 从编码器角度来看,有用于编码器 - 解码器框架的编码器,其输出的编码向量会被解码器接收作为初始隐状态输入,以传递输入序列的信息,不过未提及具体编码类型 [^1]。还有AnatoMask的分层图像编码器,用于处理CT图像,先将输入的CT图像划分为16×16×16的图像块,再进行随机掩码,之后用STU - Net处理图像,在STU - Net中使用稀疏子流形卷积来处理这些图像块 [^4]。另外,CompressAI benchmark中涉及经典/传统图像编码器,如编解码器类在codecs模块定义,被__main__调用,有jpeg、bpg等不同类型的编码器 [^3]。 从解码器角度,编码器 - 解码器框架中的解码器用于生成目标序列,一般通过RNN或Transformer实现,会逐步生成序列元素,在训练和推理阶段输入不同,且常使用注意力机制获取相关输入信息,还需要设计几个组件 [^1]。AnatoMask的分层图像编码器对应的是分层解码器,用于将经过处理变小的图像块重新放大,恢复到原来的大小或者中间的大小 [^4]。CompressAI benchmark中涉及与编码器对应的解码器,像bpg编解码器需要显式给出encoder和decoder的路径 [^3]。 此外,还提到了掩码解码器,在解耦蒸馏产生轻量级图像编码器后,可选择在冻结的轻量级图像编码器上微调掩模解码器或者将它们联合微调 [^2]。 ```python # 这里只是简单示意代码结构,并非完整可运行代码 # 以模拟编码器 - 解码器框架 class Encoder: def __init__(self): pass def encode(self, input_data): # 编码逻辑 return encoded_data class Decoder: def __init__(self): pass def decode(self, encoded_data): # 解码逻辑 return decoded_data encoder = Encoder() decoded = encoder.encode(input_data) decoder = Decoder() output = decoder.decode(decoded) ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值