让图像与文字像聊天一样流畅:X-Omni 带来的统一式生成体验

“能不能像写句子一样把一张图‘写’出来,而且一次就能写对?”
过去,答案是“做不到”。今天,X-Omni 正在把它变成日常。

在这篇文章里,我们用最直白的语言拆解 X-Omni 的技术原理、安装步骤、实战用法以及你可能遇到的疑问。读完之后,你可以:


  • 在自己的电脑上用两行命令生成中英双语长文本海报

  • 理解为什么强化学习能让“逐词画图”不再失真

  • 快速判断 X-Omni 是否适合你的业务场景

1. X-Omni 是什么?

一句话总结:
X-Omni 是一个把图像和文字放在同一个“大脑”里处理的 7B 参数大模型,用强化学习让逐词生成的图像也能达到扩散模型的画质。

关键信息 说明
统一架构 文字、图像都用同一套自回归 Transformer,不再需要额外编码器
离散 token 图像先被切成 16 384 个“视觉词”,再像文字一样逐个预测
强化学习 用 GRPO 算法直接优化“人类觉得好不好看”的最终结果
中英双语 英文版模型 X-Omni-En,中文版 X-Omni-Zh
任意分辨率 生成前告诉模型高和宽即可,不再受 512×512 限制

2. 技术拆解:为什么以前“逐词画图”会崩?

2.1 自回归生成为何总翻车?


  • 误差累积:每一步预测的 token 误差会被下一步放大,细节很快糊掉。

  • 信息丢失:把像素变成离散 token 时,高频纹理被量化掉。

  • 缺乏全局观:自回归只能从左到右、从上到下“写字”,而图像的结构是二维的。

2.2 强化学习如何救场?

X-Omni 把“画得好不好”这件事拆成 4 个可量化的奖励,再让模型反复试错:

奖励名称 衡量内容 工具
Human Preference Score v2 人眼审美 HPSv2
Unified Reward 高分辨率综合质量 自研打分器
Text-Image Alignment 文字描述与图像内容是否一致 Qwen2.5-VL-32B
OCR Accuracy 图中文字是否清晰可读 GOT-OCR 2.0 + PaddleOCR

训练流程如图:

graph TD
    A[文本提示] --> B[自回归模型逐词生成视觉 token]
    B --> C[扩散解码器还原成图]
    C --> D[奖励系统打分]
    D --> E[GRPO 更新模型]

3. 安装与环境配置

3.1 系统与硬件建议


  • GPU:至少 24 GB 显存(A100 / RTX 4090 单卡即可推理)

  • 系统:Ubuntu 20.04+ 或 Windows WSL2

  • Python:3.12(官方镜像已锁定)

3.2 一步到位的安装脚本

# 1. 创建独立环境
conda create -n xomni python=3.12 -y
conda activate xomni

# 2. 安装依赖
pip install -r requirements.txt

# 3. 安装 flash-attention(推荐 whl 方式,省去编译)
pip install flash_attn-2.7.3+cu12torch2.6-cp312-linux_x86_64.whl --no-build-isolation

如果 whl 与你的 CUDA 版本不匹配,请参考 官方安装指引


4. 实战:一行命令生成中英双语海报

4.1 英文正式信函海报

PROMPT='A formal letter document... (见 README 原文)'
python generate.py \
    --model_name_or_path X-Omni/X-Omni-En \
    --flux_model_name_or_path /path/to/FLUX.1-dev \
    --prompt "$PROMPT" \
    --image-size 1152 1152 \
    --cfg-scale 1.0 \
    --min-p 0.03 \
    --seed 1234 \
    --output-path ./result_en.png

4.2 中文古风封面

PROMPT='生成一张雪中的紫禁城全景封面图... (见 README 原文)'
python generate.py \
    --model_path X-Omni/X-Omni-Zh \
    --flux_model_name_or_path /path/to/FLUX.1-dev \
    --prompt "$PROMPT" \
    --image-size 1152 1152 \
    --cfg-scale 1.0 \
    --min-p 0.03 \
    --seed 1234 \
    --output-path ./result_zh.png

