AI 创作开放麦 · 2026-08
口袋里的暗房
FilmCvt —— 把 iPhone 对准胶卷负片,取景框里直接看到照片。
负片 ⇌ 正片 · 同一张胶片 · 模型实时转换
John · 机器学习工程师 · 胶片爱好者 · 约 12 分钟
初衷与痛点
拍胶卷的人,都在等
- 冲扫店:一卷几十块,来回 三五天;
- 自己翻拍:单反 + 灯箱 + 电脑后期,一晚上;
- 最玄学的是那层橙色片基——白平衡怎么调都不对。
想要的其实很简单:对准,看见,保存。
现场演示
取景框即暗房
自动识别边框
歪了也能拉直
实时负转正
快门直存相册

输入 · 手机对准灯箱上的负片
→

输出 · App 实时转换
→ 切手机投屏,现场扫一张
每一帧经过什么
四步流水线
橙框 = 神经网络(各一个 ResNet-18)· 青字 = 无参数算法 · 全部跑在手机上
第一步 · 找框 · 先亲手对一次
八个数,对上一张胶片
上下拖动矩阵里的数字,把青色框套到画幅上——右边实时拉直 ↓
这 8 个数,就是一次「透视变换」的全部自由度——「扫描文档」同款数学,网络看一眼直接报出它们。
第一步 · 找框 · 让网络猜
八个数字定位一张胶片
网络(缩略图) → 8 个数 = 四个角 → 透视变换 → 拉直

前 · 手机原始画面 + 预测的四角
→

后 · 透视矫正成标准 3:2
数据 · 自己拍
让标注免费
- 常规做法:先拍照,再一张张手工画框——画一百张要一晚上;
- 反过来:先画框,再拍照——App 随机给一个框,你把胶片对进去拍,框就是现成的标签;
- 拍了 100 张——一杯水的功夫。
数据 · 一张变一百张
增强:已知答案的考试
训练时把每张采集的照片随机换窗口、转角度、调亮度、加噪声和假反光——变换是我们施加的,所以角点标签跟着同一个变换走,等于免费多拍了一百倍。
同一批照片增强后的训练样本 · 绿框 = 跟随变换的标签 · 每个 batch 都是新的
冷知识
「把数据揉一揉再让网络做题」是大模型的同款配方——遮住词猜词,揉皱图猜角。自监督学习的通用套路。
微调与验证
它学会了:2.6px
- 合成 + 真实照片混合微调,一共 30 分钟 GPU;
- 插曲:竖着的胶片,「左上角」是哪个角?数学上无解——让损失函数对四种旋转都认账;
- 留 20 张从不参与训练的照片当考卷:平均 2.6px,最差 8.3px;
- 2.6px 什么概念?折算到胶片上约 半毫米——比画幅自己的黑边还细,真框和预测框基本重叠:
绿 = 真实边框 · 红 = 网络预测(按 2.6px 误差模拟) · 右:角点放大 4 倍才能看出两条线
预备知识 · 三十秒
一张照片 = 六百万个数
在照片上移动鼠标,看每个像素的三个数 ↓
- 每个像素 = 红绿蓝三个 0~1 的数;1080P ≈ 200 万像素 × 3 ≈ 600 万个数——每个「滤镜」都是对这些数的一条公式,区别只在公式是人写的还是网络学的。
第二步 · 反相
不是每步都要模型
正片 = 1 − 负片 // 逐像素、逐通道,一行数学,无参数
在任意一边移动鼠标选一个像素,两边同步显示它的三个数 ↓
第三步 · 白平衡 · 你来试试
你来当调色师
图上移动鼠标选像素(两边同一位置);上下拖动矩阵里的数字,整张图跟着变 ↓
9 个数还只是「线性」调色,已经拧不明白了——那么,交给网络?
第三步 · 白平衡 · 让网络拧
33 个旋钮,网络来拧
φ(r,g,b) = [ r, g, b, r², g², b², rg, rb, gb, rgb, 1 ]ᵀ
[R′,G′,B′]ᵀ = M3×11 · φ(r,g,b) ← M 的 33 个数由网络给出
多项式核出自 Afifi & Brown, “When Color Constancy Goes Wrong” (WB-sRGB), CVPR 2019
一张图先变成 11 张「基图」 · 输出的每个通道 = 它们的线性组合(权重就是 M 的一行)
- 把一张图拆成 11 张基图,输出仍是线性组合——权重 3×11 = 33 个,网络看图给出;
白平衡的数据
又是「已知答案的考试」
训练集是拼起来的公开数据(BDD100K 街景、鸟类、风景、自然……约 50 万张正常照片)。每张随机加色偏——加偏的是题目,原图就是答案。
BDD100K 里的一张训练图 · 同一张答案,无数道题目 · 色偏是自己加的,答案永远免费
和找框同一个配方:把好数据弄坏,让网络学会还原。
合起来
完整的一条链
- 两个模型 + 两步无参数算法,30 FPS 跑在手机上;
- 三步全部可单独开关——出问题时看中间结果,比看代码快。
AI 协作流程
两天,一场对话
- D1
- 复活两年前的代码 → 转 Core ML → App 装上手机 → 实时模式 + 自动找框
- D2
- 合成训练 → 手机采集 100 张 → 微调到 2.6px
- 分工
- 我:想法、胶片、按快门;AI:写代码、查坑、盯训练
Claude CodePyTorchCore MLSwiftUIRTX 3060 · 共 30 分钟
下一步
谢谢,来试试
去反光模型
更浓的色彩
更高分辨率
App Store
手机就在这,欢迎来扫一张你的胶片。
幻灯片与资料:filmcvt.enhuiz.com
← → 翻页