diff --git a/__pycache__/pixr.cpython-312.pyc b/__pycache__/pixr.cpython-312.pyc new file mode 100644 index 0000000..d9d7427 Binary files /dev/null and b/__pycache__/pixr.cpython-312.pyc differ diff --git a/__pycache__/train.cpython-312.pyc b/__pycache__/train.cpython-312.pyc new file mode 100644 index 0000000..73b5ec2 Binary files /dev/null and b/__pycache__/train.cpython-312.pyc differ diff --git a/images/originals/Screenshot 2025-04-28 165134.png b/images/originals/Screenshot 2025-04-28 165134.png new file mode 100644 index 0000000..5a4f14a Binary files /dev/null and b/images/originals/Screenshot 2025-04-28 165134.png differ diff --git a/images/originals/Screenshot 2025-04-28 165150.png b/images/originals/Screenshot 2025-04-28 165150.png new file mode 100644 index 0000000..126f842 Binary files /dev/null and b/images/originals/Screenshot 2025-04-28 165150.png differ diff --git a/images/originals/Screenshot 2025-04-28 165224.png b/images/originals/Screenshot 2025-04-28 165224.png new file mode 100644 index 0000000..cd19237 Binary files /dev/null and b/images/originals/Screenshot 2025-04-28 165224.png differ diff --git a/images/originals/Screenshot 2025-04-28 165248.png b/images/originals/Screenshot 2025-04-28 165248.png new file mode 100644 index 0000000..67ead0a Binary files /dev/null and b/images/originals/Screenshot 2025-04-28 165248.png differ diff --git a/images/originals/Screenshot 2025-04-28 165301.png b/images/originals/Screenshot 2025-04-28 165301.png new file mode 100644 index 0000000..744d157 Binary files /dev/null and b/images/originals/Screenshot 2025-04-28 165301.png differ diff --git a/images/originals/Screenshot 2025-04-28 165326.png b/images/originals/Screenshot 2025-04-28 165326.png new file mode 100644 index 0000000..30a9557 Binary files /dev/null and b/images/originals/Screenshot 2025-04-28 165326.png differ diff --git a/images/originals/Screenshot 2025-04-28 165359.png b/images/originals/Screenshot 2025-04-28 165359.png new file mode 100644 index 0000000..bbb6e2e Binary files /dev/null and b/images/originals/Screenshot 2025-04-28 165359.png differ diff --git a/images/originals/Screenshot 2025-04-28 165411.png b/images/originals/Screenshot 2025-04-28 165411.png new file mode 100644 index 0000000..f2d88eb Binary files /dev/null and b/images/originals/Screenshot 2025-04-28 165411.png differ diff --git a/images/originals/Screenshot 2025-04-29 183730.png b/images/originals/Screenshot 2025-04-29 183730.png new file mode 100644 index 0000000..9e82401 Binary files /dev/null and b/images/originals/Screenshot 2025-04-29 183730.png differ diff --git a/images/originals/Screenshot 2025-04-29 191007.png b/images/originals/Screenshot 2025-04-29 191007.png new file mode 100644 index 0000000..219b23c Binary files /dev/null and b/images/originals/Screenshot 2025-04-29 191007.png differ diff --git a/images/test/meme.png b/images/test/meme.png new file mode 100644 index 0000000..9904089 Binary files /dev/null and b/images/test/meme.png differ diff --git a/images/test/meme1.png b/images/test/meme1.png new file mode 100644 index 0000000..46d05f8 Binary files /dev/null and b/images/test/meme1.png differ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..20b5bda --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +torch +torchvision +numpy +Pillow +scikit-learn diff --git a/test_images.py b/test_images.py new file mode 100644 index 0000000..9ecdff5 --- /dev/null +++ b/test_images.py @@ -0,0 +1,25 @@ +from sklearn.metrics.pairwise import cosine_similarity +from train import originals, names, get_embedding +import numpy as np + +def test_images(test_path,originals,names,threshold=0.88): + #originals, names = load_original_embeddings(original_folder) + test_emb = get_embedding(test_path) + sims = cosine_similarity(test_emb, originals)[0] + best_idx = np.argmax(sims) + best_score = sims[best_idx] + + print(f"Best match: {names[best_idx]}") + print(f"Similarity score: {best_score:.3f}") + + if best_score >= threshold: + print(" Match found !") + else: + print(" No match found.") + +test_images( + test_path=r"C:\\Users\\LENOVO\\Documents\\PROJECTS\\pixel-peep\\images\\test\\meme.png", + originals=originals, + names=names, + threshold=0.80 +) \ No newline at end of file diff --git a/train.py b/train.py new file mode 100644 index 0000000..445e62d --- /dev/null +++ b/train.py @@ -0,0 +1,66 @@ +import os +import torch +import numpy as np +from PIL import Image +from torchvision import models, transforms +#from sklearn.metrics.pairwise import cosine_similarity + + +resnet = models.resnet50(pretrained=True) +resnet = torch.nn.Sequential(*list(resnet.children())[:-1]) # Remove layer because it is not needed (last layers) only needs features//classifier +resnet.eval() + + +transform = transforms.Compose([ + transforms.Resize((224, 224)), + transforms.ToTensor(), + +]) + +def get_embedding(image_path): + image = Image.open(image_path).convert("RGB") + image = transform(image).unsqueeze(0) + with torch.no_grad(): + embedding = resnet(image).squeeze().numpy() + return embedding.reshape(1, -1) + + +def train_images(folder_path): + embeddings = [] + filenames = [] + for file in os.listdir(folder_path): + if file.lower().endswith((".jpg", ".png")): + path = os.path.join(folder_path, file) + emb = get_embedding(path) + embeddings.append(emb) + filenames.append(file) + return np.vstack(embeddings), filenames + +original_folder=r"C:\\Users\\LENOVO\\Documents\\PROJECTS\\pixel-peep\\images\\originals" +originals, names = train_images(original_folder) + +#never mind this part +''' +# Match test image to originals +def test_images(test_path,originals,names,threshold=0.88): + #originals, names = load_original_embeddings(original_folder) + test_emb = get_embedding(test_path) + sims = cosine_similarity(test_emb, originals)[0] + best_idx = np.argmax(sims) + best_score = sims[best_idx] + + print(f"Best match: {names[best_idx]}") + print(f"Similarity score: {best_score:.3f}") + + if best_score >= threshold: + print(" Match found !") + else: + print(" No match found.") +#original_folder=r"C:\\Users\\LENOVO\\Documents\\PROJECTS\\pixel-peep\\images\\originals" +#originals, names = load_original_embeddings(original_folder) +#test_images( + test_path=r"C:\\Users\\LENOVO\\Documents\\PROJECTS\\pixel-peep\\images\\test\\meme.png", + originals=originals, + names=names, + threshold=0.88 +#)''' \ No newline at end of file