Generation Enhances Understanding in Unified Multimodal Models via Multi-Representation Generation
Paper: arXiv:2601.21406 Code: Sugewud/UniMRG Code reference:
main@bdf671b5(2026-05-25)
1. Motivation (研究动机)
Unified Multimodal Models (UMMs) 的长期目标不是把理解模型和生成模型简单拼在一起,而是让视觉理解与视觉生成形成互相增强的闭环。现有 UMM 已经能在同一框架内处理 VQA、caption、text-to-image、image editing 等任务,但多数 post-training 工作仍沿着“理解增强生成”的方向走:例如 RecA 用 UMM understanding encoder 的语义特征做 reconstruction,使生成质量更好;SRUM 用 UMM 的理解能力给生成图像打分,构造 self-rewarding 训练。反方向——“生成能力是否能反过来增强理解”——在这篇论文之前基本没有被系统验证。
作者观察到一个关键缺口:off-the-shelf UMM 虽然能生成自然图像,却不一定真正掌握图像的几何和结构。Figure 1 中,Harmon-1.5B 在被要求生成 depth / segmentation map 时,输出更像 RGB reconstruction,而不是可用的深度图或结构分割图。这说明模型内部表征可能偏向外观纹理、颜色和粗语义,对相对距离、区域边界、对象分解这些“intrinsic visual representations”约束不足;这也对应常见理解失败,如 spatial reasoning 错误、把不存在的物体 hallucinate 出来、或细粒度属性绑定不稳。
Figure 1 解读:上方展示输入图、ground truth depth / segmentation,以及 baseline 与 post-trained 模型的输出。baseline UMM 把“生成 depth/segmentation”退化成类似 RGB 图像重建,说明它没有把几何距离和区域结构显式编码到可生成表征中;UniMRG 训练后输出更接近 depth / mask,作者据此主张生成内在表征能迫使 UMM 学到对理解有用的几何与结构线索。
这篇论文要解决的具体问题是:在不改 UMM 架构、不增加推理开销的前提下,能否通过 auxiliary generation tasks,让 UMM 在 post-training 中学会生成 pixel、depth、segmentation 三类互补表征,从而提升 visual understanding。这个问题值得研究,因为一旦成立,UMM 的 generation head 就不只是输出图像的工具,而可以成为 dense self-supervision 的接口:pixel 保持外观和生成质量,depth 注入空间几何,segmentation 注入对象边界与结构分解,最终让理解任务受益。
Figure 2 解读:作者用 depth 作为代表性例子说明“会生成什么,就更可能理解什么”。baseline 既生成不了合理 depth map,也答错空间关系问题;经过 image-to-depth post-training 后,模型能生成更连贯的深度图,并在“谁更近”一类问题上给出正确答案。这不是单纯改善生成外观,而是把 depth 任务对应的 relative distance 线索迁移到 downstream VQA。
2. Idea (核心思想)
核心 insight:如果 UMM 被训练去“生成”输入图像的多种内在表征,它就必须在 shared multimodal representation 中保留比 RGB reconstruction 更丰富的几何、结构和外观信息;这些信息正是细粒度感知、空间推理和 hallucination mitigation 所缺的监督信号。UniMRG 的新意不是增加新模块,而是把 pixel reconstruction、image-to-depth、image-to-segmentation 与 image understanding 放进同一个 post-training objective,使 generation 成为增强 understanding 的 dense auxiliary task。
与 RecA / SRUM 等方法的根本区别在方向和目标:RecA 使用 understanding representation 来改善 reconstruction / generation,SRUM 用理解模型给生成结果打分;UniMRG 反过来使用 generation objective 约束 UMM 的视觉理解表征,并且特意选择 depth 与 segmentation 这类超越外观的 intrinsic representations。与 SpatialRGPT / DepthVLA 等使用 depth cue 改善 VLM 的方法相比,UniMRG 不引入额外 depth module 或专用架构,而是在 UMM 自身生成空间内完成 post-training,推理时仍按原模型运行。
3. Method (方法)
3.1 Overall framework:四任务联合 post-training
UniMRG 的整体流程非常直接:给定输入图像,先经过 UMM 的 visual understanding encoder 得到视觉表征 ,然后同时训练四类任务:image reconstruction、image-to-depth、image-to-segmentation、image understanding。对 shared encoder 的处理取决于模型架构:如果 generation 与 understanding 共用 encoder(如 Harmon),则更新该 encoder;如果是 OpenUni 这种 understanding / generation 解耦结构,则冻结 understanding component。VQ-VAE 与 text encoder/decoder 在训练中冻结,其余 UMM 组件可训练。推理阶段不增加任何分支、adapter 或额外计算。
Figure 3 解读:Figure 3 是 UniMRG 的主架构图。左侧同一张输入图进入 visual understanding encoder;右侧四个训练分支分别监督模型生成原图、depth map、segmentation map,以及回答标准 image understanding 问题。关键点是这些任务共享 UMM 的内部视觉表征,因此 depth / segmentation 的 dense target 会反向约束视觉 token 或 hidden states,而不是在外部另接一个深度估计器。
直觉上,pixel reconstruction 保证模型仍能复原外观分布,避免只学 depth / segmentation 时生成分布偏离自然图像;depth generation 迫使模型编码前后、远近、遮挡等几何关系;segmentation generation 迫使模型编码对象边界、区域分割和 object-centric structure。三者与 understanding loss 共同训练后,模型在 VQA 中遇到“哪个物体更近”“图中是否有某物”“颜色/属性是否绑定到正确对象”等问题时,有更强的内部证据。
3.2 Multi-task objective
论文用 表示 UMM, 表示输入图像经 UMM understanding encoder 抽取出的 visual embedding, 表示任务损失。理解任务使用 cross-entropy;生成任务则按 UMM 的 generation paradigm 选择 diffusion loss 或 autoregressive cross-entropy。四项损失为: 其中 类似 “Generate original image for the input image”, 是原图; 类似 “Generate depth map for the input image”, 由 Depth Anything V2 预处理得到; 类似 “Generate segmentation map for the input image”, 由 Segment Anything automatic mask generator 得到。总目标为: $ \begin{aligned} \mathcal{L}{\text{total}} =;& \lambda{\text{pixel}} \mathcal{L}_{\text{pixel}}
- \lambda_{\text{depth}} \mathcal{L}_{\text{depth}}
- \lambda_{\text{seg}} \mathcal{L}{\text{seg}} \
&+ \lambda{\text{und}} \mathcal{L}_{\text{und}}.
\end{aligned}
\lambda$ 都为 1。released code 在
Harmon/configs/examples/UniMRG.py中也设置loss_weights={'image2text':1.0,'depth':1.0,'recon':1.0,'mask':1.0},与公式一致。
3.3 三类 auxiliary representation 的作用分工
Pixel reconstruction:维持生成分布与外观建模
Pixel branch 的目标是重建输入图像。它本身未必显著提升 understanding,但在 ablation 中非常关键:只有 understanding SFT 会让 Harmon 的 GenEval 从 71.37 掉到 0.30、DPG 从 80.52 掉到 2.85;加入 pixel generation 后 GenEval 回到 83.86、DPG 达到 86.61。作者的解释是,depth / segmentation 本身会把生成分布拉向灰度图或 mask 图,如果没有 pixel reconstruction 维持 natural image distribution,UMM 的图像生成质量会崩。
Depth generation:显式注入 geometry / spatial relation
Depth branch 使用 Depth Anything V2 生成 monocular depth target。Appendix B 说明使用 ViT-Large encoder,输入先用 cubic interpolation resize 到 ,推理后用 bilinear interpolation resize 回原图分辨率,并做 min-max normalization:
训练 pipeline 为了兼容 RGB 图像处理,会把单通道 grayscale depth map 复制成三通道图像。released Harmon dataset class LLaVADepthDataset 进一步在训练时把 depth target resize 到 image_size=512,归一化到 ,并重复成 3-channel tensor。这个分支直接监督模型学习 relative distance、前后关系和空间布局,因此在 VSR / RWQA 一类 spatial understanding 指标上提升明显。
Segmentation generation:显式注入 object boundary / region partition
Segmentation branch 使用 SAM ViT-H 的 automatic mask generator。Appendix B 指出它用 个均匀 grid point prompts,predicted IoU threshold 为 0.88,stability score threshold 为 0.95,并用 box IoU threshold 0.7 做 NMS 去重;得到有效 mask 后,将 mask boundaries 设为白色、背景设为黑色,再转为三通道图像。released LLaVAMaskDataset 使用 NEAREST resize 保留硬边界,并把 mask 归一化到 。这个分支给模型 object-centric structural prior,有助于减少 hallucination 和错误属性绑定。
3.4 Prompt policy 与数据构造
为避免模型过拟合固定 prompt,UniMRG 对 depth / segmentation 使用多种等价 prompt。论文给出的 depth prompt 包括 “Generate the depth map of this image.”、“Produce a depth estimation for this image.”、“Generate per-pixel depth values.” 等;segmentation prompt 包括 “Generate the segmentation mask of this image.”、“Segment this image into different regions.”、“Generate automatic masks for all objects.” 等。released code 中 LLaVADepthDataset._process_text 和 LLaVAMaskDataset._process_text 也会随机采样 prompt,并在 token 序列第 4 个位置插入 IMAGE_TOKEN_INDEX=-200 作为 source image placeholder。
Released repo 的 README 提供 LLaVA-Instruct-150K-UniMRG 预处理数据,期望目录包含 llava_v1_5_mix665k.json、tuning_data、tuning_data_depth、tuning_data_mask。如果自行构造,先下载 LLaVA dataset,再用 Depth-Anything-V2 生成 depth maps,用 Segment Anything 的 run_mask.py 生成 masks。
3.5 Released Harmon 实现中的训练流
论文覆盖 Show-o、Harmon、OpenUni 三种 UMM paradigm;公开仓库主要给出 Harmon 版本训练实现。Harmon/configs/datasets/qwen2_5_1_5b/UniMRG.py 构造四个 dataset:LLaVADataset、LLaVADepthDataset、LLaVAReconstructionDataset、LLaVAMaskDataset,再用 ConcatDataset 合并,group_keys=['image2text','depth','recon','mask'],repeat=[1,1,1,1],每任务 batch_size 为 16。CollateConcat 根据 sample 的 type 调度到 understanding / edit / generation collator。HarmonDev.compute_loss 则按 key 分别调用 image2text_loss、recon_loss 或 edit_loss,其中 depth 与 mask 都复用 edit_loss(source_image -> target_image)。
论文公式与 released code 实现差异:论文 Appendix B 写 Harmon 训练 4,000 steps;released Harmon/configs/examples/UniMRG.py 在 main@bdf671b5 中设置 max_iters=10000。论文实验设置应以 Appendix B 的 4,000 steps 报告,代码复现当前 HEAD 时则需要注意该 config 覆盖值。另一个实现层差异是论文统一写作 ,而 Harmon code 中 segmentation branch 的 dataset type 是 mask,并通过 edit_loss 实现;语义一致,但代码路径名称不是 seg_loss。
3.6 PyTorch-style pseudocode(基于 released code)
Depth / segmentation target dataset
class IntrinsicMapDataset(torch.utils.data.Dataset):
def __init__(self, json_path, image_folder, target_folder, tokenizer,
prompt_template, image_size=512, task="depth"):
self.items = [x["image"] for x in json.load(open(json_path)) if "image" in x]
self.image_folder = image_folder
self.target_folder = target_folder
self.tokenizer = tokenizer
self.prompt_template = prompt_template
self.image_size = image_size
self.task = task
def _image_to_tensor(self, image, nearest=False):
image = image.resize((max(image.size), max(image.size)))
resample = Image.NEAREST if nearest else Image.BILINEAR
image = image.resize((self.image_size, self.image_size), resample=resample)
x = torch.from_numpy(np.asarray(image).astype("float32")) / 255.0
x = 2.0 * x - 1.0
if x.ndim == 2:
x = x[:, :, None].repeat(3, axis=2)
return rearrange(x, "h w c -> c h w")
def __getitem__(self, idx):
image_name = self.items[idx]
rgb = Image.open(os.path.join(self.image_folder, image_name)).convert("RGB")
target = Image.open(resolve_same_stem(self.target_folder, image_name))
prompt = random.choice(depth_prompts if self.task == "depth" else mask_prompts)
input_ids = self.tokenizer.encode(
self.prompt_template["INSTRUCTION"].format(input="\n" + prompt),
add_special_tokens=True,
return_tensors="pt",
)[0]
input_ids = torch.cat([input_ids[:3], torch.tensor([-200]), input_ids[3:]], dim=0)
return {
"source_pixel_values": self._image_to_tensor(rgb),
"pixel_values": self._image_to_tensor(target, nearest=(self.task == "mask")),
"input_ids": input_ids[:128],
"type": self.task,
}Pixel reconstruction branch
class ReconstructionDataset(torch.utils.data.Dataset):
def __getitem__(self, idx):
image = Image.open(os.path.join(self.image_folder, self.items[idx])).convert("RGB")
prompt = random.choice(reconstruction_prompts_from_reca)
input_ids = encode_with_image_placeholder(prompt, image_token_index=-200)
return {
"pixel_values": normalize_to_minus_one_one(image, size=self.image_size),
"input_ids": input_ids[:128],
"type": "recon",
}Harmon multi-task loss dispatch
class HarmonDev(nn.Module):
def compute_loss(self, data_dict):
losses = {}
for task_name, batch in data_dict.items():
if "image2text" in task_name:
loss = self.image2text_loss(batch)
losses[f"loss_{task_name}"] = loss * self.loss_weights["image2text"]
elif "recon" in task_name:
loss = self.recon_loss(batch)
losses[f"loss_{task_name}"] = loss * self.loss_weights["recon"]
elif "depth" in task_name:
loss = self.edit_loss(batch) # source RGB -> target depth map
losses[f"loss_{task_name}"] = loss * self.loss_weights.get("depth", 1.0)
elif "mask" in task_name:
loss = self.edit_loss(batch) # source RGB -> target SAM mask
losses[f"loss_{task_name}"] = loss * self.loss_weights.get("mask", 1.0)
else:
raise NotImplementedError(task_name)
return lossesSource-conditioned edit loss for depth / mask
def edit_loss(model, batch):
source = batch["source_pixel_values"].to(model.device, dtype=model.dtype)
target = batch["pixel_values"].to(model.device, dtype=model.dtype)
source_latent = model.encode(source) # condition image
target_latent = model.encode(target) # generated target
target_tokens = target_latent.flatten(1, 2).detach()
_, source_features = model.extract_visual_feature(source_latent)
source_features = scale_gradient(source_features, model.grad_scale)
input_ids = expand_image_placeholder(batch["input_ids"], source_features.shape[1])
inputs_embeds = fill_image_placeholders(input_ids, source_features, model.llm)
orders = model.mar.sample_orders(bsz=target_latent.shape[0], seq_len=target_tokens.shape[1])
mask = model.mar.random_masking(target_tokens, orders)
enc = model.forward_mae_encoder(
target_latent, mask, inputs_embeds=inputs_embeds,
input_ids=None, attention_mask=batch["attention_mask"],
)
dec = model.mar.forward_mae_decoder(enc, mask, image_shape=target_latent.shape[1:3])
return model.mar.forward_loss(z=dec, target=target_tokens, mask=mask)3.7 Code-to-paper mapping
Code reference:
main@bdf671b5(2026-05-25) — pseudocode and mapping based on this commit
| Paper Concept | Source File | Key Class/Function |
|---|---|---|
| Four-task UniMRG objective with equal weights | Harmon/configs/examples/UniMRG.py | model.update(... loss_weights=...) |
| Four datasets: understanding / depth / reconstruction / mask | Harmon/configs/datasets/qwen2_5_1_5b/UniMRG.py | sft_dataset, depth_dataset, recon_dataset, mask_dataset, ConcatDataset |
| Depth auxiliary generation target | Harmon/src/datasets/text2image/text2image.py | LLaVADepthDataset |
| Pixel reconstruction auxiliary target | Harmon/src/datasets/text2image/text2image.py | LLaVAReconstructionDataset |
| Segmentation auxiliary generation target | Harmon/src/datasets/text2image/text2image.py | LLaVAMaskDataset |
| Multi-source batch dispatch | Harmon/src/datasets/collate_functions.py | CollateConcat, collate_func_und, collate_func_edit, collate_func_gen |
| Harmon model loss implementation | Harmon/src/models/harmon_dev.py | HarmonDev.compute_loss, image2text_loss, recon_loss, edit_loss |
| Public training entry point | Harmon/train.sh and Harmon/scripts/train.py | torchrun ... scripts/train.py configs/examples/UniMRG.py --deepspeed deepspeed_zero2 |
| Depth preprocessing recipe | README.md | Depth-Anything-V2 run.py --encoder vitl ... --pred-only |
| Segmentation preprocessing recipe | segment-anything/run_mask.py, README.md | SAM ViT-H automatic mask generation |
4. Experimental Setup (实验设置)
4.1 Models / architectures
作者验证三类 UMM generation paradigms:
- AR: Show-o-1.3B:统一 Transformer,使用 VQ-VAE 离散 image tokens,生成 图像;实验使用 CLIP variant。Show-o 的 VQ codebook 只有 4,096 tokens,后文讨论认为这是它收益较小的瓶颈。
- AR+MAR: Harmon-1.5B:共享 Masked Autoregressive (MAR) encoder 做视觉生成与理解,生成 图像;MAR 通过 mask-and-reconstruct 学语义表征。
- AR+Diffusion: OpenUni-3.6B:遵循 MetaQueries 架构,冻结 multimodal LLM(InternVL3-2B)并连接 diffusion generator(SANA-1.6B),通过 learnable queries 与 lightweight transformer connector 生成 图像。
4.2 Datasets and scales
训练使用的 image understanding datasets 是 LLaVA Mix-665K(约 665K 指令样本)和 LLaVA-Next-Data(论文未详细说明样本数)。released Harmon 配置与 README 对应的可复现数据路径是 data/LLaVA-Instruct-150K/llava_v1_5_mix665k.json、tuning_data、tuning_data_depth、tuning_data_mask;README 同时提供预处理版本 LLaVA-Instruct-150K-UniMRG,用于直接获得原图、Depth-Anything-V2 depth maps 和 SAM masks。如果自行构造,先下载 LLaVA dataset,再用 Depth-Anything-V2 生成 depth maps,用 Segment Anything 的 run_mask.py 生成 masks。
4.3 Baselines and metrics
对 UMM post-training,主要比较 Base、SFT(只用 visual understanding loss)、RecA(用 semantic feature 做 reconstruction)与 UniMRG。SOTA comparison 还包括 understanding-only 模型 LLaVA-OV、InternVL3、Qwen2.5-VL、Qwen3-VL、Emu3-Chat,以及 unified 模型 Chameleon、Janus、Janus-Pro、Harmon、Show-o、BAGEL、UniLIP、OpenUni。
评价指标分两类:generation 使用 GenEval 与 DPGBench;understanding 使用 MMBench English dev(general understanding)、MMVP(fine-grained perception)、HallusionBench(hallucination)、RealWorldQA / RWQA 和 Visual Spatial Reasoning / VSR(spatial understanding)。所有 understanding evaluations 通过 VLMEvalKit 完成。
4.4 Training configuration
论文 Appendix B 给出的训练设置如下:实验在 8 NVIDIA H20 GPUs 上进行;Harmon 使用 AdamW、learning rate ,batch size 为每任务 16(四任务合计每 GPU 64),gradient accumulation 为 4,训练 4,000 steps,约 5 小时;OpenUni 使用 AdamW、learning rate ,每任务 batch size 4(合计每 GPU 16),gradient accumulation 4,训练 2,000 steps,随后冻结 understanding component 再做 3,000 steps pixel representation generation training,整体约 3 小时;Show-o 使用 AdamW、learning rate ,每任务 batch size 2(合计每 GPU 8),gradient accumulation 5,训练 2,500 steps,约 8 小时。
Released Harmon config 的实际覆盖值为:Harmon/configs/datasets/qwen2_5_1_5b/UniMRG.py 设置 image_size=512、repeat=[1,1,1,1]、batch_size=16;Harmon/configs/examples/UniMRG.py 设置 AdamW、lr=1e-5、betas=(0.9,0.95)、weight_decay=0.02、max_norm=1.0、warmup_ratio=0.01、save_steps=500、accumulative_counts=sum(repeat)=4、dtype='bfloat16';Harmon/train.sh 默认 GPUS=8,用 torchrun 启动 scripts/train.py configs/examples/UniMRG.py --launcher pytorch --deepspeed deepspeed_zero2。
5. Experimental Results (实验结果)
5.1 Main UMM post-training results
Table 1 的核心结论是:SFT 单独优化 understanding 会破坏 generation,RecA 主要改善 generation 但不稳定提升 understanding,UniMRG 同时改善两边。Harmon 上 UniMRG 相对 base 的 gain 是 MMBench +1.80、MMVP +2.67、Hallusion +2.63、RWQA +5.23、VSR +0.33、GenEval +13.89、DPG +4.75。OpenUni 上最明显的是 MMVP +3.00、Hallusion +3.68、VSR +7.21,同时 GenEval +6.87、DPG +2.37。Show-o gain 较小但仍为正,作者后面归因于 4,096-token VQ codebook 的 representation bottleneck。
| Model | Method | MMBench | MMVP | Hallusion | RWQA | VSR | GenEval | DPG |
|---|---|---|---|---|---|---|---|---|
| Harmon-1.5B | Base | 50.43 | 60.00 | 46.69 | 46.67 | 60.88 | 71.37 | 80.52 |
| Harmon-1.5B | SFT | 50.43 | 60.00 | 47.95 | 50.20 | 60.88 | 0.30 | 2.85 |
| Harmon-1.5B | RecA | 49.50 | 61.00 | 47.11 | 49.54 | 59.00 | 83.86 | 86.61 |
| Harmon-1.5B | UniMRG | 52.23 | 62.67 | 49.32 | 51.90 | 61.21 | 85.26 | 85.27 |
| OpenUni-3.6B | Base | 81.19 | 71.67 | 60.88 | 65.23 | 66.69 | 61.13 | 79.41 |
| OpenUni-3.6B | SFT | 79.81 | 73.33 | 64.25 | 63.14 | 72.18 | 46.03 | 70.24 |
| OpenUni-3.6B | RecA | 81.19 | 71.67 | 60.88 | 65.23 | 66.69 | 70.07 | 81.54 |
| OpenUni-3.6B | UniMRG | 81.44 | 74.67 | 64.56 | 66.01 | 73.90 | 68.00 | 81.78 |
| Show-o-1.3B | Base | 47.85 | 50.00 | 46.06 | 38.17 | 54.26 | 67.32 | 81.94 |
| Show-o-1.3B | SFT | 48.02 | 50.67 | 45.85 | 37.65 | 51.55 | 67.09 | 81.98 |
| Show-o-1.3B | RecA | 47.42 | 47.33 | 46.69 | 36.21 | 52.70 | 71.52 | 84.44 |
| Show-o-1.3B | UniMRG | 48.11 | 51.33 | 47.00 | 39.87 | 54.42 | 71.40 | 84.55 |
5.2 SOTA understanding comparison
在 Table 2 中,作者把 OpenUni+UniMRG 和类似规模的 understanding-only / unified 模型比较。UniMRG 的 LLM Params 记为 2B,在 MMVP、Hallusion、RWQA、VSR 上都达到表中最高:MMVP 74.67,高于 UniLIP 73.00、Qwen3-VL 72.00、InternVL3/OpenUni 71.67;Hallusion 64.56,高于 60.88;RWQA 66.01,高于 InternVL3/OpenUni 的 65.23;VSR 73.90,高于 Emu3-Chat 71.93 和 Janus-Pro 71.03。MMBench 81.44 也略高于 InternVL3/OpenUni 的 81.19。
| Type | Model | # LLM Params | MMBench | MMVP | Hallusion | RWQA | VSR |
|---|---|---|---|---|---|---|---|
| Und. Only | LLaVA-OV | 0.5B | 55.15 | 53.67 | 51.95 | 46.41 | 51.47 |
| Und. Only | InternVL3 | 2B | 81.19 | 71.67 | 60.88 | 65.23 | 66.69 |
| Und. Only | Qwen2.5-VL | 3B | 78.26 | 64.67 | — | — | — |
| Und. Only | Qwen3-VL | 2B | 77.32 | 72.00 | — | — | — |
| Und. Only | Emu3-Chat | 8B | 64.35 | 67.00 | 52.16 | 56.99 | 71.93 |
| Unified | Chameleon | 7B | 35.70 | 0.00 | — | — | — |
| Unified | Janus | 1.3B | 53.52 | 56.67 | 50.16 | 43.66 | 61.37 |
| Unified | Janus-Pro | 7B | 66.67 | 63.00 | 60.15 | 41.83 | 71.03 |
| Unified | Harmon | 1.5B | 50.43 | 60.00 | 46.69 | 46.67 | 60.88 |
| Unified | Show-o | 1.3B | 47.85 | 50.00 | 46.06 | 38.17 | 54.26 |
| Unified | BAGEL | 3B | 79.20 | 54.70 | — | — | — |
| Unified | UniLIP | 2B | 80.70 | 73.00 | 60.57 | 64.18 | 65.55 |
| Unified | OpenUni | 2B | 81.19 | 71.67 | 60.88 | 65.23 | 66.69 |
| Unified | UniMRG (Ours) | 2B | 81.44 | 74.67 | 64.56 | 66.01 | 73.90 |
5.3 Qualitative generation and understanding
Figure 4a–4b 解读:Figure 4a 展示生成质量,UniMRG 后的 UMM 对多物体、空间关系、复杂属性的 prompt 更忠实;论文例子中 “a photo of a pink skateboard and a black train” 的 baseline 会把 train 颜色混成红黑,UniMRG 能生成黑色 train。Figure 4b 展示理解质量,UniMRG 在 fine-grained perception、hallucination、spatial understanding 例子上更稳;例如“Which is closer?”问题中,depth objective 帮助模型建立相对距离线索;“Is there any yogurt?”问题中,segmentation objective 帮助模型避免把不存在对象 hallucinate 出来。
5.4 Ablation:为什么三种 generation targets 都需要
Table 3 用 Harmon-1.5B 做逐步 ablation。只有 Visual Understanding 时,generation 几乎崩溃;加入 Pixel Generation 后 generation 恢复甚至超过 base,但 understanding 不稳定;加入 Depth Generation 后 MMVP、Hallusion、RWQA、VSR 均提升;加入 Segmentation Generation 后 MMBench、MMVP、Hallusion、RWQA、VSR 达到最佳。作者由此说明:pixel 是维持 natural image generation 的基础,depth / segmentation 才是主要推动 understanding gains 的 intrinsic supervision。
| Method | MMBench | MMVP | Hallusion | RWQA | VSR | GenEval | DPG |
|---|---|---|---|---|---|---|---|
| Harmon-1.5B | 50.43 | 60.00 | 46.69 | 46.67 | 60.88 | 71.37 | 80.52 |
| + Visual Understanding | 50.43 | 60.00 | 47.95 | 50.20 | 60.88 | 0.30 | 2.85 |
| + Pixel Generation | 49.50 | 61.00 | 47.11 | 49.54 | 59.00 | 83.86 | 86.61 |
| + Depth Generation | 50.60 | 62.00 | 48.26 | 50.46 | 60.39 | 85.15 | 84.96 |
| + Segmentation Generation | 52.23 | 62.67 | 49.32 | 51.90 | 61.21 | 85.26 | 85.27 |
Figure 5 解读:这张 qualitative ablation 解释了表格背后的机制。只有 SFT 时生成结果退化成噪声;只加 depth 时,生成分布偏向暗色 depth map,纹理细节丢失;只加 segmentation 时,生成分布偏向 mask / region map;把 pixel 与 depth、segmentation 一起训练后,模型既保留自然图像外观,又能吸收几何和结构监督。
5.5 OOD representation generation and bottleneck analysis
作者在 MidjourneyV6 上随机采样 1,000 张 synthetic images,prompt 模型生成 depth representation,并与 Depth Anything V2 的 target depth map 计算 (越高越好)。UniMRG 让 Harmon 从 0.623 提升到 0.822,让 OpenUni 从 0.617 提升到 0.834,说明 depth generation 能力不是只记住真实图分布,而能泛化到 OOD synthetic images;Show-o 仅从 0.637 到 0.664,提升很小。
Figure 6 解读:Figure 6 把“能否生成 depth map”量化为 。Harmon / OpenUni 的大幅提升支持作者的核心论点:intrinsic representation generation ability 与 understanding gains 相关。Show-o 曲线几乎不动,说明其小 codebook 对多表征生成构成容量瓶颈。
5.6 Representation generation qualitative analysis
Figure 7 解读:Figure 7 展示不同 UMM 在 UniMRG 前后生成 depth / segmentation map 的效果。Harmon 和 OpenUni 训练后能生成语义正确的对象结构,例如第一行中的两个男孩和草地;depth map 中远处天空更黑、近处前景更白,说明模型学到了相对距离。作者也指出这些生成表征与 ground truth 在细节上仍有差距,因为输入经过 visual understanding encoder 后主要保留语义信息。Show-o 在 depth / segmentation 上输出接近纯黑,进一步印证 4,096-token codebook 的表征瓶颈。
5.7 Detailed generation benchmark numbers
Table 4 进一步拆开 GenEval 子项。Harmon 上 UniMRG 的 Overall GenEval 85.26 高于 RecA 83.86,尤其 Counting 72.71、Position 80.42、Color Attribute 71.50 为最佳;OpenUni 上 RecA 的 Overall 70.07 高于 UniMRG 68.00,但 UniMRG 的 DPGBench 81.78 最佳;Show-o 上 RecA 的 Overall 71.52 略高于 UniMRG 71.40,但 UniMRG 的 Single Object 98.85、Counting 67.92、Colors 80.67、Position 38.92、DPGBench 84.55 为最佳或并列最佳。
| Model | Method | Single Obj. | Two Obj. | Counting | Colors | Position | Color Attri. | Overall | DPGBench |
|---|---|---|---|---|---|---|---|---|---|
| Harmon | Base | 99.38 | 86.11 | 66.98 | 83.87 | 45.00 | 46.92 | 71.37 | 80.52 |
| Harmon | SFT | 1.77 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.30 | 2.85 |
| Harmon | RecA | 100.00 | 97.98 | 69.58 | 92.82 | 74.17 | 68.58 | 83.86 | 86.61 |
| Harmon | UniMRG | 99.90 | 97.39 | 72.71 | 89.63 | 80.42 | 71.50 | 85.26 | 85.27 |
| OpenUni | Base | 98.65 | 73.82 | 52.50 | 79.88 | 21.92 | 40.00 | 61.13 | 79.41 |
| OpenUni | SFT | 96.46 | 49.41 | 21.56 | 73.85 | 13.08 | 21.83 | 46.03 | 70.24 |
| OpenUni | RecA | 99.17 | 87.46 | 55.00 | 84.13 | 36.08 | 58.58 | 70.07 | 81.54 |
| OpenUni | UniMRG | 98.96 | 84.01 | 55.94 | 84.04 | 29.42 | 55.67 | 68.00 | 81.78 |
| Show-o | Base | 97.40 | 82.91 | 67.92 | 80.59 | 27.08 | 48.00 | 67.32 | 81.94 |
| Show-o | SFT | 97.81 | 83.50 | 65.73 | 79.52 | 27.58 | 48.42 | 67.09 | 81.98 |
| Show-o | RecA | 98.44 | 90.82 | 67.81 | 80.23 | 36.75 | 55.08 | 71.52 | 84.44 |
| Show-o | UniMRG | 98.85 | 90.07 | 67.92 | 80.67 | 38.92 | 52.00 | 71.40 | 84.55 |
5.8 Limitations and conclusion
作者明确承认本文只探索 depth 与 segmentation 两种 intrinsic representations,更多表征类型留给 future work;此外,当 UMM 的生成表征空间容量受限时,UniMRG 的收益会受到上界约束,Show-o 的 4,096-token VQ codebook 就是例子。还有一个实际复现限制:论文报告了三类 UMM 的训练细节,但 released code 当前主要覆盖 Harmon pipeline,OpenUni / Show-o 的完整训练配置未在仓库中同等展开。
总体结论是:UniMRG 证明了 generation 可以反向增强 understanding。相比只做 understanding SFT 或只用 reconstruction 改善 generation,multi-representation generation 把 appearance、geometry、structure 三种 dense supervision 同时注入 UMM post-training,使模型在 fine-grained perception、hallucination mitigation、spatial understanding 和 generation benchmarks 上同时受益,且推理时不需要额外模块或额外开销。