def process_example(self, tensors, mode='eval', thread_id=0):
train = (mode == 'train')
image, image_timestamp, camera_id = tensors[:3]
#FIXME push single/multi image handling into image_process_sdc if we want to share random augmentations
if self.num_input_images > 1:
assert(len(image.get_shape()) > 0)
print('Multi image', image.get_shape())
split_image = tf.unpack(image)
split_processed = []
for i, x in enumerate(split_image):
suffix = '%d' % i
xp, _ = image_preprocess_sdc(
x, camera_id,
height=self.height, width=self.width, image_fmt=self.image_fmt,
normalize=self.standardize_input, train=train, summary_suffix=suffix, thread_id=thread_id)
split_processed.append(xp)
processed_image = tf.pack(split_processed)
#FIXME need to sort out flip across mult-images
flip_coeff = tf.constant(1.0, dtype=tf.float32)
else:
print('Single image')
processed_image, flip_coeff = image_preprocess_sdc(
image, camera_id,
height=self.height, width=self.width, image_fmt=self.image_fmt,
normalize=self.standardize_input, train=train, thread_id=thread_id)
if mode != 'pred':
steering_angle, gps_coord = tensors[-2:]
if steering_angle is not None:
steering_angle = tf.mul(steering_angle, flip_coeff)
if self.standardize_labels:
steering_angle /= STEERING_STD
elif self.mu_law_steering:
print("Encode mu-law angles")
steering_angle = mu_law_steering_enc(steering_angle)
if gps_coord is not None and self.standardize_labels:
gps_coord = (gps_coord - GPS_MEAN) / GPS_STD
return processed_image, image_timestamp, steering_angle, gps_coord
else:
return processed_image, image_timestamp, tf.zeros((1,)), tf.zeros((2,))
评论列表
文章目录