婚礼跟拍的照片交片前,要先挑掉闭眼、手抖、跑焦和过曝的照片,再把抢眼的背景杂物修干净。你可以手动用照片查看器逐组筛,也可以在本机跑脚本,把筛片结果保存成 CSV;局部修图时只把背景区域贴回原片,减少 AI 改动人物的机会。
14 张 AI 生成的婚礼样片经过本机脚本初筛后的结果
本文样片全是 AI 生成的人物,不是真人。2026 年 10 月 5 日的测试中,脚本在这 14 张样片里标出了预先设置的闭眼、模糊和过曝照片,耗时约 3 秒。真实相机照片、不同光线和不同脸部角度可能有误判,结果只作初筛,摄影师要逐张确认后再删除或交片。
下载婚礼选片与局部修图脚本包。压缩包里有初筛脚本、局部合成脚本、ComfyUI 图片编辑脚本和环境说明。脚本在本机处理照片,不需要把客户照片发到云端。
先选一条路
- 只处理一场婚礼:在电脑照片查看器里按拍摄顺序逐组放大看,手动挑闭眼、虚焦和表情不合适的照片,不必装模型。
- 经常要筛大量照片:运行本机脚本生成 CSV,再人工复核。适合有 Python 基础、愿意花时间装模型的摄影师。
- 还要去掉背景杂物:用本机 ComfyUI 和 FLUX.2 Klein 处理一块裁图,再用脚本把结果限制在背景区域。
你需要准备
| 内容 | 用途 |
|---|---|
| 电脑和全尺寸 JPG | 筛片脚本只读 JPG;RAW 可以先用本地软件导出全尺寸 JPG |
| Python 3.12 | 运行筛片与合成脚本;初次安装见《装好 Python 和虚拟环境》 |
| MediaPipe、YuNet 模型 | 本机找脸、计算闭眼和清晰度;没有 API Key 或按张调用费,安装与下载命令见下文 |
| ComfyUI 和 FLUX.2 Klein 4B(可选) | 本机编辑裁块;不做局部修图就不用安装 |
在本机筛照片
1. 准备照片文件夹
把一场活动的 JPG 放进同一个文件夹。尽量保留相机原来的文件名和拍摄时间信息;如果有多台相机,分开放。脚本按文件名顺序读取相邻照片:有 EXIF 拍摄时间时,间隔不超过 2 秒的照片会归为一组;缺少时间信息时,它会用缩小后的画面相似度粗略分组。
别用聊天软件里的缩略图。脸太小的话,眯眼、大笑和真闭眼容易分不清。
2. 安装依赖并下载两个模型
解压脚本包,在终端进入解压目录。创建独立环境并安装依赖:
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install mediapipe==0.10.21 pillow
Windows PowerShell 激活命令是 .venv\Scripts\Activate.ps1。我们在 Mac 上遇到 MediaPipe 1.0.1 的 GPU 初始化问题,因此样例固定使用 0.10.21,并让人脸关键点在 CPU 上运行。
在解压目录创建 models 文件夹,并把下面两个模型保存到对应文件名:
- MediaPipe Face Landmarker 模型 →
models/face_landmarker.task - OpenCV Zoo YuNet 模型 →
models/face_detection_yunet_2023mar.onnx
两个模型都在本机运行。使用模型前看各自仓库的许可和用途说明。
3. 运行筛片
在解压目录运行,替换为你的照片文件夹和 CSV 保存位置:
python s226_cull.py "婚礼照片" "选片结果.csv"
脚本会在终端显示每张照片的组号、建议和原因,并把相同信息写进 CSV。它先用 YuNet 找出主要人物,再用 MediaPipe 估算闭眼程度;清晰度只和同一组照片比较,纯白像素比例用于提示过曝。没有人脸、低头、侧脸或灯光复杂时都可能误判。脚本不会自动删照片。
我们的测试集只有 14 张 AI 生成样片。按当时预设的答案,闭眼、手抖、跑焦和过曝都被标出;低头看戒指的照片没有被判成闭眼。这不是准确率保证,也不能替代摄影师看片。
只修背景,不重画人物
修图前保留原片副本。以下步骤都在本机完成;ComfyUI 按本机服务处理图片,不调用在线图片 API。
1. 用本地工具修一块裁图
按《珠宝、手表反光商品修图》里的 ComfyUI 安装说明准备 FLUX.2 Klein 4B。用电脑自带的图片编辑器从原片裁出一块 1024×1024 的背景区域,记下它在原图中的左上角坐标 x,y。裁图里不要包含需要保留的人脸。
把裁图保存为 背景裁块.jpg,在脚本包目录运行:
python s086_klein_edit.py 背景裁块.jpg 背景修好.png "去掉画面左边穿玫红色长裙的宾客,用后面的草坪和椅子自然补上。不要改变其他人物、脸、衣服和场景。"
ComfyUI 需要已启动,并加载 FLUX.2 Klein 4B、Qwen 3 4B 文本编码器和 Flux VAE。模型下载与安装步骤见《珠宝、手表反光商品修图》。本机 M1 Max 的一块裁图约需 95 秒;其他设备会不同。
2. 只把背景区域合回原片
把修好的裁块贴回原图时,先圈住要替换的背景。边界尽量放在人物和物体以外,再留出一点羽化距离。坐标都是原片像素,格式为 x0,y0,x1,y1:
python s226_retouch_local.py 原片.jpg 背景修好.png 精修.png 0,250,1024 0,300,215,1300 140,370,268,560 210,1080,240,1300
命令里的裁切框 0,250,1024 表示左上角 (0,250)、边长 1024;后面三个框是要贴回的背景区域。示例坐标只适用于对应的样片,换照片后要重新量。脚本会输出无损 PNG 和一张 _diff.png 差异图;PNG 中羽化范围以外的像素保持原片数值。若最后另存为 JPEG,压缩会改变全图像素。
局部修图对比:AI 原始裁块会重画整块,只合成指定背景框能保留其余原片
打开差异图放大检查边缘、头发、衣服和背景。发现重影、漏色或边缘不自然,就调整框的位置后再合成。AI 编辑结果仍可能改变裁块里的路人或周围纹理,因此只选择确实要替换的区域。
接单和交付
可以把「初筛报告」「局部背景修图」拆开报价,按照片数量、需要修的区域和复核时间估算工时,再去摄影服务平台查看同类报价。交付前保留原片、精修 PNG 和 CSV;合同里写清筛片只是建议、摄影师负责最终取舍,以及精修只改哪些背景区域。
客户照片和人脸信息要按约定用途处理、限制访问并按约定时间删除。人脸属于生物识别信息;《个人信息保护法》将生物识别列为敏感个人信息,处理敏感个人信息要有特定目的和充分必要性、采取严格保护措施,并取得单独同意。未经新人和照片中其他人的许可,不要把照片用于作品集或公开发布。
常见问题
相机拍的是 RAW,能直接筛吗? 不能。先在本地导出全尺寸 JPG,筛完再回到 RAW 修图。
脚本说闭眼,照片看起来只是低头怎么办? 以原片为准。低头、眯眼、眼镜反光和侧脸都可能影响模型判断,不要批量删除 CSV 标记的照片。
没有 ComfyUI 怎么去掉路人? 先用本地修图软件手动处理,或只交付选片 CSV。想用 AI 时再按 ComfyUI 教程安装本机模型。
可以把客户照片上传到云端模型筛片吗? 本文脚本不需要云端模型。若另选云服务,先确认合同授权、服务的数据处理方式和客户同意,再决定是否上传。
工具清单
- MediaPipe Face Landmarker:Google 的本机人脸关键点工具;脚本使用 0.10.21。
- OpenCV Zoo YuNet:本机人脸检测模型。
- ComfyUI + FLUX.2 Klein 4B:可选的本机图片编辑路线;需要能运行 ComfyUI 的设备和相应模型文件。
相关教程
- 《婚纱照风格预览》:给新人展示不同风格前,先用虚构样片测试提示词。
- 《珠宝、手表反光商品修图》:ComfyUI 和 FLUX.2 Klein 的本机安装与修图流程。