Форум сайта python.su
Есть вот такой код который берет все изображения в папке и сравнивает все между собой.
from sentence_transformers import SentenceTransformer, util from PIL import Image import glob import os # Load the OpenAI CLIP Model print('Loading CLIP Model...') model = SentenceTransformer('clip-ViT-B-32') # Next we compute the embeddings # To encode an image, you can use the following code: # from PIL import Image # encoded_image = model.encode(Image.open(filepath)) image_names = list(glob.glob('./*.jpg')) print("Images:", len(image_names)) encoded_image = model.encode([Image.open(filepath) for filepath in image_names], batch_size=128, convert_to_tensor=True, show_progress_bar=True) # Now we run the clustering algorithm. This function compares images aganist # all other images and returns a list with the pairs that have the highest # cosine similarity score processed_images = util.paraphrase_mining_embeddings(encoded_image) NUM_SIMILAR_IMAGES = 10 # ================= # DUPLICATES # ================= print('Finding duplicate images...') # Filter list for duplicates. Results are triplets (score, image_id1, image_id2) and is scorted in decreasing order # A duplicate image will have a score of 1.00 # It may be 0.9999 due to lossy image compression (.jpg) duplicates = [image for image in processed_images if image[0] >= 0.999] # Output the top X duplicate images for score, image_id1, image_id2 in duplicates[0:NUM_SIMILAR_IMAGES]: print("\nScore: {:.3f}%".format(score * 100)) print(image_names[image_id1]) print(image_names[image_id2]) # ================= # NEAR DUPLICATES # ================= print('Finding near duplicate images...') # Use a threshold parameter to identify two images as similar. By setting the threshold lower, # you will get larger clusters which have less similar images in it. Threshold 0 - 1.00 # A threshold of 1.00 means the two images are exactly the same. Since we are finding near # duplicate images, we can set it at 0.99 or any number 0 < X < 1.00. threshold = 0.99 near_duplicates = [image for image in processed_images if image[0] < threshold] for score, image_id1, image_id2 in near_duplicates[0:NUM_SIMILAR_IMAGES]: print("\nScore: {:.3f}%".format(score * 100)) print(image_names[image_id1]) print(image_names[image_id2])
filename = "massiv_img.txt" # Открываем файл для чтения with open(filename, "r") as f: # Считываем все строки из файла и сохраняем их в список image_names = [line.rstrip() for line in f]
query_image = Image.open('2323.jpg')
Офлайн
AnteFilНу, говнокод какой-то есть.
Есть вот такой код
AnteFilПонятно.
Мои познания не очень по этому я только с помощью гугл пишу.
AnteFilНагуглить что?
Дальше не могу ни чего на гуглить
AnteFilТы сначала сформулируй задачу конкретно. Только после того, как задача поставлена точно, можно приступать к её решению.
Мне нужно что бы один файл сравнивался со всеми остальными.
AnteFilХорошо. Продолжайте вести наблюдение в гугле.
я только с помощью гугл пишу
Отредактировано py.user.next (Май 7, 2023 14:35:12)
Офлайн
py.user.nextЭтот код берёт из папки все картинки и сравнивает друг с другом их, а мне нужно одну картинку со всеми сравнить. Тобиш в цикле перебрать все картинки и картинку1 с картинкой 2,3,4 и тд
Офлайн
Вот здесь затуп я хз как ещё обьяснить. Должно быть так.
Картинка №1 сравнивается с Картинкой №2 итог сходство 10%
Картинка №1 сравнивается с Картинкой №3 итог сходство 10%
Картинка №1 сравнивается с Картинкой №4 итог сходство 10%
Картинка №1 сравнивается с Картинкой №5 итог сходство 10%
Картинка №1 сравнивается с Картинкой №6 итог сходство 10%
………….
Вот так должно быть
Офлайн
выложи 5 картинок сюда с которыми работаешь
Офлайн
AnteFilКак ты понял, что этот код работает вообще и работает правильно? Я вот об этом говорю.
Этот код берёт из папки все картинки и сравнивает друг с другом их
AnteFilСложно что-либо посоветовать тебе, это надо за тебя писать всё, ты же сам только в Гугле ищешь и всё.
Вот здесь затуп я хз как ещё обьяснить. Должно быть так.
Картинка №1 сравнивается с Картинкой №2 итог сходство 10%
Картинка №1 сравнивается с Картинкой №3 итог сходство 10%
Отредактировано py.user.next (Май 8, 2023 01:24:41)
Офлайн
xam1816https://yandex.ru/images/search?from=tabbar&lr=1091&text=%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B8
выложи сюда с которыми работаешь
py.user.nextЯ работал с ним код рабочий
Как ты понял, что этот код работает вообще и работает правильно? Я вот об этом говорю.
Отредактировано AnteFil (Май 8, 2023 09:18:41)
Офлайн
Блин почему PYTHON такой трудный. Не понятно вообще где цикл где нет его. На php всё просто и понятно.
На php всё решаеться в две строчки
foreach ($array as $value) { // code to be executed for each $value }
Офлайн
Написал вот так
filename = "massiv_img.txt" # Открываем файл для чтения with open(filename, "r") as f: # Считываем все строки из файла и сохраняем их в список image_1 = [line.rstrip() for line in f] odin_image = Image.open('2323.jpg') for item in image_1: image_names = [odin_image, item] ncoded_image = model.encode([Image.open(filepath) for filepath in image_names], batch_size=128, convert_to_tensor=True, show_progress_bar=True) processed_images = util.paraphrase_mining_embeddings(ncoded_image) NUM_SIMILAR_IMAGES = 10 ........... дальше код ...........
File "img.py", line 28, in <module> ncoded_image = model.encode([Image.open(filepath) for filepath in image_names], batch_size=128, convert_to_tensor=True, show_progress_bar=True) File "img.py", line 28, in <listcomp> ncoded_image = model.encode([Image.open(filepath) for filepath in image_names], batch_size=128, convert_to_tensor=True, show_progress_bar=True) File "python3.7/site-packages/PIL/Image.py", line 3245, in open prefix = fp.read(16)
Офлайн
AnteFilПитон лучше, чем PHP.
Блин почему PYTHON такой трудный. Не понятно вообще где цикл где нет его. На php всё просто и понятно.
На php всё решаеться в две строчки
AnteFilТак ты пытаешься уже открытую картинку открыть снова.
Падает ошибка
AnteFilВот здесь тебе надо путь к картинке записать, а не открывание картинки. Может быть, тогда сработает, если ты говоришь, что код работает вообще.odin_image = Image.open('2323.jpg')
Отредактировано py.user.next (Май 8, 2023 12:07:43)
Офлайн