Provided inverse factors to retrieve original image sizes

Signed-off-by: Jim Martens <github@2martens.de>
This commit is contained in:
2019-05-14 12:56:20 +02:00
parent 10e9680727
commit d5d4f0fb11

View File

@ -265,10 +265,12 @@ def load_scenenet_val(photo_paths: Sequence[Sequence[str]],
bbox = instance['bbox'] bbox = instance['bbox']
labels.append([ labels.append([
cats_to_classes[instance['coco_id']], cats_to_classes[instance['coco_id']],
bbox[0], bbox[0], # x min
bbox[1], bbox[1], # y min
bbox[2], bbox[2], # x max
bbox[3] bbox[3], # y max
0.0, # inverse factor of image resizing in x axis
0.0 # inverse factor of image resizing in y axis
]) ])
len_labels = len(labels) len_labels = len(labels)
@ -278,7 +280,7 @@ def load_scenenet_val(photo_paths: Sequence[Sequence[str]],
final_image_paths.append(image_path) final_image_paths.append(image_path)
final_labels.append(labels) final_labels.append(labels)
empty_label = [[0, 0, 0, 0, 0]] empty_label = [[0, 0, 0, 0, 0, 0.0, 0.0]]
real_final_labels = [] real_final_labels = []
for labels in final_labels: for labels in final_labels:
_labels = labels[:] _labels = labels[:]
@ -328,19 +330,23 @@ def _load_images_ssd_callback(resized_shape: Sequence[int]) \
loaded images loaded images
""" """
_images = tf.map_fn(lambda path: tf.read_file(path), paths) _images = tf.map_fn(lambda path: tf.read_file(path), paths)
image_labels = tf.stack([_images, labels], axis=1)
def _get_images(image_data: tf.Tensor) -> List[tf.Tensor]: def _get_images(image_data: tf.Tensor,
_labels: Sequence[int]) -> Tuple[tf.Tensor, Sequence[int]]:
image = tf.image.decode_image(image_data, channels=3, dtype=tf.float32) image = tf.image.decode_image(image_data, channels=3, dtype=tf.float32)
image_shape = tf.shape(image) image_shape = tf.shape(image)
_labels[:, 5] = tf.cast(image_shape[0], dtype=tf.float32) / resized_shape[0]
_labels[:, 6] = tf.cast(image_shape[1], dtype=tf.float32) / resized_shape[1]
image = tf.reshape(image, [image_shape[0], image_shape[1], 3]) image = tf.reshape(image, [image_shape[0], image_shape[1], 3])
image_resized = tf.image.resize_images(image, [resized_shape[0], resized_shape[1]]) image_resized = tf.image.resize_images(image, [resized_shape[0], resized_shape[1]])
return image_resized return image_resized, _labels
processed = tf.map_fn(_get_images, _images, dtype=tf.float32) processed = tf.map_fn(_get_images, image_labels)
processed_images = tf.reshape(processed, [-1, resized_shape[0], resized_shape[1], 3]) processed_images = tf.reshape(processed[:, 0], [-1, resized_shape[0], resized_shape[1], 3])
return processed_images, labels return processed_images, processed[:, 1]
return _load_images_ssd return _load_images_ssd