训练了一个改造过的 U-Net ,把 Bayer-CFA 拍的照片转换成 Foveon X3 传感器风格的成像 —— 也就是 Sigma DP2 Merrill 那种味道(三层光电二极管堆叠传感器,每个像素都直接采集完整 RGB ,不存在去马赛克插值)。
关键的新增是一个一维「像素三层堆叠注入层」( 1D pixel-stack injection layer ),拼接在编码器和解码器之间的 bottleneck 上,用来编码 Foveon 传感器能采到、而 Bayer 采不到的那一列 B·G·R 光电二极管堆叠结构。
训练是端到端的,配对数据来自同一场景:Bayer 相机和一台 DP2 Merrill 三脚架并排同步拍摄,单应性( homography )对齐之后切成 256×256 小块。损失用 L1 + VGG 感知损失 + 一个小幅 TV 平滑约束;优化器 AdamW ,余弦学习率衰减,混合精度,在单张 24 GB GPU 上训练。
训练过程中我没预料到的一个发现是:注入层的位置非常敏感。放在 bottleneck 才有效;放得再前面一点,编码器会学着直接把这个先验忽略掉;放得再后面一点,解码器已经按 demosaic 风格的色度重建走完了,再注入也来不及纠正。先验保持「一维」而不是二维这件事也很关键 —— 它强迫网络去学跨通道之间的耦合关系,而不是去硬记按区域查表的映射。
架构图、训练方法细节,以及可以直接拿自己照片来跑的 Mac App:
https://code.intellios.ai/photo
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/1223585
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.