Ejemplo n.º 1
0
 def inference(input_tensor, phase):
     """
     feed forward
     :param input_tensor:
     :param phase:
     :return:
     """
     encoder = vgg_encoder.VGG16Encoder(phase=phase)
     with tf.variable_scope('inference'):
         encode_ret = encoder.encode(input_tensor=input_tensor)
     decode_logits = encode_ret['prob_output']    
     binary_seg_ret = tf.nn.softmax(logits=decode_logits)
     prob_list = []
     kernel = tf.get_variable('kernel', [9, 9, 1, 1], initializer=tf.constant_initializer(1.0/81), trainable=False)
     with tf.variable_scope("convs_smooth"):
         prob_smooth = tf.nn.conv2d(tf.cast(tf.expand_dims(binary_seg_ret[:, :, :, 0], axis=3), tf.float32), kernel, [1, 1, 1, 1], 'SAME')
         prob_list.append(prob_smooth)
     for cnt in range(1, binary_seg_ret.get_shape().as_list()[3]):
         with tf.variable_scope("convs_smooth", reuse=True):
             prob_smooth = tf.nn.conv2d(tf.cast(tf.expand_dims(binary_seg_ret[:, :, :, cnt], axis=3), tf.float32), kernel, [1, 1, 1, 1], 'SAME')
             prob_list.append(prob_smooth)
     processed_prob = tf.stack(prob_list, axis=4)
     processed_prob = tf.squeeze(processed_prob)
     binary_seg_ret = processed_prob
     # Predict lane existence:
     existence_logit = encode_ret['existence_output']
     existence_output = tf.nn.sigmoid(existence_logit)
     encode_ret['prob_output'] = binary_seg_ret
     encode_ret['existence_output'] = existence_output
     return encode_ret
Ejemplo n.º 2
0
    def __init__(self, phase, net_flag='vgg'):
        """

        """
        super(LaneNet, self).__init__()
        self._net_flag = net_flag
        self._phase = phase
        self._encoder = vgg_encoder.VGG16Encoder(phase=phase)
        return
 def inference(input_tensor, phase):
     """
     feed forward
     :param input_tensor:
     :param phase:
     :return:
     """
     encoder = vgg_encoder.VGG16Encoder(phase=phase)
     encode_ret = encoder.encode(input_tensor=input_tensor)
     return encode_ret
Ejemplo n.º 4
0
    def inference(input_tensor, phase, name):
        """
        feed forward
        :param name:
        :param input_tensor:
        :param phase:
        :return:
        """
        with tf.variable_scope(name):
            with tf.variable_scope('inference'):
                encoder = vgg_encoder.VGG16Encoder(phase=phase)
                encode_ret = encoder.encode(input_tensor=input_tensor,
                                            name='encode')

            return encode_ret
    def __init__(self, phase, net_flag='vgg'):
        """

        """
        super(LaneNet, self).__init__()
        self._net_flag = net_flag
        self._phase = phase
        if self._net_flag == 'vgg':
            self._encoder = vgg_encoder.VGG16Encoder(phase=phase)
        elif self._net_flag == 'dense':
            self._encoder = dense_encoder.DenseEncoder(l=20, growthrate=8,
                                                       with_bc=True,
                                                       phase=self._phase,
                                                       n=5)
        return
 def __init__(self, phase, net_flag='shuffle'):
     """
     """
     super(ShuffleNetBinarySeg, self).__init__()
     self._net_flag = net_flag
     self._phase = phase
     if self._net_flag == 'vgg':
         self._encoder = vgg_encoder.VGG16Encoder(phase=phase)
     elif self._net_flag == 'dense':
         self._encoder = dense_encoder.DenseEncoder(l=20, growthrate=8,
                                                    with_bc=True,
                                                    phase=self._phase,
                                                    n=5)
     elif self._net_flag == 'shuffle':
         self._encoder = shuffle_encoder.ShuffleEncoder(phase=phase)
     self._decoder = fcn_decoder.FCNDecoder(phase=phase)
     return
Ejemplo n.º 7
0
    def __init__(self, phase, net_flag='vgg'):
        """

        :param phase:
        :param net_flag:
        """
        super(LaneNetBinarySeg, self).__init__()
        self._phase = phase
        self._net_flag = net_flag
        if net_flag == 'vgg':
            self._encoder = vgg_encoder.VGG16Encoder(phase=phase)
        elif net_flag == 'dense':
            self._encoder = dense_encoder.DenseEncoder(phase=phase,
                                                       L=20,
                                                       N=5,
                                                       growth_rate=8,
                                                       with_bc=True)
        self._decoder = fcn_decoder.FCNDecoder()
