水印去除(基于nosie2noise优化 代码+模型)

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的话就是对单像素进行操作,没有考虑空间信息。

 

感受野计算过程:

 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
以下是用MATLAB计算融合图像CE、EN、MI和PSNR的示例代码: CE和EN的代码: ```matlab function [CE, EN] = CE_EN(img1, img2, fused) % img1, img2分别为待融合图像,fused为融合图像 % CE为融合图像的交叉熵,EN为融合图像的熵 p1 = imhist(img1)/(size(img1,1)*size(img1,2)); p2 = imhist(img2)/(size(img2,1)*size(img2,2)); pf = imhist(fused)/(size(fused,1)*size(fused,2)); CE = -sum(sum(p1.*log2(pf+eps)+p2.*log2(pf+eps))); EN = -sum(pf.*log2(pf+eps)); end ``` MI的代码: ```matlab function MI = MI(img1, img2, fused) % img1, img2分别为待融合图像,fused为融合图像 % MI为融合图像的互信息 p1 = imhist(img1)/(size(img1,1)*size(img1,2)); p2 = imhist(img2)/(size(img2,1)*size(img2,2)); pf = imhist(fused)/(size(fused,1)*size(fused,2)); H1 = -sum(p1.*log2(p1+eps)); H2 = -sum(p2.*log2(p2+eps)); Hf = -sum(pf.*log2(pf+eps)); p12 = jointHistogram(img1, img2)/(size(img1,1)*size(img1,2)); pf12 = jointHistogram(fused, fused)/(size(fused,1)*size(fused,2)); H12 = -sum(pf12(:).*log2(pf12(:)+eps)); MI = H1 + H2 - H12; end function [joint_hist] = jointHistogram(img1, img2) % img1, img2分别为待融合图像 % 计算二维联合直方图 joint_hist = zeros(256,256); for i=1:size(img1,1) for j=1:size(img1,2) joint_hist(img1(i,j)+1,img2(i,j)+1) = joint_hist(img1(i,j)+1,img2(i,j)+1) + 1; end end end ``` PSNR的代码: ```matlab function PSNR = psnr(img1, img2) % img1, img2分别为待比较图像 % PSNR为两图像的峰值信噪比 [M,N] = size(img1); dif = double(img1) - double(img2); MSE=sum(sum(dif.^2))/(M*N); PSNR=10*log10(255^2/MSE); end ``` 以上代码中,CE和EN使用的是直方图的方法计算,MI使用的是联合直方图的方法计算,PSNR使用的是公式法计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值