一句话概括:InsightTok 用两个"局部化、内容感知"的感知损失,专门把文字 和人脸这两类人眼最敏感的区域重建清楚,几乎不增加训练成本,也不改下游生成管线,而且这种提升能直接传递到自回归图像生成。
论文:InsightTok: Improving Text and Face Fidelity in Discrete Tokenization for Autoregressive Image Generation (arXiv:2605.14333,清华 & 微软研究院)。模型与代码已开源:HuggingFace。
一、背景:离散 Tokenizer 为什么总把文字和人脸搞糊?
离散 tokenization(VQ-VAE/VQGAN 那一套)是当下自回归图像生成、以及统一多模态大模型的基石:一张连续图像被编码器映射成下采样后的网格,每个网格向量量化到一个有限码本里的离散 token,再由解码器重建回图像。在 token 空间建模,AR Transformer 就能像处理语言一样"逐 token 生成"图像。
问题在于:16× 的激进空间下采样 + 量化会不可避免地丢掉细粒度结构。而最先崩掉的,恰恰是文字和人脸------文字会糊到不可读,人脸会丢身份特征。这两类内容在认知上又是人最敏感的(心理学研究表明人会不成比例地关注文字和人脸,对其失真极其挑剔),在海报设计、人像生成、身份保持编辑等场景里也最关键。
过去的解法基本是"减小压缩率":把码本做大、或者每张图给更多 token。代价是计算和建模复杂度大涨,而且它本质上并没有"优先保护"关键结构。
InsightTok 的判断是:根因不是码本太小,而是监督信号不对齐。
- 标准的像素重建损失 + LPIPS 是为"通用重建"设计的,对文字可读性 和身份保持并不敏感;
- 文字/人脸往往只占整图很小一块面积,它们的训练信号会被周围的大片背景稀释;
- 结果是:在紧绷的离散瓶颈下,模型几乎没有"选择性压力"去保住这些高价值细节。
二、方法:在标准损失上加两项"内容感知"感知损失
标准 tokenizer 的训练目标是:
L_image = L_rec + β·L_codebook + γ·L_perc + η·L_GAN
即 像素重建 + 码本承诺损失 + (LPIPS)感知损失 + 对抗损失。InsightTok 只是在它之上加了两项:
L_InsightTok = L_image + α₁·L_text + α₂·L_face
2.1 文字感知损失 L_text
- 离线检测 :在 LAION 上用文字检测器(DB)标注出所有文本框
{b_text}; - 配对裁剪:把原图 x 和重建图 x̂ 在同一个框里裁出来,统一 resize 到 32×128 的 banner 形状;
- 特征空间比对 :送进一个预训练的文字识别网络(ABINet 那类),取 5 层中间特征,计算原图区域与重建区域的逐层特征 L2 差异。
直觉很简单:不再比像素,而是比"识别网络眼里这块字像不像同一行字"------这才和可读性对齐。
2.2 人脸感知损失 L_face
- 检测 + 关键点:用人脸检测器(ArcFace 配套)得到人脸框和 5 个关键点(双眼、鼻尖、两嘴角);
- 对齐到模板:用相似变换(缩放+旋转+平移)把人脸 warp 到 112×112 的标准模板,消除姿态/尺度/角度差异;
- 特征空间比对 :把对齐后的原图脸 / 重建脸送进 ResNet50 人脸识别网络,取多层特征算差异。
比的是"识别网络眼里这是不是同一个人",直接对齐身份保真度。
2.3 关键 trick:面积加权聚合
这是全文最值得抄的一个细节。每个区域的损失按 区域面积 / 整图面积 加权:
w_n = Area(b_n) / Area(x)
为什么要降权小区域?因为小文字/小脸天生最难重建、特征误差最大,如果不加权,这些小而难的区域会主导整个优化,把其他区域的通用质量(rFID / PSNR)拖垮。论文消融证实:去掉面积加权,专项指标是上去了,但 rFID/PSNR 明显恶化。面积加权是平衡"专项提升 vs 通用质量"的关键。
2.4 两个工程上的好处
- 几乎零额外开销 :所有检测都在数据预处理阶段离线完成 ,不进训练循环,训练相比 vanilla VQGAN 只增加约 2% 开销;
- 推理零改动:检测/识别网络只在训练用,推理时就是一个普通 VQGAN 的 encode/decode,下游 AR 生成管线完全不用改。
三、实验结果
训练配置 :Tokenizer 426M 参数,下采样 16×,码本 16384,embed dim 256,256² 训练。三阶段:① 标准目标预训练 200k 步 → ② 加 L_text/L_face 训 40k 步 → ③ 冻结 encoder+quantizer,只微调 decoder 40k 步精修。下游 InsightAR 沿用 Janus-Pro 架构(7B MLLM + MLP adapter),只把 tokenizer 换成 InsightTok。
重建(TokBench 基准):
- 相同压缩率下,文字准确率 T-ACC 比次优的 IBQ 高 28.89 个百分点 ,人脸相似度 +0.09;
- 即便对手 Emu3.5-IBQ 用了 131k 的大码本,仍被 16k 码本的 InsightTok 超越;
- 同时 PSNR > 23.6,通用区域质量不掉------专项增强没有牺牲非文字非人脸区域。
自回归生成:
- 人脸(密集人群场景,MagFace 评分)和长文本渲染(T-NED)都在同 token 数的 AR 模型里最优;
- GenEval / DPG 等通用文生图指标与 Janus-Pro 持平------targeted 增强不损害通用生成能力。
几个有意思的消融:
- 只微调解码器收益甚微 (T-ACC 24.15 vs 全模型 40.64)→ 证明增益来自更精细的潜在表示,而非更强的解码器;
- 优于全局监督的 OCR-VQGAN(40.64 vs 28.19)→ 局部化监督比全局监督更有效;
- 在 16k 和 65k 码本上都稳定涨点 → 方法可随瓶颈容量 scale。
四、上手:代码怎么用
InsightTok 就是标准的 VQGAN 自编码接口:
python
# 编码:图像 -> 离散 token
latents, _, [_, _, indices] = vq_model.encode(input_image_tensor)
# 解码:token -> 重建图像
recon_image_tensor = vq_model.decode(latents)
仓库自带一个重建 demo(checkpoint 缺省会自动从 HuggingFace 下载):
bash
python recon_demo.py \
--ckpt_path <model-checkpoint-path> \
--input assets/valset \
--output outputs/recon/all_compares.png \
--image_size 512
需要注意的两个工程细节:输入按 x*2-1 归一化到 [-1,1]、NCHW;重建走的是保宽高比 padding (smart_padding LANCZOS 缩放居中补边 → restore_original 裁回原尺寸),保证任意分辨率输入都能无损还原尺寸。
五、小结与启发
InsightTok 的价值不在于复杂,而在于它指出了一个被长期忽视的方向:tokenizer 的训练监督,可以也应该是"内容感知"的,而不是对所有区域一视同仁地做通用重建。
可以直接借鉴的三点:
- 用任务专用的识别网络做感知损失,比通用 LPIPS 更贴合"可读性 / 身份"这类语义目标;
- 对齐到标准模板再比特征(人脸 warp 到 112²、文字 resize 到 banner),消除几何 nuisance;
- 面积加权防止小而难的区域主导优化------这是让"专项提升"和"通用质量"不打架的关键。
更大的意义是:它把"减小压缩率"之外的另一条路走通了------与其给更多 token,不如把有限 token 花在刀刃上。对做离散表示、统一多模态、文生图渲染文字的同学,都值得一读。
论文:arXiv:2605.14333 | 模型:huggingface.co/yueyang2000/InsightTok