-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathloss.py
36 lines (28 loc) · 1.27 KB
/
loss.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import tensorflow.keras.backend as K
import tensorflow as tf
# def depth_loss_function(y_true, y_pred, theta=0.1, maxDepthVal=1000.0/10.0):
# # Point-wise depth
# l_depth = K.mean(K.abs(y_pred - y_true), axis=-1)
# # Edges
# dy_true, dx_true = tf.image.image_gradients(y_true)
# dy_pred, dx_pred = tf.image.image_gradients(y_pred)
# l_edges = K.mean(K.abs(dy_pred - dy_true) + K.abs(dx_pred - dx_true), axis=-1)
# # Structural similarity (SSIM) index
# l_ssim = K.clip((1 - tf.image.ssim(y_true, y_pred, maxDepthVal)) * 0.5, 0, 1)
# # Weights
# w1 = 1.0
# w2 = 1.0
# w3 = theta
# return (w1 * l_ssim) + (w2 * K.mean(l_edges)) + (w3 * K.mean(l_depth))
# import keras.backend as K
import tensorflow as tf
def depth_loss_function(y_true, y_pred, theta=0.1, maxDepthVal=1000.0/10.0):
l_depth = K.mean(K.abs(y_pred - y_true), axis=-1)
dy_true, dx_true = tf.image.image_gradients(y_true)
dy_pred, dx_pred = tf.image.image_gradients(y_pred)
l_edges = K.mean(K.abs(dy_pred - dy_true) + K.abs(dx_pred - dx_true), axis=-1)
l_ssim = K.clip((1 - tf.image.ssim_multiscale(y_true, y_pred, maxDepthVal)) * 0.5, 0, 1)
w1 = 1.0
w2 = 1.0
w3 = theta
return (w1 * l_ssim) + (w2 * K.mean(l_edges)) + (w3 * K.mean(l_depth))