Example #1
0
 def __init__(self, params, num_gpu):
     super(LMDBDataUnit, self).__init__(params, num_gpu)
     if params.include[0].phase == Phase.Value('TRAIN'):
         self.dp = LMDBDataProvider(params.data_param, params.transform_param, num_gpu)
     else:
         self.dp = LMDBDataProvider(params.data_param, params.transform_param, 1)
     self.params = params
     self.crop_size = params.transform_param.crop_size
     self.generator = None
Example #2
0
class LMDBDataUnit(DataUnit):
    ''' DataUnit load from LMDB.

    :ivar caffe.LayerParameter params: lmdb data layer param defined by Caffe, params.data_param contains information about data source, parmas.transform_param mainly defines data augmentation operations
    
    '''
    def __init__(self, params, num_gpu):
        super(LMDBDataUnit, self).__init__(params, num_gpu)
        if params.include[0].phase == Phase.Value('TRAIN'):
            self.dp = LMDBDataProvider(params.data_param,
                                       params.transform_param, num_gpu)
        else:
            self.dp = LMDBDataProvider(params.data_param,
                                       params.transform_param, 1)
        self.params = params
        self.crop_size = params.transform_param.crop_size
        self.generator = None

    def compute_size(self, from_btm, to_top):
        self.out_shape = [
            self.params.transform_param.crop_size,
            self.params.transform_param.crop_size, 3, 1
        ]
        to_top[self.top_names[0]] = self.out_shape[:]

    def forward(self, from_btm, to_top, phase):
        ''' Feed-forward operation may vary according to phase. 

        .. note::

            LMDB data provider now support multi-view testing, if phase is "MULTI_VIEW", it will produce concequtive 10 batches of different views of the same original image     
        '''
        if self.generator == None:
            if phase == 'TRAIN' or phase == 'TEST':
                self.generator = self.dp.get_mb(phase)
            #multiview test
            else:
                self.generator = self.dp.get_multiview_mb()
        while True:
            try:
                (samples, labels) = next(self.generator)
                if len(labels) == 0:
                    (samples, labels) = next(self.generator)
            except StopIteration:
                print 'Have scanned the whole dataset; start from the begginning agin'
                self.generator = self.dp.get_mb(phase)
                continue
            break
        to_top[self.top_names[0]] = owl.from_numpy(samples).reshape(
            [self.crop_size, self.crop_size, 3, samples.shape[0]])
        for i in range(1, len(self.top_names)):
            to_top[self.top_names[i]] = labels[:, i - 1]

    def __str__(self):
        return 'lmdb_data'
Example #3
0
class LMDBDataUnit(DataUnit):
    ''' DataUnit load from LMDB.

    :ivar caffe.LayerParameter params: lmdb data layer param defined by Caffe, params.data_param contains information about data source, parmas.transform_param mainly defines data augmentation operations
    
    '''
    
    
    def __init__(self, params, num_gpu):
        super(LMDBDataUnit, self).__init__(params, num_gpu)
        if params.include[0].phase == Phase.Value('TRAIN'):
            self.dp = LMDBDataProvider(params.data_param, params.transform_param, num_gpu)
        else:
            self.dp = LMDBDataProvider(params.data_param, params.transform_param, 1)
        self.params = params
        self.crop_size = params.transform_param.crop_size
        self.generator = None

    def compute_size(self, from_btm, to_top):
        self.out_shape = [self.params.transform_param.crop_size,
                          self.params.transform_param.crop_size,
                          3, 1]
        to_top[self.top_names[0]] = self.out_shape[:]
   
    def forward(self, from_btm, to_top, phase):
        ''' Feed-forward operation may vary according to phase. 

        .. note::

            LMDB data provider now support multi-view testing, if phase is "MULTI_VIEW", it will produce concequtive 10 batches of different views of the same original image     
        '''
        if self.generator == None:
            if phase == 'TRAIN' or phase == 'TEST':
                self.generator = self.dp.get_mb(phase)
            #multiview test
            else:
                self.generator = self.dp.get_multiview_mb()
        while True:
            try:
                (samples, labels) = next(self.generator)
                if len(labels) == 0:
                    (samples, labels) = next(self.generator)
            except StopIteration:
                print 'Have scanned the whole dataset; start from the begginning agin'
                self.generator = self.dp.get_mb(phase)
                continue
            break
        to_top[self.top_names[0]] = owl.from_numpy(samples).reshape(
                [self.crop_size, self.crop_size, 3, samples.shape[0]])
        for i in range (1, len(self.top_names)):
            to_top[self.top_names[i]] = labels[:,i - 1]

    def __str__(self):
        return 'lmdb_data'
