小白也能上手:用Stable Diffusion搞定老照片修复(附避坑指南)

小白也能上手:用Stable Diffusion搞定老照片修复(附避坑指南)

小白也能上手:用Stable Diffusion搞定老照片修复(附避坑指南)

小白也能上手:用Stable Diffusion搞定老照片修复(附避坑指南)

友情提示:本文 1.2 万字,代码 30+ 段,阅读时建议左手奶茶右手 GPU,显卡低于 8G 的童鞋先点个外卖,显存和肚子一起满上。

先别急着扔!那几张发霉的老照片还能救

前阵子我奶翻箱倒柜找出一张 1983 年的结婚照,边角霉得跟蘑菇培养皿似的。我拍照发到群里,本来只想卖个惨,结果底下一水儿“AI 修复啊,三分钟搞定”。
我当场翻白眼:三分钟?我装环境就装了三小时!
但骂归骂,真香定律谁也逃不掉。折腾一晚上后,照片居然——能——看——了!我奶以为我偷偷拿去影楼花 500 块,其实成本 0 元,电费 0.3 元,还顺手给爷 P 了条新领带(他原本领带被虫蛀没了)。

如果你也有:

  • 手机拍糊的证件照
  • 游戏截图缺一块 UI
  • 电商产品图背景脏到像锅底

那就继续往下看。我会把“我踩过的坑 + 我奶都能看懂的操作”打包给你,保证不整那些“open the terminal and type…”的鸟语,全程说人话。


为啥偏偏选 Stable Diffusion?免费、开源、还能本地跑

Photoshop 的「内容识别填充」不香吗?香,但:

  1. 正版要钱,盗版得先学会装系统。
  2. 复杂纹理直接糊成油画,手一抖就穿帮。

SD(Stable Diffusion 简称,后文都这么叫)的优势一句话:
“它懂画面逻辑,而不是单纯糊一块。”
比如衣服破了个洞,它会看褶皱走向、光照方向,甚至能猜出你里面穿的是格子衬衫还是秋衣。

再直白点:

  • 开源 = 不要钱
  • 本地跑 = 不怕照片传网上被人拿去训练“网红脸”
  • 插件多到像 360 全家桶,但都能卸载,不耍流氓

先整明白它靠啥吃饭:Inpainting + ControlNet + Prompt

别被黑话吓住,翻译成大白话就是:

  1. Inpainting:告诉 AI“只改这块”,别全图放飞。
  2. ControlNet:给 AI 一张“骨架图”,让它照猫画虎,别自由发挥。
  3. Prompt:用中文 + 英文混操,告诉 AI 要补成啥样,别补个三头六臂。

三者关系像:
Inpainting 是手术刀,ControlNet 是 X 光,Prompt 是麻醉师,缺一个都能把病人(原图)整没了。


安装:30 分钟一条龙,中间还能刷两条抖音

1. 一键包 or 纯手动?

  • 想 30 分钟搞定:直接用 AUTOMATIC1111 WebUI 一键包,国内清华源拉代码飞快。
  • 想折腾:自己配 Python 3.10 + CUDA 11.8 + xformers,踩坑套餐,送白头发三根。

以下教程默认你选“一键包”,懒人光荣。

2. 具体步骤(Win 版,Mac 见文末彩蛋)

# 1. 先装 Git,官网下或者 scoop install git# 2. 找个磁盘剩余 30G+ 的地方,右键 Git Bash Heregit clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui # 3. 国内选手加代理,不然模型下到地老天荒setHF_ENDPOINT=https://hf-mirror.com # 4. 双击 webui-user.bat,喝杯奶茶,脚本会自动拉依赖# 5. 看到 http://127.0.0.1:7860 就搞定

3. 显存警告

  • 4G 显卡:加 --medvram --opt-split-attention 参数,能跑但补大图会糊。
  • 6G:流畅跑 512×512,再大得开 --lowvram
  • 8G 以上:土豪您随意,直接 2K 图起步。

webui-user.bat 里改一行就行:

set COMMANDLINE_ARGS=--medvram --opt-split-attention 

模型选错 = 好锅配烂盖

SD 官方模型叫 sd_xl_base_1.0,但修图千万要用 inpainting 专用模型,否则补出来的区域跟原图色差大到像拼夕夕买家秀。