Ejemplo n.º 8
0
    def __init__(self, phase, net_flag='vgg'):
        """

        """
        super(LaneNet, self).__init__()
        self._net_flag = net_flag
        self._phase = phase
        if self._net_flag == 'vgg':
		    # 使用基于VGG16的特征编码类
            self._encoder = vgg_encoder.VGG16Encoder(phase=phase)
        elif self._net_flag == 'dense':
            self._encoder = dense_encoder.DenseEncoder(l=20, growthrate=8,
                                                       with_bc=True,
                                                       phase=phase,
                                                       n=5)
        # 确定使用一全卷积网络解码类
        self._decoder = fcn_decoder.FCNDecoder(phase=phase)
        return
    def __init__(self, phase, net_flag='resnet'):
        """

        """
        super(LaneNet, self).__init__()
        self._net_flag = net_flag
        self._phase = phase
        if self._net_flag == 'vgg':
            self._encoder = vgg_encoder.VGG16Encoder(phase=phase)
        elif self._net_flag == 'resnet':
            self._encoder = resnet2_encoder.RESNETEncoder(phase=phase)
        elif self._net_flag == 'dense':
            self._encoder = dense_encoder.DenseEncoder(l=20, growthrate=8,
                                                       with_bc=True,
                                                       phase=self._phase,
                                                       n=5)
        self._decoder = myfcn_decoder.FCNDecoder()
        return
Ejemplo n.º 10
0
 def __init__(self, phase, net_flag='vgg'):
     """
     Init for LaneNet class
     """
     super(LaneNet, self).__init__()
     self._net_flag = net_flag
     self._phase = phase
     if self._net_flag.lower() == 'vgg':
         self._encoder = vgg_encoder.VGG16Encoder(phase=phase)
     elif self._net_flag.lower() == 'dense':
         self._encoder = dense_encoder.DenseEncoder(l=20, growthrate=8,
                                                    with_bc=True,
                                                    phase=phase,
                                                    n=5)
     elif self._net_flag.lower() == 'enet':
         # Need not encoder and decoder for enet.
         return
     self._decoder = fcn_decoder.FCNDecoder(phase=phase)
     return
Ejemplo n.º 11
0
    def __init__(self, phase, net_flag='vgg'):
        """

        """
        super(LaneNet, self).__init__()
        self._net_flag = net_flag
        self._phase = phase

        self._add_coord = coord_conv.AddCoords(CFG.TRAIN.IMG_HEIGHT,
                                               CFG.TRAIN.IMG_WIDTH, False)

        if self._net_flag == 'vgg':
            self._encoder = vgg_encoder.VGG16Encoder(phase=phase)
        elif self._net_flag == 'dense':
            self._encoder = dense_encoder.DenseEncoder(l=20,
                                                       growthrate=8,
                                                       with_bc=True,
                                                       phase=phase,
                                                       n=5)
        elif self._net_flag == 'mobile':
            self._encoder = mobile_encoder.MobielnetV2Encoder(phase=phase)
        self._decoder = fcn_decoder.FCNDecoder(phase=phase)

        return
Ejemplo n.º 12
0
                score = fused

            deconv_final = self.deconv2d(inputdata=score, out_channel=64, kernel_size=16,
                                         stride=8, use_bias=False, name='deconv_final')

            score_final = self.conv2d(inputdata=deconv_final, out_channel=2,
                                      kernel_size=1, use_bias=False, name='score_final')

            ret['logits'] = score_final
            ret['deconv'] = deconv_final

        return ret


if __name__ == '__main__':

    vgg_encoder = vgg_encoder.VGG16Encoder(phase=tf.constant('train', tf.string))
    dense_encoder = dense_encoder.DenseEncoder(l=40, growthrate=12,
                                               with_bc=True, phase='train', n=5)
    decoder = FCNDecoder(phase='train')

    in_tensor = tf.placeholder(dtype=tf.float32, shape=[None, 256, 512, 3],
                               name='input')

    vgg_encode_ret = vgg_encoder.encode(in_tensor, name='vgg_encoder')
    dense_encode_ret = dense_encoder.encode(in_tensor, name='dense_encoder')
    decode_ret = decoder.decode(vgg_encode_ret, name='decoder',
                                decode_layer_list=['pool5',
                                                   'pool4',
                                                   'pool3'])