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_textLLaVAMaskDataset._process_text 也会随机采样 prompt,并在 token 序列第 4 个位置插入 IMAGE_TOKEN_INDEX=-200 作为 source image placeholder。

Released repo 的 README 提供 LLaVA-Instruct-150K-UniMRG 预处理数据,期望目录包含 llava_v1_5_mix665k.jsontuning_datatuning_data_depthtuning_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:LLaVADatasetLLaVADepthDatasetLLaVAReconstructionDatasetLLaVAMaskDataset,再用 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_lossrecon_lossedit_loss,其中 depth 与 mask 都复用 edit_loss(source_image -> target_image)

论文公式与 released code 实现差异:论文 Appendix B 写 Harmon 训练 4,000 steps;released Harmon/configs/examples/UniMRG.pymain@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 losses

Source-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 ConceptSource FileKey Class/Function
Four-task UniMRG objective with equal weightsHarmon/configs/examples/UniMRG.pymodel.update(... loss_weights=...)
Four datasets: understanding / depth / reconstruction / maskHarmon/configs/datasets/qwen2_5_1_5b/UniMRG.pysft_dataset, depth_dataset, recon_dataset, mask_dataset, ConcatDataset
Depth auxiliary generation targetHarmon/src/datasets/text2image/text2image.pyLLaVADepthDataset
Pixel reconstruction auxiliary targetHarmon/src/datasets/text2image/text2image.pyLLaVAReconstructionDataset
Segmentation auxiliary generation targetHarmon/src/datasets/text2image/text2image.pyLLaVAMaskDataset
Multi-source batch dispatchHarmon/src/datasets/collate_functions.pyCollateConcat, collate_func_und, collate_func_edit, collate_func_gen
Harmon model loss implementationHarmon/src/models/harmon_dev.pyHarmonDev.compute_loss, image2text_loss, recon_loss, edit_loss
Public training entry pointHarmon/train.sh and Harmon/scripts/train.pytorchrun ... scripts/train.py configs/examples/UniMRG.py --deepspeed deepspeed_zero2
Depth preprocessing recipeREADME.mdDepth-Anything-V2 run.py --encoder vitl ... --pred-only
Segmentation preprocessing recipesegment-anything/run_mask.py, README.mdSAM 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.jsontuning_datatuning_data_depthtuning_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,主要比较 BaseSFT(只用 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 使用 GenEvalDPGBench;understanding 使用 MMBench English dev(general understanding)、MMVP(fine-grained perception)、HallusionBench(hallucination)、RealWorldQA / RWQAVisual 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=512repeat=[1,1,1,1]batch_size=16Harmon/configs/examples/UniMRG.py 设置 AdamW、lr=1e-5betas=(0.9,0.95)weight_decay=0.02max_norm=1.0warmup_ratio=0.01save_steps=500accumulative_counts=sum(repeat)=4dtype='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。

ModelMethodMMBenchMMVPHallusionRWQAVSRGenEvalDPG
Harmon-1.5BBase50.4360.0046.6946.6760.8871.3780.52
Harmon-1.5BSFT50.4360.0047.9550.2060.880.302.85
Harmon-1.5BRecA49.5061.0047.1149.5459.0083.8686.61
Harmon-1.5BUniMRG52.2362.6749.3251.9061.2185.2685.27
OpenUni-3.6BBase81.1971.6760.8865.2366.6961.1379.41
OpenUni-3.6BSFT79.8173.3364.2563.1472.1846.0370.24
OpenUni-3.6BRecA81.1971.6760.8865.2366.6970.0781.54
OpenUni-3.6BUniMRG81.4474.6764.5666.0173.9068.0081.78
Show-o-1.3BBase47.8550.0046.0638.1754.2667.3281.94
Show-o-1.3BSFT48.0250.6745.8537.6551.5567.0981.98
Show-o-1.3BRecA47.4247.3346.6936.2152.7071.5284.44
Show-o-1.3BUniMRG48.1151.3347.0039.8754.4271.4084.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。

TypeModel# LLM ParamsMMBenchMMVPHallusionRWQAVSR
Und. OnlyLLaVA-OV0.5B55.1553.6751.9546.4151.47
Und. OnlyInternVL32B81.1971.6760.8865.2366.69
Und. OnlyQwen2.5-VL3B78.2664.67
Und. OnlyQwen3-VL2B77.3272.00
Und. OnlyEmu3-Chat8B64.3567.0052.1656.9971.93
UnifiedChameleon7B35.700.00
UnifiedJanus1.3B53.5256.6750.1643.6661.37
UnifiedJanus-Pro7B66.6763.0060.1541.8371.03
UnifiedHarmon1.5B50.4360.0046.6946.6760.88
UnifiedShow-o1.3B47.8550.0046.0638.1754.26
UnifiedBAGEL3B79.2054.70
UnifiedUniLIP2B80.7073.0060.5764.1865.55
UnifiedOpenUni2B81.1971.6760.8865.2366.69
UnifiedUniMRG (Ours)2B81.4474.6764.5666.0173.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。

MethodMMBenchMMVPHallusionRWQAVSRGenEvalDPG
Harmon-1.5B50.4360.0046.6946.6760.8871.3780.52
+ Visual Understanding50.4360.0047.9550.2060.880.302.85
+ Pixel Generation49.5061.0047.1149.5459.0083.8686.61
+ Depth Generation50.6062.0048.2650.4660.3985.1584.96
+ Segmentation Generation52.2362.6749.3251.9061.2185.2685.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 为最佳或并列最佳。

ModelMethodSingle Obj.Two Obj.CountingColorsPositionColor Attri.OverallDPGBench
HarmonBase99.3886.1166.9883.8745.0046.9271.3780.52
HarmonSFT1.770.000.000.000.000.000.302.85
HarmonRecA100.0097.9869.5892.8274.1768.5883.8686.61
HarmonUniMRG99.9097.3972.7189.6380.4271.5085.2685.27
OpenUniBase98.6573.8252.5079.8821.9240.0061.1379.41
OpenUniSFT96.4649.4121.5673.8513.0821.8346.0370.24
OpenUniRecA99.1787.4655.0084.1336.0858.5870.0781.54
OpenUniUniMRG98.9684.0155.9484.0429.4255.6768.0081.78
Show-oBase97.4082.9167.9280.5927.0848.0067.3281.94
Show-oSFT97.8183.5065.7379.5227.5848.4267.0981.98
Show-oRecA98.4490.8267.8180.2336.7555.0871.5284.44
Show-oUniMRG98.8590.0767.9280.6738.9252.0071.4084.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 上同时受益,且推理时不需要额外模块或额外开销。