推荐三连:

  1. sd_xl_inpainting_1.0(官方)
  2. RealisticVisionV51_inpainting(真人写实)
  3. AnythingV5_inpainting(二次元)

下载完扔 models/Stable-diffusion 文件夹,重启 WebUI,左上角模型下拉框就能切。


掩码:别手抖,边缘羽化 5 像素保平安

掩码 = 告诉 AI 哪块要重绘。

  • 画太硬:接缝明显,像贴狗皮膏药。
  • 画太软:AI 把隔壁好皮肤也掀了。

最佳实践:

  1. WebUI 里点「Inpaint」→ 用笔刷把破损区涂满。
  2. 右上角 Mask blur 给 5~8 像素,让边缘羽化。
  3. 只勾「Inpaint masked」→ 只动涂黑的地方,保平安。

懒人加速
用 Photoshop 魔棒选区 → 羽化 5px → 填充黑色 → 存成 png 蒙版 → WebUI 里「Upload mask」一步到位。


Prompt 到底怎么写?抄模板改关键词就行

别一上来就「a lovely girl with beautiful eyes」——老照片里是我爷,不是二次元老婆!

通用模板

same style, vintage photograph, 1980s, male, short hair, wearing white shirt, solid color background, high resolution, natural color, no watermark 

负向模板(告诉 AI 别干啥):

lowres, blurry, extra limbs, cartoon, anime, watermark, text, frame, duplicate, glitch 

口诀

  • 先写「same style」锁定画风,再补对象、年代、服装、背景。
  • 负向一定要加「text、watermark」,否则 AI 给你生成一串假中文,像鬼画符。

参数面板:别乱动,这 4 个够用

参数建议值说明
Sampling methodDPM++ 2M Karras速度快、质量高
Steps30~40步数再高压感提升有限
CFG Scale7~9数字越大 AI 越听 prompt,过高会卡死
Denoising strength0.3~0.60.3 轻微修复,0.6 大开大合,>0.7 原图基本没了

实战 1:老照片去霉 + 补边角

原图 512×768,边角缺一块,霉斑像地图。

Step 1 高清化(可选但强烈建议)

SwinIR_4x 先超分到 2048×3072,再修,细节多一堆。
WebUI 里点「Extras」→ 选 SwinIR → Scale 4 → 10 秒搞定。

Step 2 画掩码

把霉斑 + 缺角一起涂了,Mask blur 6。

Step 3 写 Prompt

same style, vintage photograph, 1980s, young man, short black hair, wearing dark suit, collar shirt, plain background, film grain, natural color Negative: lowres, blurry, extra limbs, cartoon, text, watermark 

Step 4 参数

  • Model: RealisticVisionV51_inpainting
  • Denoising: 0.4
  • Size: 1024×1536(锁定比例)

Step 5 出图

第一次出来领口颜色偏蓝,把 Prompt 里加「olive green tie」再跑 2 次,完事儿。

对比图(文字描述,省流):
霉斑全消,缺角脑补出西装下摆,连底片颗粒都给你还原,我奶直接泪目。


实战 2:手机截图去水印

场景:群里甩来一张攻略图,右下角大大水印挡字。

核心思路

水印大多在纯色/渐变区,AI 补纹理压力小,但千万别带文字
SD 对文字是智障,补出来永远是「伪中文」,像「木又 氵去」这种。

操作

  1. Photoshop 里矩形选区 → 羽化 3px → 填充黑。
  2. Prompt 只写背景:
plain gray gradient background, smooth, same color, no text 
  1. Denoising 0.35,低强度防止把旁边字也抹了。

结果

水印没了,背景颜色过渡自然,不放大 200% 根本看不出。


实战 3:电商产品图“无中生有”加配件

背景:客户发来耳机图,少一只耳塞套,平台审核不过。

骚操作

  1. 用「Content-Aware」先补个大概形状,降低 AI 脑补难度。
  2. ControlNet 开 Canny,把耳机边缘锁死,防止 AI 多画一条线。
  3. Prompt:
white silicone earbud tip, matte texture, same lighting, clean background 
  1. Denoising 0.45,重绘 3 次选最稳那张。

