整网数据比对前,需要先检查并去除训练脚本内部使用到的随机处理,避免由于输入数据不一致导致数据比对结果不可用。
修改训练脚本,去除使用到的随机处理:
# 此处给出一些典型示例,需要根据自己的脚本进行排查 # 1. 对输入数据做shuffle操作 dataset = tf.data.TFRecordDataset(tf_data) dataset = dataset.shuffle(batch_size*10) # 直接注释掉该行 # 2. 使用dropout net = slim.dropout(net, keep_prob=dropout_keep_prob, scope='Dropout_1b') # 建议注释该行 # 3. 图像预处理使用随机的操作(根据实际情况注释,或者替换成其他固定的预处理操作) # Random rotate random_angle = tf.random_uniform([], - self.degree * 3.141592 / 180, self.degree * 3.141592 / 180) image = tf.contrib.image.rotate(image, random_angle, interpolation='BILINEAR') depth_gt = tf.contrib.image.rotate(depth_gt, random_angle, interpolation='NEAREST') # Random flipping do_flip = tf.random_uniform([], 0, 1) image = tf.cond(do_flip > 0.5, lambda: tf.image.flip_left_right(image), lambda: image) depth_gt = tf.cond(do_flip > 0.5, lambda: tf.image.flip_left_right(depth_gt), lambda: depth_gt) # Random crop mage_depth = tf.concat([image, depth_gt], 2) image_depth_cropped = tf.random_crop(image_depth, [self.params.height, self.params.width, 4]) # 其他......
修改完训练脚本后,有两种检查方法,验证所有的随机处理是否已经规避掉:
PrecisionTool > vc -lt /path/left -rt /path/right
PrecisionTool > vcs