def loss_sirmse_DepthNorm(truth,
                          pred,
                          mindepth=args.mindepth,
                          maxdepth=args.maxdepth):
    truth = DepthNorm(truth, maxdepth)
    one_shape = tf.ones_like(truth, dtype=tf.float32)
    zero_shape = tf.zeros_like(truth, dtype=tf.float32)
    thresh = tf.constant(mindepth, dtype=tf.float32)
    mask = tf.where(tf.greater(truth, thresh), one_shape, zero_shape)
    num_pixels = K.cast(K.sum(mask), tf.float32)
    # pred = pred * 1000
    pred = DepthNorm(pred, maxdepth)
    pred = tf.clip_by_value(pred, mindepth, maxdepth)
    log_diff = tf.math.multiply((tf.math.log(pred) - tf.math.log(truth)), mask)
    loss_si_rmse = K.sqrt(
        K.sum(K.square(log_diff)) / num_pixels -
        K.square(K.sum(log_diff)) / K.square(num_pixels))
    return loss_si_rmse
def loss_rmse_DepthNorm(truth,
                        pred,
                        mindepth=args.mindepth,
                        maxdepth=args.maxdepth):
    truth = DepthNorm(truth, maxdepth)
    one_shape = tf.ones_like(truth, dtype=tf.float32)
    zero_shape = tf.zeros_like(truth, dtype=tf.float32)
    thresh = tf.constant(mindepth, dtype=tf.float32)
    mask = tf.where(tf.greater(truth, thresh), one_shape, zero_shape)
    num_pixels = K.cast(K.sum(mask), tf.float32)
    # pred = pred * 1000
    pred = DepthNorm(pred, maxdepth)
    pred = tf.clip_by_value(pred, mindepth, maxdepth)
    diff = tf.math.multiply(
        pred - truth,
        mask) / 1000.0  # mapping the distance from millimeters to meters

    loss_mse = K.sum(K.square(diff)) / num_pixels
    loss_rmse = K.sqrt(loss_mse)
    return loss_rmse
Example #3
0
 def load_label(self, label_path):
     label = np.asarray(Image.open(label_path)).astype(np.float32).reshape(
         *self.image_shape, 1)
     if self.select_label_mode == "baseline1":
         label = np.where(label == 0.0, self.max_depth, label)
         label = np.clip(label, self.min_depth, self.max_depth)
     elif self.select_label_mode == "baseline":
         label = np.clip(label, self.min_depth, self.max_depth)
     elif self.select_label_mode == "Norm1":
         label = np.where(label == 0.0, self.max_depth, label)
         label = np.clip(label, self.min_depth, self.max_depth)
         label = DepthNorm(label, self.max_depth)
     elif self.select_label_mode == "Norm":
         label = np.clip(label, self.min_depth, self.max_depth)
         label = DepthNorm(label, self.max_depth)
     elif self.select_label_mode == "log":
         label = np.clip(label, self.min_depth, self.max_depth)
         label = np.log(label)
     elif self.select_label_mode == "log1":
         label = np.where(label == 0.0, self.max_depth, label)
         label = np.clip(label, self.min_depth, self.max_depth)
         label = np.log(label)
     return label