def __init__(self, channels): super(YOLO_PRECONNECT, self).__init__() self.conv1 = utils.Conv2d(channels, 64, (3, 3), padding=1, pool=True, pool_size=(2, 4)) self.conv2 = utils.Conv2d(64, 128, (3, 3), padding=1, pool=True, pool_size=(2, 4)) self.conv3 = utils.Conv2d(128, 256, (3, 3), padding=1, pool=False) #self.conv4 = utils.Conv2d(256,512,(3,3),padding=1,pool=True,pool_size=(2,4)) #self.conv5 = utils.Conv2d(512,256,(1,1),pool=False) #self.conv6 = utils.Conv2d(256,512,(3,3),padding=1,pool=False) #self.conv7 = utils.Conv2d(512,256,(1,1),pool=False) self.conv8 = utils.Conv2d(256, 512, (3, 3), padding=1, pool=True, pool_size=(2, 4)) self.output_size = 512 self.reduction_factor = (2 * 2 * 2, 4 * 4 * 4)
def __init__(self, nChannels, nPoints, nCoords, nClasses): super(PointNet2d, self).__init__() self.input_trans = Transform2d(nPoints, nCoords, nChannels, 3, initial_reshape=True) self.conv64A = utils.Conv2d(nChannels, 64, (1, nCoords), pool=False) self.conv64B = utils.Conv2d(64, 64, (1, 1), pool=False) self.feature_trans = Transform2d(nPoints, 1, 64, 64) self.conv64C = utils.Conv2d(64, 64, (1, 1), pool=False) self.conv128 = utils.Conv2d(64, 128, (1, 1), pool=False) self.conv1024 = utils.Conv2d(128, 1024, (1, 1), pool=False) self.pool = torch.nn.MaxPool2d((nPoints, 1)) self.linear512 = utils.Linear(1024, 512) self.dropoutA = torch.nn.Dropout(0.7) self.linear256 = utils.Linear(512, 256) self.dropoutB = torch.nn.Dropout(0.7) self.linearID = utils.Linear(256, nClasses, bn=False, activation=None)
def __init__(self, channels): super(YOLO_POSTCONNECT, self).__init__() self.conv1 = utils.Conv2d(channels, 1024, (3, 3), padding=1, pool=False) self.conv2 = utils.Conv2d(1024, 512, (1, 1), pool=False) self.conv3 = utils.Conv2d(512, 1024, (3, 3), padding=1, pool=False) self.conv4 = utils.Conv2d(1024, 512, (1, 1), pool=False) self.conv5 = utils.Conv2d(512, 1024, (3, 3), padding=1, pool=False) self.output_size = 1024 self.reduction_factor = (1, 1)
def __init__(self, height, width, channels, K, initial_reshape=False): super(Transform2d, self).__init__() self.K = K self.initial_reshape = initial_reshape self.conv64 = utils.Conv2d(channels, 64, (1, width), pool=False) self.conv128 = utils.Conv2d(64, 128, (1, 1), pool=False) self.conv1024 = utils.Conv2d(128, 1024, (1, 1), pool=False) self.pool = torch.nn.MaxPool2d((height, 1)) self.linear512 = utils.Linear(1024, 512) self.linear256 = utils.Linear(512, 256) self.weights = torch.zeros(256, K * K, requires_grad=True) self.biases = torch.eye(K, requires_grad=True).flatten()
def __init__(self, config): super(YOLOClassOnly, self).__init__() img_shape = config['data_handling']['image_shape'] num_classes = len(config['data_handling']['classes']) self.pre_connect = YOLO_PRECONNECT(img_shape[0]) self.post_connect = YOLO_POSTCONNECT(self.pre_connect.output_size) self.conv_connect = utils.Conv2d(self.pre_connect.output_size + self.post_connect.output_size, 1024, (3, 3), padding=1, pool=False) self.feature_layer = utils.Conv2d(1024, 1 + num_classes, (3, 3), padding=1, pool=False) reduction_factor = (self.pre_connect.reduction_factor[0] * self.post_connect.reduction_factor[0], self.pre_connect.reduction_factor[1] * self.post_connect.reduction_factor[1]) gridh = img_shape[1] // reduction_factor[0] gridw = img_shape[2] // reduction_factor[1] self.output_grid = (gridh, gridw) logger.info('grid size = %s x %s', self.output_grid[0], self.output_grid[1]) if YOLOClassOnly.BCEWithLogitsLoss is None: pos_weight = torch.Tensor(gridh, gridw).fill_(gridh * gridw) YOLOClassOnly.BCEWithLogitsLoss = torch.nn.BCEWithLogitsLoss( pos_weight=pos_weight)