1. motivation
收到图像编辑软件的启发
2. Contribution
(1)无监督
(2)设计图像高阶曲线适应适合像素级映射,通过迭代自身
(3)设计了四个无参考损失函数
3. Network
3.1 DCE-Net
DCE-Net: 是由6个Conv2D(3x3)+ relu,分别输出为x1,x2, x3, x4, x5, x6,最后的卷积由Conv2d(3x3)+tan激活函数组成,因为要分为8个调整参数,所以最后的输出channel=24
之后进高阶曲线调整
3.2 LE(Light-Enhancement Curve)
设计的高阶曲线必须满足的条件:(1)每个像素归一化(0,1) (2)像素应该单调,这样可以保持和附近像素的差异(对比度) (3)简单、可微(以为需要反向传播)
需要n次迭代(代码中迭代了8次):
α设置为像素级参数调整
4. Loss
4.1 L-spa :空间一致性损失
i 代表像素, Ω代表区域(上下左右),K代表区域总数(4)
代码对于Yi - Yj 左是用二维卷积操作中卷积核实现:
kernel_left = torch.FloatTensor([[0, 0, 0], [-1, 1, 0], [0, 0, 0]]).cuda().unsqueeze(0).unsqueeze(0)
代码实现:
(1) 首先计算low和enhanced后图片按照dim=1,计算通道均值并保持维度一致
(2) 采用了一个二维平均池化nn.AvgPool2d(4),得到org_pool,enhance_pool
(3) 利用二维卷积操作F.conv2d分别计算Yi - Yj (=a) 、Ii - Ij(=b) 的上下左右
(4) 按照上下左右计算a - b 再平方
(5)对(4)累加
4.2 L-exp: 曝光控制损失
E:代表平均曝光水平,作者在代码中E=0.6,但是论文中提到其实E取【0.4,0.7】没有区别
M:表示大小为16×16的非重叠局部区域的数量
代码实现:
(1) 对于enhanced, 首先按照dim=1 取得每个通道的均值x
(2) 对于(1)进行了一个二维平均池化nn.AvgPool2d(16)得到mean,卷积核设置的是16(我猜测因为图片大小256,这样得到一个四维的值[[[[x]]]])
(3) mean - E 平方后取平均
4.3 L-col: 颜色一致性损失
Jp表示增强图像中p通道的平均强度值,(p,q)表示一对通道
代码实现:
(1) 先按照dim[2,3] 得到每个通道的均值mean_rgb
(2) 按照dim=1采用torch.split,分离三个通道得到mr, mg, mb
(3) 分别计算两个通道之间的差值进行平方,得到Drg,Drb, Dgb
(4)计算一个彩色差 k,通过组合Drg、Drb 和 Dgb 各自的平方和,再求开根号即可
4.4 L-tv: 光照平滑损失 : 是对进行高阶曲线像素映射系数进行计算Loss
N为迭代次数,∇x和∇y分别表示水平和垂直梯度操作。
标签:dim,迭代,Reference,16,卷积,Light,Image,像素,通道 From: https://www.cnblogs.com/yyhappy/p/17334856.html