Fix DSSIM definition (#99)

* Fix DSSIM definition

Fix covariance definition:
https://github.com/fchollet/keras/issues/4292#issuecomment-306976842

* second fix

* fix PEP8 error
This commit is contained in:
Michael Oliver
2017-06-09 08:19:41 -07:00
committed by GitHub
parent 4f619fa686
commit 0182528dd2
+2 -3
View File
@@ -53,10 +53,9 @@ class DSSIMObjective():
var_true = K.var(patches_true, axis=-1)
var_pred = K.var(patches_pred, axis=-1)
# Get std dev
std_true = K.sqrt(var_true + KC.epsilon())
std_pred = K.sqrt(var_pred + KC.epsilon())
covar_true_pred = K.mean(patches_true * patches_pred, axis=-1) - u_true * u_pred
ssim = (2 * u_true * u_pred + self.c1) * (2 * std_pred * std_true + self.c2)
ssim = (2 * u_true * u_pred + self.c1) * (2 * covar_true_pred + self.c2)
denom = (K.square(u_true) + K.square(u_pred) + self.c1) * (var_pred + var_true + self.c2)
ssim /= denom # no need for clipping, c1 and c2 make the denom non-zero
return K.mean((1.0 - ssim) / 2.0)