J'ai besoin d'utiliser le SSIM de Sewar comme fonction de perte afin de comparer les images pour mon modèle.
J'obtiens des erreurs lorsque j'essaie de compiler mon modèle. J'importe la fonction et compile le modèle comme ceci :
from sewar.full_ref import ssim
...
model.compile('ssim', optimizer=my_optimizer, metrics=[ssim])
et je reçois ça :
File "/media/merry/merry32/train.py", line 19, in train
model.compile(loss='ssim', optimizer=opt, metrics=[ssim])
File "/home/merry/anaconda3/envs/merry_env/lib/python3.7/site-packages/keras/engine/training.py", line 451, in compile
handle_metrics(output_metrics)
File "/home/merry/anaconda3/envs/merry_env/lib/python3.7/site-packages/keras/engine/training.py", line 420, in handle_metrics
mask=masks[i])
File "/home/merry/anaconda3/envs/merry_env/lib/python3.7/site-packages/keras/engine/training_utils.py", line 404, in weighted
score_array = fn(y_true, y_pred)
File "/home/merry/anaconda3/envs/merry_env/lib/python3.7/site-packages/sewar/full_ref.py", line 143, in ssim
MAX = np.iinfo(GT.dtype).max
File "/home/merry/anaconda3/envs/merry_env/lib/python3.7/site-packages/numpy/core/getlimits.py", line 506, in __init__
raise ValueError("Invalid integer data type %r." % (self.kind,))
ValueError: Invalid integer data type 'O'.
Je pourrais aussi écrire quelque chose comme ça :
model.compile(ssim(), optimizer=my_optimizer, metrics=[ssim()])
Mais ensuite j'obtiens cette erreur (évidemment) :
TypeError: ssim() missing 2 required positional arguments: 'GT' and 'P'
Je voulais juste faire la même chose que je faisais avec mean_sqeared_error mais avec SSIM, comme ceci (qui fonctionne parfaitement sans avoir besoin de lui passer des paramètres) :
model.compile('mean_squared_error', optimizer=my_optimizer, metrics=['mse'])
Une idée sur la façon dont je dois utiliser cette fonction pour compiler ?