3D numpy 配列として保存された 2 セットの画像があります。すべての画像は同じサイズ (28X28) です。compare_ssim を使用して、各セットの画像を相互に比較したいと思います。私は非常に遅い以下のコードを書きました。numpy.apply_along_axis を使用してベクトル化しようとしましたが、これは X.shape<>Y.shape エラーで失敗します。助言がありますか?
from skimage.measure import compare_ssim as ssim
def max_ssim(image,ref_images):
max_score = -1 #Minimum SSIM score possible is -1
for ref_image in ref_images:
score = ssim(image,ref_image)
if score > max_score:
max_score = score
return max_score
def overlap_between_sets(test_set, ref_set):
#return a vector for each row of the test set which
#contains the MAX SSIM Score found against ref_set
# SSIM scores range between -1 and 1 where 1 is identical.
overlap = np.ndarray(test_set.shape[0], dtype=np.float32)
for i, obs in enumerate(test_set):
overlap[i] = max_mse_vec(obs,ref_set)
return overlap
test_to_train_overlap = overlap_between_sets(test_dataset,train_dataset)