def _get_data_tensor(self, dataset, batch_size, data_format): # 数据 provider = slim.dataset_data_provider.DatasetDataProvider( dataset, common_queue_capacity=20 * batch_size, common_queue_min=10 * batch_size, shuffle=True) # 提取数据 [image, labels, bboxes] = provider.get(['image', 'object/label', 'object/bbox']) # 数据预处理 image, labels, bboxes = ssd_vgg_preprocessing.preprocess_for_train( image, labels, bboxes, self.img_shape, data_format) # 编码label和boxes:Encode ground-truth labels and bboxes. classes, localisations, scores = self.ssd_net.bboxes_encode( labels, bboxes, self.ssd_anchors) # reshape_list:拉直 batch_tensors = self._reshape_list( [image, classes, localisations, scores]) r = tf.train.batch(batch_tensors, batch_size=batch_size, capacity=5 * batch_size) # reshape_list:变成原来的形状 return self._reshape_list(r, shape=[1] + [len(self.ssd_anchors)] * 3)
def __preprocess_data(self, image, labels, bboxes): out_shape = g_ssd_model.img_shape if self.is_training_data: image, labels, bboxes = preprocess_for_train(image, labels, bboxes, out_shape = out_shape) else: image, labels, bboxes, _ = preprocess_for_eval(image, labels, bboxes, out_shape = out_shape) return image, labels, bboxes