TVLoss理解
在圖像復原過程中,圖像上的一點點噪聲可能就會對復原的結果產生非常大的影響,因為很多復原算法都會放大噪聲。這時候我們就需要在最優化問題的模型中添加一些正則項來保持圖像的光滑性,TV loss是常用的一種正則項(注意是正則項,配合其他loss一起使用,約束噪聲)。圖片中相鄰像素值的差異可以通過降低TV loss來一定程度上解決。比如降噪,對抗checkerboard等等。
1. 初始定義
Rudin等人(Rudin1990)觀察到,受噪聲污染的圖像的總變分比無噪圖像的總變分明顯的大。 那么最小化TV理論上就可以最小化噪聲。圖片中相鄰像素值的差異可以通過降低TV loss來一定程度上解決。比如降噪,對抗checkerboard等等。總變分定義為梯度幅值的積分:
其中,
Du 是圖像的支持域。限制總變分就會限制噪聲。
2. 擴展定義
帶階數的TV loss 定義如下:
但是在圖像中,連續域的積分就變成了像素離散域中求和,所以可以這么算:
即:求每一個像素和橫向下一個像素的差的平方,加上縱向下一個像素的差的平方。然后開β/2次根。
3. 效果
The total variation (TV) loss encourages spatial smoothness in the generated image.(總變差(TV)損失促進了生成的圖像中的空間平滑性。)根據論文Nonlinear total variation based noise removal algorithms的描述,當β < 1時,會出現下圖左側的小點點的artifact。當β > 1時,圖像中小點點會被消除,但是代價就是圖像的清晰度。效果圖如下:
4. 代碼實現
這兩種實現都默認β=2 \beta=2β=2,不支持β \betaβ的調整。
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`總結
- 上一篇: html border线条重叠,关于bo
- 下一篇: Docker-核心篇(1)-CentOS