图像去噪BRDNet pytorch实现

paper名称:Image Denoising using Deep CNN with Batch ReNormalization

文章paper在这:https://www.sciencedirect.com/science/article/abs/pii/S0893608019302394
keras实现代码:https://github.com/hellloxiaotian/BRDNet

class BRDNet(nn.Module):
    def __init__(self, channels, num_of_layers=15):
        super(BRDNet, self).__init__()
        kernel_size = 3
        padding = 1
        features = 64
        groups = 1
        L = []
        layers = []
        layers.append(nn.Conv2d(in_channels=channels, out_channels=features, kernel_size=kernel_size, padding=padding,
                                bias=False))
        layers.append(nn.BatchNorm2d(features))
        layers.append(nn.ReLU(inplace=True))
        # layers.append(B.ResBlock(features, features, kernel_size=kernel_size, stride=1, padding=padding, bias=False, mode='CRC', negative_slope=0.2))
        for _ in range(15):
            layers.append(
                nn.Conv2d(in_channels=features, out_channels=features, kernel_size=kernel_size, padding=padding,
                          bias=False))
            layers.append(nn.BatchNorm2d(features))
            layers.append(nn.ReLU(inplace=True))
        # layers.append(B.ResBlock(features, features, kernel_size=kernel_size, stride=1, padding=padding, bias=False, mode='CRC', negative_slope=0.2))
        layers.append(nn.Conv2d(in_channels=features, out_channels=channels, kernel_size=kernel_size, padding=padding,
                                bias=False))  # 原来out_channels为channels


        L = []
        L.append(nn.Conv2d(in_channels=channels, out_channels=features, kernel_size=kernel_size, padding=padding,
                                bias=False))
        L.append(nn.BatchNorm2d(features))
        L.append(nn.ReLU(inplace=True))
        for i in range(7):
            L.append(nn.Conv2d(in_channels=features, out_channels=features, kernel_size=kernel_size, padding=2, groups=groups,
                      bias=False, dilation=2))
            L.append(nn.ReLU(inplace=True))
        L.append(nn.Conv2d(in_channels=features, out_channels=features, kernel_size=kernel_size, padding=padding,
                                bias=False))
        L.append(nn.BatchNorm2d(features))
        L.append(nn.ReLU(inplace=True))
        for i in range(6):
            L.append(nn.Conv2d(in_channels=features, out_channels=features, kernel_size=kernel_size, padding=2,
                               groups=groups,bias=False, dilation=2))
            L.append(nn.ReLU(inplace=True))
        L.append(nn.Conv2d(in_channels=features, out_channels=features, kernel_size=kernel_size, padding=padding,
                                bias=False))
        L.append(nn.BatchNorm2d(features))
        L.append(nn.ReLU(inplace=True))
        L.append(nn.Conv2d(in_channels=features, out_channels=channels, kernel_size=kernel_size, padding=padding,
                           bias=False))
        self.BRDNet_first = nn.Sequential(*layers)
        self.BRDNet_second = nn.Sequential(*L)
        self.conv1 = nn.Sequential(
            nn.Conv2d(in_channels=channels*2, out_channels=channels, kernel_size=kernel_size, padding=padding,
                      groups=groups, bias=False))
    def forward(self, x):
        out1 = self.BRDNet_first(x)
        out2 = self.BRDNet_second(x)
        out1 = x - out1
        out2 = x - out2
        out = torch.cat([out1, out2], 1)
        out = self.conv1(out)
        out = x - out
        return out
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值