当前位置 博文首页 > DL_fan的博客:水印去除(基于nosie2noise优化 代码+模型)

    DL_fan的博客:水印去除(基于nosie2noise优化 代码+模型)

    作者:[db:作者] 时间:2021-07-10 22:25

    github链接

    1.感受野计算:

    r_{n}:本层感受野;

    r_{n-1}:上层感受野;

    s_{i}:第i层卷积或池化的步长

    k:本层卷积核大小

    2.空洞卷积卷积核计算:K=k+(k-1)(r-1),k为原始卷积核大小,r为空洞卷积参数空洞率,带入上式即可计算空洞卷积感受野;

    3.针对noise2nosie进行改造:

    (1).加深网络,原始结构感受野只有192,而要去除的水印尺度比较大,将原始结构后两层网络改为空洞卷积,dilated rate 设置为6,将感受野放大为672,更加适合640*640尺度推理,这样更能看清全局噪声,同时原图信息丢失不是很严重;
    (2).修改loss函数,随着epoch增加放大loss,刻意去优化困难样本。

    
    class L0Loss(nn.Module):
        """High dynamic range loss."""
        def __init__(self, eps=1e-8, nb_epochs=10):
            """Initializes loss with numerical stability epsilon."""
    
            super(L0Loss, self).__init__()
            self._eps = eps
            self.nb_epochs =  nb_epochs
    
        def forward(self, denoised, target, epoch):
            """Computes loss by unpacking render buffer."""
            # gamma = 2.0 * (self.nb_epochs - epoch) / self.nb_epochs
            gamma = 2.0 * (epoch+1) / self.nb_epochs
            loss = ((torch.abs(denoised - target) + self._eps) ** gamma)
            return torch.mean(loss.view(-1))

    效果图:

       

    缺点:

    1.由于loss函数采用的是类似L2loss的,是对所有像素进行平均优化,虽然去除了水印,但同时也将图像变得平滑。

    2.采用这种loss的话就是对单像素进行操作,没有考虑空间信息。

    ?

    感受野计算过程:

    ?

    cs