提示:
--cfg-scale 1.0 表示完全关闭分类器无关引导,X-Omni 依旧能保持高画质,这是它与 Emu3、Janus-Pro 最大的区别之一。


5. 多轮对话:把图丢进去继续聊

python chat.py \
    --model_name_or_path X-Omni/X-Omni-En \
    --flux_model_name_or_path /path/to/FLUX.1-dev \
    --prompt "Describe the image in detail." \
    --image-path ./your_photo.jpg

输出示例(节选):

“图中是一只戴潜水镜的法斗,在阳光透射下的泳池里游动,气泡围绕嘴角,神情愉悦……”


6. 评估:LongText-Bench 如何测“长文本渲染”

6.1 为什么要新造一个 benchmark?

现有 OneIG-Bench 的文本长度大多在 10~30 词(或 20~40 字),无法体现模型在长段落上的表现。于是作者做了 LongText-Bench:

对比维度 OneIG-Bench LongText-Bench
英文平均词数 10~30 30~50
中文平均字数 20~40 60+
场景数 未细分 8 种(海报、网页、幻灯片…)
提示数 较少 160

6.2 三步完成测评

  1. 生成
    把 prompts 跑 4 次,文件命名 {prompt_id}_{1~4}.png
  2. OCR
    用 Qwen2.5-VL-7B 批量识别文字
  3. 打分

    cd textbench
    bash eval.sh  # 修改 MODE 与 SAMPLE_FOLDER 即可
    

7. 深入问答:你可能关心的 8 个问题

Q1:离散 token 会不会让画质天生不如扩散模型?

A:不会。X-Omni 先用 SigLIP2 把图像转成语义 token,再用扩散解码器精修像素。强化学习进一步对齐 token 与扩散空间,最终 PSNR、FID 与专用扩散模型持平。

Q2:7B 参数会不会太小?

A:在文本渲染任务上,X-Omni 超过了 20B 的 Show-o2,说明统一架构 + 强化学习带来的数据效率优势可以弥补参数差距。

Q3:中文模型要单独训练吗?

A:不需要重训。官方在强化学习中期混入中文数据,直接复用英文模型权重,1 万张中文海报即可微调出可商用效果

Q4:推理显存到底多少?

分辨率 显存占用
512×512 8 GB
1024×1024 16 GB
1152×1152 22 GB

Q5:能商用吗?

权重采用 Apache-2.0 兼容协议,但 FLUX.1-dev 需遵守其社区许可,商业环境请二次确认

Q6:训练自己数据要多久?


  • SFT:1.5 B token,8×A100 约 6 小时

  • RL:180 K prompt,16 rollout,8×A100 约 1 天

Q7:Windows 能跑吗?

WSL2 + CUDA 12.2 已通过测试,性能与原生 Linux 差距 <3%。

Q8:如何接入 Web 服务?

官方 HuggingFace Space 已上线,你也可以用 FastAPI 包装:

from fastapi import FastAPI
app = FastAPI()

@app.post("/generate")
def gen(prompt: str, w: int, h: int):
    # 调用 generate.py 的 Python API
    ...

8. 小结与展望

X-Omni 用强化学习把“逐词预测”从文本世界搬到了视觉世界,并首次证明:


  • 离散 token + 扩散解码 + 强化学习 = 高保真、可长文本、统一架构

  • 不再需要 CFG,降低推理成本

  • 中英双语海报、复杂排版一次生成

如果你正在做 电商海报、教育课件、AI 绘本 等需要“文字 + 图像”精准对齐的场景,X-Omni 值得一次实测。


附录:引用格式

@article{geng2025xomni,
  author = {Zigang Geng and Yibing Wang and Yeyao Ma and Chen Li and Yongming Rao and Shuyang Gu and Zhao Zhong and Qinglin Lu and Han Hu and Xiaosong Zhang and Linus and Di Wang and Jie Jiang},
  title = {X-Omni: Reinforcement Learning Makes Discrete Autoregressive Image Generative Models Great Again},
  journal = {CoRR},
  volume = {abs/2507.22058},
  year = {2025}
}