コード例 #1
0
ファイル: resnet_model.py プロジェクト: uyuutosa/aimaker
    def __init__(self, dim, setting):
        super(ResnetBlock, self).__init__(setting)
        self.pad_factory = PadFactory(self.setting)
        self.norm_layer  = NormalizeFactory(setting).create(
                                setting['models']['resNet']['generator']['normalizeLayer'])

        self.conv_block  = self.build_conv_block(dim)
コード例 #2
0
ファイル: resnet_model.py プロジェクト: uyuutosa/aimaker
class ResnetBlock(BaseModel):
    def __init__(self, dim, setting):
        super(ResnetBlock, self).__init__(setting)
        self.pad_factory = PadFactory(self.setting)
        self.norm_layer  = NormalizeFactory(setting).create(
                                setting['models']['resNet']['generator']['normalizeLayer'])

        self.conv_block  = self.build_conv_block(dim)

    def build_conv_block(self, dim):
        use_bias = self.setting['models']['resNet']['generator']['useBias']
        conv_block = []
        conv_block += [self.pad_factory.create(self.setting['models']['resNet']['generator']['paddingType'])(1)]
        conv_block += [nn.Conv2d(dim, dim, kernel_size=3, padding=0, bias=use_bias),
                       self.norm_layer(dim),
                       nn.ReLU(True)]

        if self.setting['models']['resNet']['generator']['useDropout']:
            conv_block += [nn.Dropout(float(self.setting['models']['resNet']['generator']['dropoutRate']))]

        conv_block += [self.pad_factory.create(self.setting['models']['resNet']['generator']['paddingType'])(1)]
        conv_block += [nn.Conv2d(dim, dim, kernel_size=3, padding=0, bias=use_bias),
                       self.norm_layer(dim)]
        return nn.Sequential(*conv_block)

    def forward(self, x):
        return x + self.conv_block(x)
        if self.setting['base']['isDataParallel']:
            return x + nn.parallel.data_parallel(self.conv_block, x, self.gpu_ids)
        else:
            return x + self.conv_block(x)
コード例 #3
0
    def __init__(self, dim, config):

        super(ResnetBlock, self).__init__()
        self.config = config
        self.pad_factory = PadFactory(self.config)
        self.norm_layer = NormalizeFactory(config).create(
            config['ResNetForGenerator settings']['normalizeLayer'])

        self.conv_block = self.build_conv_block(dim)
コード例 #4
0
ファイル: resnet_model.py プロジェクト: uyuutosa/aimaker
    def __init__(self,
                 setting):
        super(ResNetForGeneratorModel, self).__init__(setting)

        self.setting = setting
        ch = SettingHandler(setting)
        input_nc         = int(setting['base']['numberOfInputImageChannels'])
        output_nc        = int(setting['base']['numberOfOutputImageChannels'])
        ngf              = int(setting['models']['resNet']['generator']['filterSize'])
        use_bias         = setting['models']['resNet']['generator']['useBias']
        self.gpu_ids     = ch.get_GPU_ID()
        self.pad_factory = PadFactory(setting)
        self.norm_layer  = NormalizeFactory(setting).create(
                                setting['models']['resNet']['generator']['normalizeLayer'])

        model = [nn.ReflectionPad2d(3),
                 nn.Conv2d(input_nc, ngf, kernel_size=7, padding=0, bias=use_bias),
                 self.norm_layer(ngf),
                 nn.ReLU(True)
                ]

        n_downsampling = 2
        for i in range(n_downsampling):
            mult   = 2 ** i
            model += [nn.Conv2d(ngf * mult,
                                ngf * mult * 2,
                                kernel_size=3,
                                stride=2,
                                padding=1,
                                bias=use_bias),
                      self.norm_layer(ngf * mult * 2),
                      nn.ReLU(True)
                     ]
        mult = 2**n_downsampling

        for i in range(int(setting['models']['resNet']['generator']['nBlocks'])):
            model += [ResnetBlock(ngf * mult, setting)] 

        for i in range(n_downsampling):
            mult   = 2**(n_downsampling - i)
            model += [nn.ConvTranspose2d(ngf * mult, 
                                         int(ngf * mult / 2),
                                         kernel_size=3, 
                                         stride=2,
                                         padding=1,
                                         output_padding=1,
                                         bias=use_bias),
                      self.norm_layer(int(ngf * mult / 2)),
                      nn.ReLU(True)]

        model += [self.pad_factory.create(setting['models']['resNet']['generator']['paddingType'])(3)]
        model += [nn.Conv2d(ngf, output_nc, kernel_size=(7, 7), padding=0)]
        model += [nn.Tanh()]

        self.model = nn.Sequential(*model)
