TVLoss理解
在圖像復(fù)原過程中,圖像上的一點點噪聲可能就會對復(fù)原的結(jié)果產(chǎn)生非常大的影響,因為很多復(fù)原算法都會放大噪聲。這時候我們就需要在最優(yōu)化問題的模型中添加一些正則項來保持圖像的光滑性,TV loss是常用的一種正則項(注意是正則項,配合其他loss一起使用,約束噪聲)。圖片中相鄰像素值的差異可以通過降低TV loss來一定程度上解決。比如降噪,對抗checkerboard等等。
1. 初始定義
Rudin等人(Rudin1990)觀察到,受噪聲污染的圖像的總變分比無噪圖像的總變分明顯的大。 那么最小化TV理論上就可以最小化噪聲。圖片中相鄰像素值的差異可以通過降低TV loss來一定程度上解決。比如降噪,對抗checkerboard等等。總變分定義為梯度幅值的積分:
其中,
Du 是圖像的支持域。限制總變分就會限制噪聲。
2. 擴(kuò)展定義
帶階數(shù)的TV loss 定義如下:
但是在圖像中,連續(xù)域的積分就變成了像素離散域中求和,所以可以這么算:
即:求每一個像素和橫向下一個像素的差的平方,加上縱向下一個像素的差的平方。然后開β/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時,會出現(xiàn)下圖左側(cè)的小點點的artifact。當(dāng)β > 1時,圖像中小點點會被消除,但是代價就是圖像的清晰度。效果圖如下:
4. 代碼實現(xiàn)
這兩種實現(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
- 下一篇: 数据库系统原理(1)--绪论