lattice regression: 求解查找表
文章目錄
- lattice regression
- 1.Monotonic Calibrated Interpolated Look-Up Tables
- 1.1 單調性的約束
- 1.2. 快速多維線性插值 和 單純形插值法
- 1.3. 鼓勵線性的正則化函數
- 2.lattice regression各種正則化的效果差異
- 2.1 生成二維曲面示例:
- 2.2 graph laplacian regularizer
- 2.3 graph hessian regularizer
- 2.4 torsion regularizer
- 2.5 單調性約束
- 3.Nonuniform Lattice Regression for Modeling the Camera Imaging Pipeline
- 3.1. 模塊所處的位置
- 3.2. 構建lattice model
- 3.3 由于色域的變化并不是均勻的,因此采用non-uniform的lattice 會不會更好?
- 3.4. 重新求解lattice regression
- 3.5. 實驗
lattice regression
1.Monotonic Calibrated Interpolated Look-Up Tables
Fast and Flexible Monotonic Functions with
Ensembles of Lattices
兩篇論文都比較偏理論,涉及數學和比較早的論文引用,有些細節不是很容易懂。
1.1 單調性的約束
1.2. 快速多維線性插值 和 單純形插值法
Fast Multilinear Interpolation
Simplex Linear Interpolation
兩個快速插值的方法。
1.3. 鼓勵線性的正則化函數
在lattice regression 相關論文中又介紹 graph laplacian 正則化 和 graph hessian正則化。
graph laplacian 正則化 是約束相鄰的node, 因此向外推斷時,趨勢會比較平坦。
graph hessian正則化是 約束相鄰的node的 差分,因此向外推斷時,趨勢會保持內部的變化趨勢。
2.lattice regression各種正則化的效果差異
2.1 生成二維曲面示例:
生成二維曲面 lattice regression論文中的示例
2.2 graph laplacian regularizer
在邊緣趨向于平坦,維持值不變的
2.3 graph hessian regularizer
相比于 laplacian regualr, graph hessian regularizer不會壓抑 線性,會保持線性
在邊緣會保持梯度,維持梯度趨勢不變
2.4 torsion regularizer
使每個grid保持線性化, 每個grid趨向與 維持 平行四邊形,而不是梯形。
2.5 單調性約束
根據兩條曲線生成二維曲面
ground truth:
不加單調性正則化:
def mono_reg(x, dim):x = x.reshape(dim, dim)d = 6delta1 = x[1:6, :] - x[0:5, :] # r, c = dim-1, dim > 0delta2 = x[:, 1:6] - x[:, 0:5] # r, c = dim, dim-1 > 0delta3 = -delta1delta4 = -delta2s = np.mean(np.maximum(0, delta3)**2) + np.mean(np.maximum(0, delta4)**2)return sL = get_L(dim)def mini_fun(x, W, b, n, lamda):x = x.reshape(-1, 1)aa = (W @ x - b) ** 2 / n#bb = get_torsion(x, dim)bb1 = x.T @ L @ xbb = get_K2(x, dim)cc = mono_reg(x, dim)return np.sum(aa) + lamda*np.sum(bb) + 0*np.sum(cc)加入單調性約束圖像效果,在左下角可以看出。
修改上面code最后一行 return np.sum(aa) + lamda*np.sum(bb) + 20*np.sum(cc)3.Nonuniform Lattice Regression for Modeling the Camera Imaging Pipeline
利用nonuniform lattice regression 進行顏色映射。
3.1. 模塊所處的位置
代替ccm和gamma,tone mapping模塊
3.2. 構建lattice model
輸入 r1,g1,b1 輸出 r2,g2,b2
可以先考慮輸出一個channel: 輸入r1,g1,b1 輸出r2 channel.
N 是 每一行的 網格數目,比如 N = 17
m = N^3, 我們要求的是一個查找表,比如r2的數目是 m
損失函數如下:
Wb - y 就是 插值 最小化,不必多說, W是 n行(訓練樣本數目),m 列的矩陣
Sb是導數平滑項。 比如 a2-0.5a1 + 0.5a3, 那么可以得到一個 N ? N ? ( N ? 2 ) ? 3 N*N*(N-2)*3 N?N?(N?2)?3行, m列的矩陣。
ρ ( b ) \rho(b) ρ(b) 是約束邊緣的項,因為訓練數據分布步會是均勻的,想象在3Dlut中飽和度很大的點訓練集中可能不會太多或者缺失,這個時候需要對 3Dlut的邊緣位置(像素值達到1的點,想象一個立方體除了與(0,0,0)接觸的3條邊,剩余9條邊,使原來是1的現在仍保持1)
原來是0,0,0的仍然保持0,0,0
因此 ρ ( b ) \rho(b) ρ(b) 是一個 xxx行 m列的矩陣,xxx的數目我也沒計算。
最終目標函數的解為:
這里lattice regression的構建和之前有些不同就是 把一些約束合并在矩陣里面。其實含義是一樣的。
3.3 由于色域的變化并不是均勻的,因此采用non-uniform的lattice 會不會更好?
作者就是通過一個 transformation 將 uniform變為 non-uniform 3D lut.
就是原來的線性映射到每個node, 改為非線性。
比如原來的一條邊 1-255分別對應 3Dlut的 1-255,就是均勻的。
現在要設計一個轉換關系,轉變為非均勻,像素值為10可能不對應3Dlut的第10格。
這樣其實是求一個轉換關系,類似于 直方圖規定化的一個 查找表。
實際上作者就是構建了一個單調查找表。如何構建呢?
從誤差著手。
比如 r1, b1, g1=(1,2,3)查找出來時r2,g2,b2,誤差為er1,eb1,eg1。那么(1,2,3)所在的bin 的直方圖加上er1,eb1,eg1。 最終可以構建一個1,2,3,4.,,255的直方圖,文中時raw圖0-1023的直方圖。
錯誤越大,說明該分段 精度越差,需要分配更多的 更細化的 網格。通過圖a得到一個圖c的轉換表。
但是由于直方圖中有很多空bin, 因此平滑一下得到b:
然后d就是想要的分布,現在的分布時線性,轉換為d的分布,就利用直方圖規定化的方法,求一個反向查找表。
首先求累計:
再求反向:
3.4. 重新求解lattice regression
一個轉換的查找表得到之后,non-uinform的每個格的頂點位置也確定了,那么 W, Sb, ρ \rho ρ 也需要重新構建,然后求解
3.5. 實驗
non-uniform 3dlut比 regular3dlut 效果好,比rbf 效率高,且精度不會降太多。
總結
以上是生活随笔為你收集整理的lattice regression: 求解查找表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用 Python 带你看各国 GDP 变
- 下一篇: 通过木马程序rootkit隐蔽行踪-创建