客户反馈

“这比重新拍省事多了,下次还找你。”
我:其实我就点了三次鼠标,咖啡都没凉。


翻车现场:多长一只手怎么办?

症状:AI 把肩膀补成第三条胳膊,还是反关节。

排错三板斧

  1. 看显存:低于 4G 时把图缩到 512×512 再重绘,显存爆了就放飞。
  2. 看模型:通用模型手画得烂,换回 inpainting 专用。
  3. 看掩码:是不是把隔壁手臂也涂进去了?局部重绘别贪心。

进阶:用 latent couple 插件,把“手”单独切块写 Prompt:

hand, five fingers, natural proportion 

再合并,基本稳。


批量脚本:Python 一键跑 100 张

婚礼跟拍 1000 张图,张张边角霉?手点会抽筋。

# pip install requestsimport requests import base64 import os URL ="http://127.0.0.1:7860" INPUT_DIR ="d:/old_photos" MASK_DIR ="d:/masks" SAVE_DIR ="d:/fixed" os.makedirs(SAVE_DIR, exist_ok=True)for img_name in os.listdir(INPUT_DIR):# 读取原图并转 base64withopen(os.path.join(INPUT_DIR, img_name),"rb")as f: img_b64 = base64.b64encode(f.read()).decode()# 读取掩码 mask_path = os.path.join(MASK_DIR, img_name)ifnot os.path.exists(mask_path):continuewithopen(mask_path,"rb")as f: mask_b64 = base64.b64encode(f.read()).decode() payload ={"init_images":[img_b64],"mask": mask_b64,"inpainting_fill":1,"inpaint_full_res":True,"prompt":"same style, vintage photograph, natural color, film grain","negative_prompt":"lowres, blurry, text, watermark","steps":35,"cfg_scale":7,"denoising_strength":0.4,"width":1024,"height":1536,"sampler_index":"DPM++ 2M Karras"} response = requests.post(f"{URL}/sdapi/v1/img2img", json=payload).json() result_b64 = response["images"][0].split(",",1)[0]withopen(os.path.join(SAVE_DIR, img_name),"wb")as f: f.write(base64.b64decode(result_b64))print(f"✅ {img_name} 完成")

跑起来后去撸一把王者,回来 100 张齐活,再挑 5 张翻车手工二次微调,效率×10。


显存省着花:–medvram 还不够?

  • xformers:在 webui-user.bat 再加一句 --xformers,显存立减 20%。
  • 关高清预览:Settings → Live previews → None,省 500M。
  • sd-webui-compressed-textual-inversion 插件,把 Embedding 压成 8bit,再省 300M。

实测 6G 卡跑 1024×1024 不闪退,就是生成时间从 30s 涨到 50s,能接受。


终极避坑清单(背下来能救命)

  1. 原图先备份!SD 出图直接覆盖,手滑哭都来不及。
  2. 别在原图尺寸>2000 时直接 inpaint,先缩 50%,再重绘,完事回 Photoshop 拼回去,显存稳稳的。
  3. Prompt 里写「film grain」却忘加「same style」,AI 直接给你磨皮成塑料人。
  4. 多人合影只修一个人?用 Regional Prompter 切块,不然 AI 把隔壁二舅也整容。
  5. 文字、对称花纹、手指——目前 SD 的智障三区,能手工就别全指望 AI。

写到这儿,显卡也快冒烟了

Stable Diffusion 不是万能膏药,但**“免费 + 本地 + 效果 80 分”**这三板斧,足够让普通家庭用户、小电商、甚至影楼学徒省下一大笔银子。

下次谁再跟你说“AI 修图是智商税”,把这篇文章甩过去,并附赠一句:
“兄弟,不是工具拉胯,是你没看说明书。”

我去给显卡喂点冰可乐,你趁热把旧照片翻出来练练。
要是还翻车,群里 @ 我,一起吐槽——反正夜还长,显存还热,咱们慢慢整。

在这里插入图片描述

Read more

清华团队首发OpenClaw研究报告:AI智能体生态闭环全解析

清华团队首发OpenClaw研究报告:AI智能体生态闭环全解析

