芥象(Img-ZIP)图像超压缩模型
⚠️ 重要提示:
由于本模型的任务类型特殊(特征压缩表征),不支持ModelScope Pipeline调用。
请通过官方库进行调用:`pip install xiaothink`
模型描述
芥象(Img-ZIP)是基于深度学习的分块式图像超压缩模型,可将任意分辨率图像智能分割为80×80区块,将每块像素压缩为固定长度的整数序列(范围:-40~40)。在保持重建质量(PSNR>=30dB)的前提下:
对于100维版本:
- 基础压缩率:约1%(100维整数版本)
- 7z二次压缩后:可达0.41%(100维版本)
- 极限压缩率:16维版本压缩率≈0.15%(色彩还原能力减弱)
技术本质:将视觉信息转换为为离散符号表征,实现"芥子纳须弥"级压缩效果
模型测评结果
** 经过测试,JPG与WEBP压缩算法经过7z二次压缩后文件无法再次缩小,所以对比中不添加 JPG+7z与WEBP+7z **

模型命名规范
best_{结构版本}_{压缩出的数值个数}c.keras
- 版本说明:
pro2/pro2.1/pro2.2:漫画优化(9万张漫画训练)pro2.2_all:通用优化(9万张漫画预训练+7k真实图像微调)
- 数值个数:
- 每80×80×3区块输出的整数数量
- 值↑ → 质量↑ → 压缩率↓
可用模型列表
| 模型文件 | 区块维度 | 适用领域 | 特性 |
|---|---|---|---|
best_pro2.2_16c.keras |
16维 | 极低网络的黑白图像传输 | 极限压缩,输出接近黑白图像 |
best_pro2.2_36c.keras |
36维 | 粗略漫画/简单图像的传输 | 平衡压缩率与质量 |
best_pro2.2_100c.keras |
100维 | 漫画/插画的较高质量传输和用于微调纯语言模型添加视觉能力 | 相对较高保真漫画还原 |
best_pro2.2_all_100c.keras |
100维 | 通用图像的传输和用于微调纯语言模型添加视觉能力 | 真实场景色彩增强 |
best_pro2_64c.keras |
64维 | 漫画 | Pro2架构基础版 |
best_pro2_96c.keras |
96维 | 漫画 | Pro2架构高质量版 |
色彩还原能力:
pro2.2_all_100c>pro2.2_100c>pro2_96c
使用限制
- 仅支持Xiaothink库调用(不兼容Transformers/HuggingFace)
- 输出为整数数组(无Token映射接口)
- 二次压缩需手动进行:
.npy → .7z
调用方法
1. 基础图像压缩
# 注意,ImgZip的位置为:xiaothink.llm.img_zip.img_zip
from xiaothink.llm.img_zip.img_zip import ImgZip
# 初始化(选择100维通用版)
model = ImgZip(model_path="best_pro2.2_all_100c.keras")
# 兼容的旧版接口:压缩图像(自动分块)
compressed = model.compress_image(
img_path="input.jpg",
save_path="compressed_data" # 生成.npy+.shape
)
# 新版接口:压缩图像
compressed = model.compress_image(
img_path='input.jpg',
patch=True, # 是否使用分块处理
save_path='result/compressed_img' # 保存路径前缀(如果不传入该参数则默认直接返回压缩结果)
ability=0.02,# v1.2.5新特性:设置自定义压缩率为0.02(当ability为0时代表不使用自定义压缩率),算法将计算并压缩至接近的大小(理论计算与实际大小存在误差)
)
# 解压图像
model.decompress_image(
compressed_input="compressed_data",
save_path="restored.jpg"
)
2. 赋能纯文本LLM实现思路(伪代码)
# 步骤1:压缩图像问答数据集
qa_pairs = []
for img_path, answer in dataset:
# 获取整数数组 [a1, a2, ..., a100]
tokens = model.compress_image(img_path)
qa_pairs.append(f"IMAGE[{','.join(map(str, tokens))}] {answer}")
# 步骤2:映射为唯一Token(示例)
token_mapping = {f"IMG{i}": i for i in range(-40, 41)}
for tokens in qa_pairs:
# 将数字序列替换为映射Token
processed = re.sub(r"-?\d+", lambda m: token_mapping[int(float(m.group()))], tokens)
# 步骤3:微调文本LLM
train_llm_on_custom_dataset(processed_data)
3. 视频流压缩(即将停止支持)
# 压缩视频(1分钟1080P→约3MB)
model.compress_video(
video_path="input.mp4",
output_dir="compressed_video"
)
# 解压视频(保留原分辨率/帧率)
model.decompress_video(
compressed_dir="compressed_video",
output_path="restored.mp4"
)
最佳实践指南
| 场景 | 推荐模型 | 预期效果 |
|---|---|---|
| 边缘设备传输 | pro2.2_36c |
压缩为极少数据 |
| 多模态扩展 | pro2.2_all_100c |
最佳色彩还原 |
| 漫画资源库 | pro2_96c |
原画级细节 |
| 安防监控 | pro2.2_all_100c且较高自定义压缩率 |
人脸/车牌可识别 |
补充
- 压缩率计算方法:
原始体积 = 80*80*3 = 19,200字节 100维压缩 = 100*4 = 400字节(32位整型) → 压缩率 = 400/19200 ≈ 2.08% → +7z压缩 → 可达0.41%
- 色彩警告:
- 16维版本≈黑白
- 36维以上基本支持全彩
注:"芥象"名称取自佛典"芥子纳须弥",喻小数据容大千图像
本算法目前存在 压缩率 和 质量不能自由设定 等缺陷,我们将在未来进一步优化改进。 -> 本算法目前已支持自定义压缩率(xiaothink库1.2.6版本及以上)!