老做 CV 项目的人应该都有同感:以前要做一个“能看懂图还能改图”的自动化流程,得把目标检测、语义分割、图像修复、质量控制好几套模型串在一起,光对齐输入输出格式就够写几百行胶水代码。这两年多模态大模型把视觉理解往前推了一大步,真正常被低估的反而是“空间智能”这四个字——模型不只告诉你图里有什么,还能告诉你目标在哪个位置、哪些区域互相遮挡、哪些地方补全之后才符合物理直觉。这篇文章就把我从 Gemini 空间能力吃到红利的一套实战流程拆开讲:输入一张图,自动完成视觉对象检测,再按自然语言指令做图像修复,最后输出可以在前期方案、内容再创作、老照片老素材翻新这些场景直接用的成品。整个过程尽量做到“一键闭环”,不是 PPT 里的伪需求,是真的能跑起来的代码流程。
如果你是第一次听说 Gemini 能用来做对象检测,或者之前只在聊天框里让 Gemini 读图、没正经调过 API,这篇你按顺序看就能跟下来。我已经把遇到的坑、响应结构、JSON Schema、修复质量提升技巧都踩平了,照着抄作业是最省时间的学法。如果你本来就有用 YOLO、SAM 这类模型做视觉任务的底子,那建议重点看第三、四节:我会讲讲怎么用自然语言把“检测 + 修复”串成一条可信的自动化链路,而不是简单贴一堆官方 Demo。
1. 项目整体设计与思路拆解
1.1 我为什么放下传统视觉模型,改让 Gemini 做视觉前端
之前做视觉对象检测,大家的第一反应都是 YOLO、DETR、Grounding DINO 这一挂。这些模型定位精度确实不错,但凡是遇到两个死结就很头疼:一是只能检测你“预先喂过的类”,新增一个类目就要重新准备数据、重新训练;二是模型只输出方框和类别,完全不懂“框里的东西在其他物体后面只露出一半”“这个物体被阴影遮住了,修掉它之后背景应该是什么样”这类背景物理关系。
Gemini 这类多模态模型走的是另一条路。它最常用的入口是图生文,但往回追一步你会发现,模型在给出描述性文字时内部其实已经建立了一张空间关系图。调用接口时只要把输出格式强制成结构化 JSON,这张“空间关系图”就能被拆成坐标、置信度、遮挡状态、修理建议这些字段。对我这种不想为每个新项目维护一套训练集的人来说,Gemini 相当于把“开放词汇目标检测”和“视觉常识推理”一起打包交付了。
可能有人会问:大模型输出的坐标稳定吗?说实话,早期版本你让它返回边界框,确实偶尔会出现坐标错位、框偏移的毛病。但现在的版本配合设计良好的提示词和 JSON Schema 约束后,用在“找主体、做裁剪、生成修复蒙版”这个粒度上已经非常稳。后面第三节会专门讲坐标偏移问题怎么规避。
1.2 从“检测”到“修复”其实是同一条理解链路
传统做法里,检测和修复是两套彼此独立的流水线。检测只负责出框,修复必须另外有一个蒙版生成模型,把框转成掩码,再做 inpainting。中间任何一步发生坐标映射错误,修复结果就会糊成一团。
Gemini 真正方便的地方在于:检测后的修复意图可以直接用自然语言表达,不需要我再单独建一个图像编辑模型流程。比如检测结果里有一个人形白色塑像,区域有杂乱线缆,想让画面干净一点,检测和修复模型会统一用图像上下文展开推理。也就是说,模型如果“看懂了”前景和背景的遮挡边界,那它修复时补出来的内容就大概率符合常理,不会只拿纯色或纹理去硬填。
这就是我把项目设计成“检测到修复一条提示词链路”的核心原因。先让 Gemini 给出四个信息:目标框、标签、可见度判断、修复建议。再把其中的“修复建议”作为图像编辑阶段的指令传入。这种两段式设计最大的优点是可回溯、可干预。如果模型修复出来的效果不对,我可以随时回看检测阶段的判断,而不是对着一个黑盒流程干瞪眼。
1.3 用“质控循环”逼近好莱坞级修复效果
说句实在话,“好莱坞级”这个目标不是靠某个模型一键点出来的,而是靠一个质量闭环迭代出来的。所谓电影工业级的老片修复或者画面重绘,核心流程从来都是:先分析画面损伤、生成修复意图、局部合成、对比前后结果、不满意再重来。Gemini 能替代的是第一、二步里的语义理解,以及最后一步的“看一眼结果是否有破绽”。
所以我的架构里没有省掉质控模块。每次完成局部修复后,把修复区域抠出来送回给 Gemini,让它从光照一致性、边缘过渡、纹理连续性和物理合理性四个维度打分,低于预期的自动触发重跑。这样整套系统的成功率不是靠单次调参赌运气,而是靠循环次数堆上来的。对内容修复、电商场景去杂物、老照片补全这种“要求高但容错也够跑两三轮”的任务来说,这是性价比非常高的方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与关键选型
2.1 账号分级、API Key 与可用性排查
实战之前先把环境准备好。目前 Gemini 能力分成 Web 端体验和 API 两条路线,两者不建议混淆。做自动化项目肯定走 API,你需要做的是:
- 注册一个可用的 Google 账号,完成开发者后台的项目创建。
- 在 AI Studio 或 Vertex AI 里创建 API Key。免费额度适合调试,一旦要跑批量任务建议绑定正式计费项目,因为额度限制、并发上限都宽裕很多,响应也更稳定。
- 在本地环境安装官方 Python SDK,或者直接用
requests调 HTTP 接口。 - 设置环境变量
GEMINI_API_KEY,不要把密钥硬编码在代码里。
我见过很多人在 Chrome 扩展或 Web 端遇到“Gemini 暂不可用”的提示,就以为是 API 不能用了,其实这是渠道差异化的问题。Web 端的功能是分批放量的,浏览器版本、账号所属区域、功能灰度开关都会影响可见性。API 通道则相对独立,只要项目开通、Key 有效,一般不会跟着 Web 端一起抽风。
另外有个细节需要注意:有些网络教程喜欢让你只依赖免费账号去刷并发请求。实际跑下来你会发现,免费层的账号并发限制非常小,一旦短时间请求频率上去,服务端很容易返回类似“no available accounts”的错误。我建议,如果你要做的是自动化脚本而不是聊天式 Demo,直接跳到有正式项目资源的 API Key,或者走云厂商托管的 Vertex AI 入口,这样能规避很多“账号级限流”引发的诡异报错。关于报错的排查细节,我在第五节统一列了个表格。
2.2 Python 环境和必要依赖
这个项目用到的东西不复杂,核心是 OpenAI 风格的调用方式,再配合 Python 的 Pillow 做图像处理。下面是我本地环境的初始化命令,Python 版本建议 3.10 以上。
bash复制# 创建虚拟环境
python -m venv gemini-vision-env
source gemini-vision-env/bin/activate # Windows 下用 .\gemini-vision-env\Scripts\activate
# 安装依赖
pip install google-genai pillow requests python-dotenv
# 如果你希望修复阶段接开源 Stable Diffusion 系模型,再装下面这个
pip install diffusers transformers accelerate opencv-python
google-genai 是官方统一的 SDK 包,现在最新版已经可以同时处理文本生成、图像理解和图像生成,不用再像以前那样引入好几个不同版本的包。Pillow 用来读取图片、换算坐标、画框和生成蒙版。python-dotenv 单纯是为了方便读取 .env 里的密钥。
很多教程到这里会额外装一大堆深度学习库,但如果你只想在目标检测和修复环节用 Gemini,没必要把本地环境搞得那么重。我的建议是轻装上阵,跑通之后再按需加。
2.3 图像修复数据集能帮上什么忙
做图像修复的朋友大概率会在搜索时碰到“图像修复数据集”这个词。如果你不是要自己从零训练一个 inpainting 模型,那数据集的主要作用是做效果评估和 prompt 压测。平时可以准备 10 到 30 张覆盖不同场景的测试图,比如室内杂乱背景、老照片划痕、街道上的行人、户外线缆和天空交接区域,用来统一评估每次检测和修复的效果。
公开数据集里比较常见的有用于语义修复评估的 Places2,以及 COCO 里带物体实例标注的子集。你可以从这些数据集里抽图片,人为叠加一些遮挡物或随机蒙版,建立一个自己的“验收集”。我自己的项目里专门有个 assets/eval_set 目录,每次换模型版本或改提示词,都会拿同一批测试图跑一遍,这样哪个改动有效、哪个改动是负优化,一眼就能比较出来。
3. 视觉对象检测结构化的完整实现
3.1 用 JSON Schema 把空间智能“掰开揉碎”
要让 Gemini 输出坐标而不是散文,最关键的一步是给它一个严格的结构约束。现在
