Learning-to-See-in-the-Dark-master
该项目实现了对于暗光环境下,使用高速快门和适中感光度拍摄出的极大欠曝的raw文件,生成曝光正常且画质优秀的jpg格式文件。效果极大优于使用前期高感光度拍摄,或者使用ps等软件提亮照片。
数据集:
数据集分为sony和fuji两个数据集,sony部分为拜尔阵列,fuji部分为xtran阵列。两种色彩滤镜排列存在区别,在raw通道分离时使用不同算法。
以sony数据集为例,数据集包括两种类型的照片,一张曝光时间长,曝光充足的照片(储存在long文件夹中)和若干张曝光时间短,欠曝严重的照片(储存在short文件夹中)。
文件名第一位为照片编号,相同代表同一场景;第二位代表序号,第三位代表曝光时间数据预处理:
短曝光照片使用rawpy读取元数据,减去黑位后,根据色彩滤镜模式拆分成若干单色通道。拜耳阵列拆分为1/2 1/2 4(rggb);Xtrans拆分为1/3 1/3 9(2r2b5g)
网络结构:
损失函数:
优化器:
训练过程:
每次训练中,按照随机顺序取一个照片编号,根据照片编号读取长曝光照片及一张编号为00的短曝光照片(如果存在多个编号为00,曝光时间不同的,则随机取一张)。根据文件名判断两张照片曝光量差值倍率作为放大倍率。短曝光照片预处理后乘上放大倍率,放入输入数组;长曝光照片使用rawpy解码输出16位rgb图片放入目标数组。加载完成后,在图片内取随机位置截图并随机翻转,作为训练样本。
第一次读取后将照片保存到内存(真tm大)。将使用的数据量限制为50组照片后内存大小约为13gb
修改笔记
1.增加batch大小(从1到5)时间翻倍,开始下降速度较快但是然后趋于平缓,小样本中200次训练损失率没有优势
2.网络对显卡利用率较低
3不记录日志,训练速度约为0.1s/张,加了是>0.3
4输出层加几层resnet?
5.20
选择性记录日志后,单次5batch训练时间低于0.2s,gpu利用率在40-50
出现loss率周期性上升
网友评论