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