4 Copyright (c) 2019-present NAVER Corp. 
    8 from __future__ 
import absolute_import
 
   12 import torch.nn.functional 
as F
 
   14 from craft.basenet.vgg16_bn 
import init_weights
 
   15 from craft.basenet.vgg16_bn 
import vgg16_bn
 
   22             nn.Conv2d(in_ch + mid_ch, mid_ch, kernel_size=1),
 
   23             nn.BatchNorm2d(mid_ch),
 
   24             nn.ReLU(inplace=
True),
 
   25             nn.Conv2d(mid_ch, out_ch, kernel_size=3, padding=1),
 
   26             nn.BatchNorm2d(out_ch),
 
   36     def __init__(self, pretrained=False, freeze=False):
 
   50             nn.Conv2d(32, 32, kernel_size=3, padding=1), nn.ReLU(inplace=
True),
 
   51             nn.Conv2d(32, 32, kernel_size=3, padding=1), nn.ReLU(inplace=
True),
 
   52             nn.Conv2d(32, 16, kernel_size=3, padding=1), nn.ReLU(inplace=
True),
 
   53             nn.Conv2d(16, 16, kernel_size=1), nn.ReLU(inplace=
True),
 
   54             nn.Conv2d(16, num_class, kernel_size=1),
 
   70         y = torch.cat([sources[0], sources[1]], dim=1)
 
   75             size=sources[2].size()[
 
   79         y = torch.cat([y, sources[2]], dim=1)
 
   84             size=sources[3].size()[
 
   88         y = torch.cat([y, sources[3]], dim=1)
 
   93             size=sources[4].size()[
 
   97         y = torch.cat([y, sources[4]], dim=1)
 
  102         return y.permute(0, 2, 3, 1), feature
 
  105 if __name__ == 
'__main__':
 
  106     model = 
CRAFT(pretrained=
True).cuda()
 
  107     output, _ = 
model(torch.randn(1, 3, 768, 768).cuda())