🍃 予枫:个人主页 📚 个人专栏: 《Java 从入门到起飞》《读研码农的干货日常》《Java 面试刷题指南》 💻 Debug 这个世界,Return 更好的自己! 引言 近期“龙虾”OpenClaw持续爆火,GitHub星标数一路飙升,成为AI智能体领域的现象级开源项目。就在这时,清华沈阳教授团队重磅首发两份OpenClaw专项研究报告,从理论到实践、从自我研究到生态布局,给出了最全面的解读,堪称OpenClaw学习的“官方指南”,程序员和AI从业者必看! 文章目录 * 引言 * 一、OPENCLAW双报告核心概况 * 1.1 《OpenClaw发展研究报告1.0》:严谨迭代的生态指南 * 1.2 《OpenClaw自我研究报告1.0》:AI研究AI的标杆实验 * 二、OPENCLAW领域阶段性进展 * 2.1 理论研究:筑牢生态基础,扩大科普影响力 * 2.2 模型研发:

Flutter 组件 pathfinding 的鸿蒙化适配实战 - 驾驭极致拓扑寻踪大坝、实现 OpenHarmony 分布式端高性能 AI 寻路、迷宫拓扑与工业级路径导航核方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 pathfinding 的鸿蒙化适配实战 - 驾驭极致拓扑寻踪大坝、实现 OpenHarmony 分布式端高性能 AI 寻路、迷宫拓扑与工业级路径导航核方案 前言 在鸿蒙(OpenHarmony)生态的分布式工业巡检、高性能游戏开发或者是对空间计算有极其严苛要求的 0308 批次智能仓储应用中。“复杂环境下的路径最优解计算与实时障碍避让维度”是衡量整个系统智慧化程度的最终质量门禁。面对包含数万个节点的网格地图、海量动态变化的货架坐标、甚至是由于跨设备同步产生的 0308 批次拓扑逻辑海洋。如果仅仅依靠简单的“直线欧式距离”或者是干瘪的广度优先搜索(BFS)。不仅会导致在处理大型复杂地图时让系统如同在逻辑废墟中盲人摸象。更会因为计算耗时指数级爆炸,让移动端在进行路径导航时瞬间陷入死机盲区。 我们需要一种“逻辑先行、代价建模”的空间演算艺术。 pathfinding 是一套专注于无缝整合全球公认顶级算法 A*、Dijkstra 以及二叉堆

【Agent】那个搞远程的向日葵也出 AI 了?!不用买设备,不用复杂配置,还支持多平台

【Agent】那个搞远程的向日葵也出 AI 了?!不用买设备,不用复杂配置,还支持多平台

那个搞远程的向日葵也出 AI 了?!不用买设备,不用复杂配置,还支持多平台 * 写在最前面 * 比openclaw更简单的配置过程,没有特定环境的需求 * 真正实用的地方,是它更接近现实场景 * 多平台、可查看、可接手,才是它更适合大众的原因 * 结语 🌌你好!这里是 晓雨的笔记本在所有感兴趣的领域扩展知识,感谢你的陪伴与支持~👋 欢迎添加文末好友,不定期掉落福利资讯 写在最前面 版权声明:本文为原创,遵循 CC 4.0 BY-SA 协议。转载请注明出处。 最近一段时间,“AI 操作电脑”这件事越来越火。很多人第一次看到这类演示时,都会觉得有点神奇:原来 AI 不只是会聊天、会写文案,居然真的开始会“用电脑”了。 也正因为这样,很多人会下意识觉得,所有“AI 控电脑”

【征文计划】基于Rokid 眼镜 的AI天气应用+GPS定位+AI旅游规划

【征文计划】基于Rokid 眼镜 的AI天气应用+GPS定位+AI旅游规划

文章目录 * 本文选用的技术包括: * 一、主要流程 * 新增三个辅助类,原有文件做对应改造: * 二、功能 A:GPS 自动定位 * 2.1 实现路径 * 2.2 核心代码:LocationHelper.kt * 2.3 意图识别:我们添加 GPS 的关键词 * 三、功能 B:对话上下文工程 * 3.1 核心数据结构 * 3.2 续播意图的两种形态 * 四、功能 C:AI 旅游规划 * 4.1 为什么用 LLM, 而不是规则 * 4.2 核心代码:AiTravelPlanHelper.kt