日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lattice regression: 求解查找表

發布時間:2024/5/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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不會壓抑 線性,會保持線性

import numpy as npdef get_K(x, dim):s = 0for i in range(dim):for j in range(dim):p = i * dim + jif (j > 0) and (j < dim-1):s += (x[p-1] + x[p+1] - 2*x[p])**2if (i > 0) and (i < dim - 1):s += (x[p-dim] + x[p+dim] - 2*x[p])**2return s / (dim**2) def get_K2(x, dim):x = x.reshape(dim, dim)dd = dim - 2x1 = x[0:dd, 0:dim]x2 = x[2:dd+2, 0:dim]x3 = x[:, 0:dd]x4 = x[:, 2:dd+2]x12 = x[1:dd+1, 0:dim]x34 = x[:, 1:dd+1]a = (x1 + x2 - 2 * x12) ** 2b = (x3 + x4 - 2 * x34) ** 2return (np.sum(a) + np.sum(b))/ (dim**2)'''驗證get_K 和 get_K2等價''' if __name__ == "__main__":d = 32xxx = np.random.randint(0, 9, (d,d))print(xxx)xxx = xxx.reshape(-1)a = get_K(xxx, d)print(a)b = get_K2(xxx, d)print(b)

在邊緣會保持梯度,維持梯度趨勢不變

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: 求解查找表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。