コード例 #5
0
class ResnetBlock(nn.Module):
    def __init__(self, dim, config):

        super(ResnetBlock, self).__init__()
        self.config = config
        self.pad_factory = PadFactory(self.config)
        self.norm_layer = NormalizeFactory(config).create(
            config['ResNetForGenerator settings']['normalizeLayer'])

        self.conv_block = self.build_conv_block(dim)

    def build_conv_block(self, dim):
        use_bias = self.config['ResNetForGenerator settings'].getboolean(
            'useBias')
        conv_block = []
        conv_block += [
            self.pad_factory.create(
                self.config['ResNetForGenerator settings']['paddingType'])(1)
        ]
        conv_block += [
            nn.Conv2d(dim, dim, kernel_size=3, padding=0, bias=use_bias),
            self.norm_layer(dim),
            nn.ReLU(True)
        ]

        if self.config['ResNetForGenerator settings'].getboolean('useDropout'):
            conv_block += [
                nn.Dropout(
                    float(self.config['ResNetForGenerator settings']
                          ['dropoutRate']))
            ]

        conv_block += [
            self.pad_factory.create(
                self.config['ResNetForGenerator settings']['paddingType'])(1)
        ]
        conv_block += [
            nn.Conv2d(dim, dim, kernel_size=3, padding=0, bias=use_bias),
            self.norm_layer(dim)
        ]
        return nn.Sequential(*conv_block)

    def forward(self, x):
        out = x + self.conv_block(x)
        return out
コード例 #6
0
    def __init__(self, config):

        super(BGModel, self).__init__(config)
        self.config = config
        ch = util.ConfigHandler(config)
        input_nc = int(config['global settings']['numberOfInputImageChannels'])
        ngf = int(config['ResNetForGenerator settings']['filterSize'])
        use_bias = config['ResNetForGenerator settings'].getboolean('useBias')
        self.gpu_ids = ch.get_GPU_ID()
        self.pad_factory = PadFactory(config)
        self.norm_layer = NormalizeFactory(config).create(
            config['ResNetForGenerator settings']['normalizeLayer'])

        model = [
            nn.ReflectionPad2d(3),
            nn.Conv2d(input_nc, ngf, kernel_size=7, padding=0, bias=use_bias),
            self.norm_layer(ngf),
            nn.ReLU(True)
        ]

        n_downsampling = 2
        for i in range(n_downsampling):
            mult = 2**i
            model += [
                nn.Conv2d(ngf * mult,
                          ngf * mult * 2,
                          kernel_size=3,
                          stride=2,
                          padding=1,
                          bias=use_bias),
                self.norm_layer(ngf * mult * 2),
                nn.ReLU(True)
            ]
        mult = 2**n_downsampling

        for i in range(int(config['ResNetForGenerator settings']['nBlocks'])):
            model += [ResnetBlock(ngf * mult, config)]

        for i in range(n_downsampling):
            mult = 2**(n_downsampling - i)
            model += [
                nn.ConvTranspose2d(ngf * mult,
                                   int(ngf * mult / 2),
                                   kernel_size=3,
                                   stride=2,
                                   padding=1,
                                   output_padding=1,
                                   bias=use_bias),
                self.norm_layer(int(ngf * mult / 2)),
                nn.ReLU(True)
            ]

        model += [
            self.pad_factory.create(
                config['ResNetForGenerator settings']['paddingType'])(7)
        ]
        model += [
            nn.Conv2d(ngf,
                      ngf * 2,
                      kernel_size=(5, 1),
                      padding=0,
                      stride=(2, 2))
        ]
        model += [
            nn.Conv2d(ngf * 2,
                      ngf * 4,
                      kernel_size=(13, 1),
                      padding=0,
                      stride=(2, 2))
        ]
        model += [
            nn.Conv2d(ngf * 4,
                      ngf * 8,
                      kernel_size=(13, 7),
                      padding=0,
                      stride=(2, 1))
        ]
        model += [
            nn.Conv2d(ngf * 8,
                      ngf * 12,
                      kernel_size=(13, 15),
                      padding=0,
                      stride=(2, 1))
        ]
        #model += [nn.Conv2d(ngf*12, ngf*12, kernel_size=(3, 3), padding=0, stride=(2,2))]
        model += [nn.Conv2d(ngf * 12, 1, kernel_size=(23, 5), padding=0)]
        #model += [nn.Tanh()]
        #model += [nn.Sigmoid()]

        self.model = nn.Sequential(*model)
        self.act = nn.Sigmoid()