用'底稿线'让 AI 画出准确的文字与数字
文章摘要
Sam Collins 介绍了一个非常简单但出奇有效的技巧,专门用来解决目前 AI 图像生成最长情的弱项之一——画不准文字、数字和需要严格几何关系的内容。他把这个技巧叫 “underdrawings”(底稿/打底线),灵感来自传统绘画与建筑制图的工艺:先用尺子画准结构线,再在上面着色与渲染。
具体做法分两层:
第一层是确定性的”底稿”。用 SVG 或代码(任何能精确控制坐标和字符的工具都行)先生成一张技术图:所有文字、数字、关键位置都已经被严格摆放对齐。这张图本身可能很丑——线框 + 黑字 + 白底,但它在”信息层面”是 100% 正确的。
第二层是生成式的”上色”。把这张底稿喂给 Gemini 3.0 Pro 这种支持 image-to-image 的模型,附上一句风格化 prompt(比如”画成日式水墨风的桌游棋盘”),让模型只负责”在这张图上画”,而不是”自己想出整张图”。
作者最有说服力的例子是一个50 步螺旋形棋盘。直接 zero-shot 让任何主流图像模型生成”50 步螺旋桌游棋盘”,得到的几乎全是数字错乱、格子数量不对、空间关系混乱的废图;但只要提供一张准确的 SVG 底稿,模型就能稳定渲染出一张可玩的、数字位置完全正确的成品图。
底层原则被作者总结成一句话:“让确定性机器和生成式机器各做自己擅长的事。” 代码做精确数学和拓扑,扩散模型做画面质感。这看起来很显然,但作者认为令人惊讶的是图像模型本身没把这个流程内化为默认行为——大多数终端产品仍然鼓励用户用纯文本一次成像。
HN 评论精华
-
samcollins(作者本人):在 HN 上简单说明动机——”我自己用得太顺手了,想分享给大家。我有点意外的是图像模型现在还没把这个流程做成默认。”
-
sparuchuri:经典”啊我怎么没想到”反应。”这种 hack 落在’duh, why didn’t I think of that’类别——下次 imagegen 出问题时我就有顺手的工具了。”
-
gwern:一句话精准 tldr 把这个技巧”祛魅”——”这就是标准的 img2img 工作流:先放一个低分辨率/骨架版本,再让模型 upscale/photoreal 化,而不是从纯文本 prompt zero-shot 一切。” 提醒大家这其实是扩散模型早期的标配玩法。
-
nullc:呼应了 gwern。”sketch-guided / inpainting 一直是我用扩散模型的方式。我以为大家都这么用——至少所有不是为了随手糊一张废图的人都这么用。”
-
smusamashah:把方法的”新意”再往下压一层。”这就是 img2img,第一张图碰巧是用代码生成的、结构正确的图。”
-
tracerbulletx:实战派。”我做幻灯片图表很久都是这套流程——发现 HTML 可视化非常稳,然后用扩散模型给它上风格。数据可视化场景下尤其有用。”
-
danpalmer:把这件事拔高到”LLM 能力划分”的方法论层面。”我希望我们能更细地理解 LLM 天生擅长什么、不擅长什么。这跟’让 LLM 写架构却不写函数’、’让 LLM 写 SQL 而不是直接做数据分析’是同一个谱系——结构性任务交确定性系统,渲染/翻译性任务交模型。最理想的是有一个’工作类型分类法’和实证研究。”
-
choeger:补一个理论解释。”Transformer 本质上是优秀的翻译器。所以从结构化输出(SVG)开始,让模型把它’翻译’成像素,这是最自然的工作方式。结构化输入还有一个好处:逻辑错误更容易在那一层被检查/修复。”
-
jeffrallen:希望反方向也能成立——”我希望当我让 Gemini 画一张’X 的示意图’时,它能直接掏出 Python+matplotlib 来画,而不是浪费我的时间扔一张 Nano Banana。” 暴露了用户对”模型自己选择正确工具”的渴望。