3

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)
4

0 に答える 0