Example #4
0
 def __init__(self, params, num_gpu):
     super(LMDBDataUnit, self).__init__(params, num_gpu)
     if params.include[0].phase == Phase.Value('TRAIN'):
         self.dp = LMDBDataProvider(params.data_param,
                                    params.transform_param, num_gpu)
     else:
         self.dp = LMDBDataProvider(params.data_param,
                                    params.transform_param, 1)
     self.params = params
     self.crop_size = params.transform_param.crop_size
     self.generator = None
Example #5
0
class LMDBDataUnit(DataUnit):
    def __init__(self, params, num_gpu):
        super(LMDBDataUnit, self).__init__(params, num_gpu)
        if params.include[0].phase == Phase.Value('TRAIN'):
            self.dp = LMDBDataProvider(params.data_param, params.transform_param, num_gpu)
        else:
            self.dp = LMDBDataProvider(params.data_param, params.transform_param, 1)
        self.params = params
        self.crop_size = params.transform_param.crop_size
        self.generator = None

    def init_layer_size(self, from_btm, to_top):
        self.out_shape = [self.params.transform_param.crop_size,
                          self.params.transform_param.crop_size,
                          3, 1]
        to_top[self.top_names[0]] = self.out_shape[:]
   
    def forward(self, from_btm, to_top, phase):
        if self.generator == None:
            if phase == 'TRAIN' or phase == 'TEST':
                self.generator = self.dp.get_mb(phase)
            #multiview test
            else:
                self.generator = self.dp.get_multiview_mb()

        while True:
            try:
                (samples, labels) = next(self.generator)
                if len(labels) == 0:
                    (samples, labels) = next(self.generator)
            except StopIteration:
                print 'Have scanned the whole dataset; start from the begginning agin'
                self.generator = self.dp.get_mb(phase)
                continue
            break
        to_top[self.top_names[0]] = owl.from_numpy(samples).reshape(
                [self.crop_size, self.crop_size, 3, samples.shape[0]])
        for i in range (1, len(self.top_names)):
            to_top[self.top_names[i]] = labels[:,i - 1]

    def __str__(self):
        return 'lmdb_data'
Example #6
0
class LMDBDataUnit(DataUnit):
    ''' DataUnit load from LMDB.

    :ivar caffe.LayerParameter params: lmdb data layer param defined by Caffe, params.data_param contains information about data source, parmas.transform_param mainly defines data augmentation operations
    
    '''
    
    
    def __init__(self, params, num_gpu):
        super(LMDBDataUnit, self).__init__(params, num_gpu)
        if params.include[0].phase == Phase.Value('TRAIN'):
            self.dp = LMDBDataProvider(params.data_param, params.transform_param, num_gpu)
        else:
            self.dp = LMDBDataProvider(params.data_param, params.transform_param, 1)
        self.params = params
        self.crop_size = params.transform_param.crop_size
        self.generator = None
        self.out = None
        self.multiview = False

    def compute_size(self, from_btm, to_top):
        self.out_shape = [self.params.transform_param.crop_size,
                          self.params.transform_param.crop_size,
                          3, 1]
        to_top[self.top_names[0]] = dict()
        to_top[self.top_names[0]]['out_shape'] = self.out_shape[:]
        to_top[self.top_names[0]]['rec_on_ori'] = 1
        to_top[self.top_names[0]]['stride_on_ori'] = 1 
        to_top[self.top_names[0]]['start_on_ori'] = 0
        self.rec_on_ori = 1
        self.stride_on_ori = 1
        self.start_on_ori = 0

   
    def forward(self, from_btm, to_top, phase):
        ''' Feed-forward operation may vary according to phase. 

        .. note::

            LMDB data provider now support multi-view testing, if multiview == True, it will produce concequtive 10 batches of different views of the same original image     
        '''
        if self.generator == None:
            if self.multiview == False:
                self.generator = self.dp.get_mb(phase)
            #multiview test
            else:
                self.generator = self.dp.get_multiview_mb()
        while True:
            try:
                (samples, labels) = next(self.generator)
                if len(labels) == 0:
                    (samples, labels) = next(self.generator)
            except StopIteration:
                print 'Have scanned the whole dataset; start from the begginning agin'
                if self.multiview == False:
                    self.generator = self.dp.get_mb(phase)
                #multiview test
                else:
                    self.generator = self.dp.get_multiview_mb()
                continue
            break
        #TODO(Jesse Lovitt): Change this 256 to a division by 256/max-fixed-point-value
        to_top[self.top_names[0]] = owl.from_numpy(np.divide(samples,256)).reshape(
                [self.crop_size, self.crop_size, 3, samples.shape[0]])
        for i in range (1, len(self.top_names)):
            to_top[self.top_names[i]] = labels[:,i - 1]
        #to_top[self.top_names[0]] = owl.zeros([self.crop_size, self.crop_size, 3, 256])
        #for i in range (1, len(self.top_names)):
            #to_top[self.top_names[i]] = np.ones(256)
        self.out = to_top[self.top_names[0]]

    def __str__(self):
        return 'lmdb_data'