Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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()
Example #5
0
    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)