Ejemplo n.º 1
0
 def test_hash_distinct_images(self, hash_function):
     # Put in distinct images and check that hamming distance between hashes is large
     hash_im_1 = hash_function(PATH_SINGLE_IMAGE)
     hash_im_2 = hash_function(p.parent /
                               'data/mixed_images/ukbench09268.jpg')
     hamdist = Hashing.hamming_distance(hash_im_1, hash_im_2)
     assert hamdist > 20
Ejemplo n.º 2
0
 def test_hash_small_rotation(self, hash_function):
     # Rotate image slightly (1 degree) and check that hamming distance between hashes is not too large
     orig_image = Image.open(PATH_SINGLE_IMAGE)
     rotated_image = np.array(orig_image.rotate(1))
     hash_im_1 = hash_function(image_array=np.array(orig_image))
     hash_im_2 = hash_function(image_array=rotated_image)
     hamdist = Hashing.hamming_distance(hash_im_1, hash_im_2)
     assert hamdist < 3
Ejemplo n.º 3
0
def hasher():
    hashobj = Hashing()
    return hashobj
Ejemplo n.º 4
0
 def test_hash_resize(self, hash_function):
     # Resize one image to (300, 300) and check that hamming distance between hashes is not too large
     hash_im_1 = hash_function(PATH_SINGLE_IMAGE)
     hash_im_2 = hash_function(PATH_SINGLE_IMAGE_RESIZED)
     hamdist = Hashing.hamming_distance(hash_im_1, hash_im_2)
     assert hamdist < 3
Ejemplo n.º 5
0
import sys
import pytest
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

from imagededup.handlers.search.retrieval import (
    HashEval,
    cosine_similarity_chunk,
    get_cosine_similarity,
)
from imagededup.methods.hashing import Hashing

HAMMING_DISTANCE_FUNCTION = Hashing().hamming_distance


def test_cosine_similarity_chunk():
    X = np.random.rand(333, 100)
    start_idx = 10
    end_idx = 100

    input_tuple = (X, (start_idx, end_idx))

    result = cosine_similarity_chunk(input_tuple)

    np.testing.assert_array_almost_equal(
        result, cosine_similarity(X[start_idx:end_idx, :], X).astype('float16')
    )


def test_get_cosine_similarity():
    X = np.random.rand(333, 10)