ChArtist: Generating Pictorial Charts with Unified Spatial and Subject Control¶
会议: CVPR 2026
论文: CVF Open Access
代码: 项目页 https://chartist-ai.github.io/ (代码未明确开源,⚠️ 以项目页为准)
领域: 扩散模型 / 图像生成
关键词: 象形图表生成, 可控扩散, 骨架表征, 主体驱动生成, 注意力门控
一句话总结¶
ChArtist 把"柱/线/饼"的数据结构抽象成极简的骨架(skeleton)作为空间条件、再叠加参考图的主体(subject)条件,用两个独立 LoRA 分别学这两种控制,并在推理时用空间门控注意力让主体服从于空间结构,从而自动生成既忠于数据又有视觉表现力的象形图表。
研究背景与动机¶
领域现状:象形图表(pictorial chart)把语义图像直接嵌进图表结构里讲数据故事——比如用一串小狗的高低代替柱子、用一朵花的轮廓沿着折线走。它比普通柱状图更抓眼、更易记忆,但目前主要靠设计师手工拼贴或借助半自动作图工具完成,既费力又缺少对"数据是否被画准"的量化评估。
现有痛点:想用现成的可控扩散模型自动生成并不顺手。主流空间控制(ControlNet 的 Canny 边缘、深度图等)是为自然图像设计的稠密像素级条件,它假设条件和生成图之间逐像素对应,于是把图像死死按在轮廓上——这对需要"创造性形变"的象形图表是灾难:内容被挤进硬边界、或者干脆只剩素描感。另一端的稀疏条件(bounding box)又太弱,管不住图表内部的结构。
核心矛盾:象形图表本质上要同时满足两个互相拉扯的要求——数据忠实度(柱高、折线趋势、饼角必须画准)与视觉表现力(图像要自然好看、能融入参考主体)。稠密条件偏向前者牺牲后者,稀疏条件反之。更麻烦的是,当你想同时加"空间约束"和"参考图主体"两路控制时,二者会发生跨条件干扰:主体那一路会扭曲空间结构、或把参考图内容泄漏到背景,直接破坏数据忠实度。
本文目标:做一个端到端的象形图表生成管线,支持两种来自真实设计流程的控制方式——"数据优先"(先定好图表再找合适图像)对应空间控制,"视觉优先"(先选好看的图再变形塞进图表)对应主体控制,两者可独立也可联合使用。
切入角度:与其沿用自然图像的通用条件,不如为图表设计一个任务专属的控制表征。作者观察到图表的信息其实只活在"数据编码维度"上(柱子的高度、折线的走向、饼的角度),其余都是可自由发挥的样式空间。
核心 idea:用只编码数据维度的骨架表征取代稠密轮廓做空间控制,把空间和主体拆成两个独立 LoRA 训练,再用一个免训练的空间门控注意力在推理时强制"主体服从空间",从而在数据忠实与视觉表现之间拿到平衡。
方法详解¶
整体框架¶
ChArtist 建立在预训练的 Diffusion Transformer(FLUX.1-DEV)之上,输入是一张图表骨架 \(S\)(必要时叠加一张参考图 \(R\) 或一段文本),输出是融合了视觉主体、又对齐数据结构的象形图表 \(P\)。整条路分四块:先把图表压成骨架表征当空间条件;再训练两个任务专属 LoRA——\(\text{LoRA}_S\) 负责空间对齐、\(\text{LoRA}_R\) 负责主体注入,两者通过 RoPE 位置策略拼进同一条多模态序列;推理时若要双控,则用空间门控注意力让主体信号被空间掩码调制,避免干扰;而支撑这一切训练的是作者自建的 CHARTIST-30K 三元组数据集与一套数据准确率指标。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["图表 + 参考图/文本"] --> B["骨架数据控制表征<br/>柱→竖线 线→折线 饼→双射线"]
B --> C["双任务 LoRA + RoPE<br/>LoRA_S 空间 / LoRA_R 主体"]
C -->|仅空间| E["象形图表 P"]
C -->|空间+主体| D["空间门控注意力<br/>用骨架掩码调制主体"]
D --> E
F["CHARTIST-30K 数据集<br/>双管线 + 数据准确率指标"] -.训练/评测.-> C
关键设计¶
1. 骨架数据控制表征:只编码数据维度,把样式空间让出来
针对"稠密条件太死、稀疏条件太弱"这个矛盾,作者在控制表征的"复杂度光谱"上找了个甜点:骨架(skeleton)。它的设计原则是只保留图表的主数据编码维度,结构上尽可能极简,从而既忠实编码数据、又给语义/样式注入留足自由度。具体到三类图表,骨架被定义得非常省:柱状图里每根柱子用一条竖线(编码高度),折线图用一条折线追踪趋势,饼图用两条带色的径向线标出每个扇区顺时针的起止角度。和 Canny/深度图相比,骨架不含任何具体物体轮廓,所以生成时模型不会被"原物体形状"绑架,可以把任意参考主体自由地变形塞进这套结构里——这正是象形图表需要的"创造性形变"。
2. 双任务 LoRA + RoPE 统一序列:把空间与主体拆成可独立/联合的两路条件
为了让一个框架同时支持"空间优先"和"视觉优先"两种工作流,作者没有把两种控制混在一起学,而是训练两个任务专属 LoRA。条件图像 token \(C\)(空间用骨架 \(S\)、主体用参考图 \(R\))和文本 token \(T\)、噪声图像 token \(X\) 拼成统一序列 \([T, X, C]\) 送进 DiT:\(T\) 和 \(X\) 走冻结的预训练主干,只有 \(C\) 过可训练的 LoRA 适配器,靠多模态注意力让三类 token 自由交互。两个 LoRA 训练数据不同——\(\text{LoRA}_S\) 学骨架-图表对 \((S, P)\)、\(\text{LoRA}_R\) 学参考-图表对 \((R, P)\);且二者对位置的诉求不同:空间控制必须和潜变量 \(X\) 空间对齐,主体控制则不需要。为统一进同一框架,作者用 RoPE 位置感知策略——骨架 \(S\) 与潜 token \(X\) 共享位置索引(保证逐位对齐),参考图 \(R\) 则在潜空间里整体平移一个偏移 \(\Delta\) 放到 \(X\) 旁边(不抢 \(X\) 的坐标)。这样两路 LoRA 既能单用也能联用,对应不同的语义来源(文本概念 / 参考图外观)。
3. 空间门控注意力:把"并行竞争"改成"串行依赖",让主体服从结构
直接把两个 LoRA 并行合成会引发严重的跨条件干扰,对图表尤其致命,表现为两种失败:要么生成结果不贴骨架(结构错位),要么图表区填对了但参考内容泄漏进背景(风格泄漏)。作者的洞察是:象形图表天然要求主体显式从属于空间约束,于是把推理范式从"并行竞争"换成"串行条件",提出免训练的空间门控注意力。做法分两步。先从空间条件里导出一张空间掩码 \(M\):因为骨架稀疏、不直接编码物体形状,先算骨架 query 与潜 key 的注意力图
其中 \((W_{S\to X})_{i,j}\) 表示潜 token \(j\) 对齐骨架 token \(i\) 的概率;再把骨架图里前景(有色)像素坐标映射到潜序列的 1D token 索引集合 \(I_S\),对这些"数据编码 token"的注意力做聚合得到掩码 \(M = \sum_{i \in I_S}(W_{S\to X})_i\)。然后用 \(M\) 去门控主体注意力——把原始主体注意力 \(W_{X\to R}\) 替换成门控后的
\(\odot\) 是逐元素乘,\(\beta\) 控制背景区域里主体表现的强度,最后再归一化恢复概率分布。直观上:图表区 \(M\) 高、主体注意力保留;非图表区 \(M\) 低、主体注意力被压到 \(\beta\) 倍——\(\beta\) 越小越能把参考内容"按"在图表区里、防止泄漏到背景。整套机制不需要重新训练,纯推理期生效。
4. CHARTIST-30K 数据集与数据准确率指标:用两条管线造三元组、用结构感知 F1 量数据忠实度
微调上述 LoRA 需要 \((S, R, P)\) 三元组,但这种数据现实里没有,作者合成了 3 万条(柱/线/饼各 1 万)。难点是不同图表所需的形变差异极大,于是分两条管线。柱状图走 \((R, S)\to P\)(参考优先):先用 T2I 生成单物体参考 \(R\)、BiRefNet 抠背景拿到精确高度,再把 \(R\) 竖切成 \(K=5\) 个等高网格,按网格两两 SSIM 排出"可编辑优先队列"(高 SSIM=重复纹理,可安全复制/裁剪),据此复制或删格子去匹配 \(S\) 指定的高度,最后过 I2I 精修成无缝象形柱。折线/饼图走反向的 \(S\to P\to R\)(图表优先):因为把规整物体硬掰成曲线是病态问题,作者先用 T2I 生成带重复纹理的背景、拿骨架 \(S\) 当二值掩码裁出图表形状得到初始 \(P\)、再 I2I 补全细节;然后用 diptych(双联画)提示让 inpainting 模型在 \(P\) 右侧补一个"和 \(P\) 外观一致但形状自然独立"的物体反推出参考 \(R\),必要时反复 inpaint 去掉残留的图表特征,两阶段都加人工核验过滤。评测侧作者另设一个结构感知 F1:因为骨架稀疏、IoU 这类指标抓不到结构对齐,他们沿数据编码维度构造距离场、按距离分区采样近似精确率/召回,并按"数据编码类型"加权——折线对靠近轨迹的区域加权、柱状对柱端点加权、饼图对决定角度的径向分割线加权,得到一个能同时反映几何精度与结构完整度的加权分数。
损失函数 / 训练策略¶
沿用 OmniControl 的默认设置,在 CHARTIST-30K 上对 FLUX.1-DEV 做 LoRA 微调;每种图表类型各训两个 rank=16 的 LoRA(空间/主体),分辨率 \(512\times512\),每个任务 25,000 次迭代,2×NVIDIA A100(80GB)。推理时主体抑制因子默认 \(\beta=0.6\)。
实验关键数据¶
主实验¶
评测分两个任务:Task 1 仅空间对齐、Task 2 主体引导(及二者联合)。每类图表每任务生成 500 张评测图,提示词由 ChatGPT 覆盖 30 个大类(植物/动物/建筑/运动等)。
Task 1(仅空间对齐) 对比不同空间控制表征。数据准确率(Data Acc)越高越忠实、CLIP-T 越高越贴合文本语义:
| 方法 | 柱 Data Acc | 柱 CLIP-T | 线 Data Acc | 线 CLIP-T | 饼 Data Acc | 饼 CLIP-T |
|---|---|---|---|---|---|---|
| ControlNet-Canny | 0.741 | 0.249 | 0.819 | 0.227 | 0.725 | 0.136 |
| ControlNet-Depth | 0.686 | 0.243 | 0.858 | 0.243 | 0.626 | 0.158 |
| SDEdit | 0.774 | 0.233 | 0.792 | 0.190 | 0.836 | 0.190 |
| InPainting | 0.923 | 0.231 | 0.754 | 0.179 | 0.794 | 0.217 |
| ChArtist | 0.894 | 0.304 | 0.920 | 0.247 | 0.778 | 0.252 |
ChArtist 在三类图表上的 CLIP-T 全部第一,说明它能把视觉语义画进去又不破坏结构;个别 baseline(如 InPainting 的柱状 Data Acc 0.923)单项更高,但代价是 CLIP-T 极低(图表变成素描感、不贴语义)。
Task 1+2(双控:空间+主体) 对比 ControlNet+IP-Adapter、Paint-by-Example 及先进图像编辑模型(Qwen-Image-Edit / Nano Banana / GPT-Image-1)。DINO、CLIP-I 衡量与参考图的视觉一致性:
| 方法 | 柱 Data Acc | 柱 DINO | 线 Data Acc | 线 DINO | 饼 Data Acc | 饼 DINO | MUSIQ |
|---|---|---|---|---|---|---|---|
| ControlNet-Canny + IP-Adapter | 0.634 | 0.652 | 0.728 | 0.613 | 0.652 | 0.651 | 67.38 |
| Paint-by-Example | 0.912 | 0.586 | 0.513 | 0.429 | 0.420 | 0.495 | 65.37 |
| Qwen-Image-Edit | 0.733 | 0.697 | 0.574 | 0.621 | 0.765 | 0.578 | 63.18 |
| Nano Banana | 0.727 | 0.731 | 0.716 | 0.606 | 0.546 | 0.692 | 65.32 |
| GPT-Image-1 | 0.758 | 0.745 | 0.628 | 0.679 | 0.422 | 0.657 | 67.98 |
| ChArtist | 0.931 | 0.837 | 0.905 | 0.728 | 0.753 | 0.689 | 69.35 |
ChArtist 在数据准确率、视觉一致性、图像质量上几乎全面领先;折线图最明显,Data Acc 0.905 远超次优的 0.728。Paint-by-Example 柱状 Data Acc 0.912 看似高,但 DINO/CLIP-I 偏低,说明它根本没保住参考图风格。
消融实验¶
对折线象形图调主体抑制因子 \(\beta\):
| \(\beta\) | Data Acc | DINO | CLIP-T | 说明 |
|---|---|---|---|---|
| 0.3 | 0.927 | 0.732 | 0.324 | 强抑制:主体被压在图表区,数据最准 |
| 0.6 | 0.876 | 0.748 | 0.349 | 默认折中 |
| 0.9 | 0.729 | 0.775 | 0.337 | 弱抑制:易把参考图背景一起复制进来 |
关键发现¶
- \(\beta\) 直接控制"数据忠实 vs 视觉一致"的权衡:\(\beta\) 越小越压制非图表区注意力、越能防背景泄漏并提升 Data Acc(0.9→0.3 时 Data Acc 0.729→0.927),但视觉一致性(DINO)反向下滑,二者不可兼得。
- 空间门控注意力是双控可用的关键:去掉它并行合成 LoRA 会出现结构错位/风格泄漏(论文 Fig. 5),而它免训练、只在推理生效。
- 300 人在线主观研究里 ChArtist 在数据准确率和语义对齐两项都排第 2,是所有方法里最均衡的——印证它不靠单项极端、而靠平衡取胜。
亮点与洞察¶
- "任务专属表征 > 通用条件"是核心信条:作者明确把骨架放在控制表征的复杂度光谱上论证——稠密(Canny/深度)太死、稀疏(bbox)太弱,图表的甜点是只编码数据维度的极简骨架。这个"为任务定制条件"的思路可迁移到任何"结构刚性 + 样式自由"冲突的生成任务(如字体艺术、二维码隐写)。
- 空间门控注意力把多控制问题转成依赖问题:与其让两路 LoRA 平等竞争,不如用一路(空间)的注意力导出掩码去门控另一路(主体),且全程免训练。这种"用条件 A 的 attention map 当 mask 调制条件 B"的范式很巧,对其他多控制冲突场景有借鉴价值。
- 反向数据管线解病态形变:折线/饼图不直接 warp 物体,而是先按骨架生成象形图、再反推参考物体(\(S\to P\to R\)),巧妙绕开"把花掰成折线"的病态优化。
局限与展望¶
- 三类骨架(竖线/折线/双射线)是手工为柱/线/饼定义的,更复杂图表(散点、雷达、树图)虽被划进两条管线的覆盖范围,但骨架定义和泛化效果论文未给量化结果,⚠️ 跨图表类型的真实泛化能力待验证。
- 数据准确率指标的加权方案依赖人工设定的距离场与权重(按图表类型手调),不同图表的分数不完全可横向比大小。
- 饼图上 ChArtist 并非全面最优(如 Task 1 Data Acc 0.778 低于 SDEdit 的 0.836),角度类编码可能比线性高度类更难控。
- 依赖 FLUX 主干 + 自建合成数据,真实手绘/复杂多系列图表的表现、以及 \(\beta\) 是否需逐图调参,仍是开放问题。
相关工作与启发¶
- vs ControlNet(Canny/Depth): 它用稠密像素条件做强空间约束,逐像素对应导致内容被挤进硬轮廓、语义被推到背景;ChArtist 用只编码数据维度的稀疏骨架,不绑轮廓,给样式形变留空间,CLIP-T 全面更高。
- vs SDEdit / Inpainting: 它们是弱图像条件,容易漂离图表形状或退化成素描;ChArtist 的骨架空间引导明显更强,能稳住结构。
- vs 多控制并行合成(IP-Adapter 等): 并行合成 LoRA 会跨条件干扰、破坏数据忠实;ChArtist 改成串行依赖、用空间门控注意力让主体服从结构。
- vs 图像编辑模型(Qwen-Image-Edit / Nano Banana / GPT-Image-1): 它们视觉一致性不错但难严格遵守结构约束;ChArtist 在数据准确率上显著占优,专为图表的结构刚性而设计。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 把象形图表生成形式化为"骨架空间控制 + 主体控制",并用免训练的空间门控注意力解多控制干扰,表征与机制都是任务专属创新。
- 实验充分度: ⭐⭐⭐⭐ 覆盖三类图表、两任务、多 baseline,含主观研究与 \(\beta\) 消融;但骨架跨更多图表类型的泛化、数据指标的客观性论证略欠。
- 写作质量: ⭐⭐⭐⭐⭐ 动机的"光谱"论证清晰,方法图文对照,失败模式(结构错位/风格泄漏)说明到位。
- 价值: ⭐⭐⭐⭐ 让生成模型自动产出忠实又好看的象形图表,并配套数据集与评测指标,对数据可视化叙事与多控制生成都有实用与方法论价值。