TVLoss理解
在圖像復(fù)原過(guò)程中,圖像上的一點(diǎn)點(diǎn)噪聲可能就會(huì)對(duì)復(fù)原的結(jié)果產(chǎn)生非常大的影響,因?yàn)楹芏鄰?fù)原算法都會(huì)放大噪聲。這時(shí)候我們就需要在最優(yōu)化問(wèn)題的模型中添加一些正則項(xiàng)來(lái)保持圖像的光滑性,TV loss是常用的一種正則項(xiàng)(注意是正則項(xiàng),配合其他loss一起使用,約束噪聲)。圖片中相鄰像素值的差異可以通過(guò)降低TV loss來(lái)一定程度上解決。比如降噪,對(duì)抗checkerboard等等。
1. 初始定義
Rudin等人(Rudin1990)觀察到,受噪聲污染的圖像的總變分比無(wú)噪圖像的總變分明顯的大。 那么最小化TV理論上就可以最小化噪聲。圖片中相鄰像素值的差異可以通過(guò)降低TV loss來(lái)一定程度上解決。比如降噪,對(duì)抗checkerboard等等。總變分定義為梯度幅值的積分:
其中,
Du 是圖像的支持域。限制總變分就會(huì)限制噪聲。
2. 擴(kuò)展定義
帶階數(shù)的TV loss 定義如下:
但是在圖像中,連續(xù)域的積分就變成了像素離散域中求和,所以可以這么算:
即:求每一個(gè)像素和橫向下一個(gè)像素的差的平方,加上縱向下一個(gè)像素的差的平方。然后開(kāi)β/2次根。
3. 效果
The total variation (TV) loss encourages spatial smoothness in the generated image.(總變差(TV)損失促進(jìn)了生成的圖像中的空間平滑性。)根據(jù)論文Nonlinear total variation based noise removal algorithms的描述,當(dāng)β < 1時(shí),會(huì)出現(xiàn)下圖左側(cè)的小點(diǎn)點(diǎn)的artifact。當(dāng)β > 1時(shí),圖像中小點(diǎn)點(diǎn)會(huì)被消除,但是代價(jià)就是圖像的清晰度。效果圖如下:
4. 代碼實(shí)現(xiàn)
這兩種實(shí)現(xiàn)都默認(rèn)β=2 \beta=2β=2,不支持β \betaβ的調(diào)整。
4.1 pytorch
4.2 tensorflow
def tv_loss(X, weight):with tf.variable_scope('tv_loss'):return weight * tf.reduce_sum(tf.image.total_variation(X))`` 參考 https://blog.csdn.net/yexiaogu1104/article/details/88395475`總結(jié)
- 上一篇: html border线条重叠,关于bo
- 下一篇: Docker-核心篇(1)-CentOS