Я скормил нейросети архив фото за 10 лет...

Я скормил нейросети архив фото за 10 лет...

У каждого из нас есть это кладбище воспоминаний...

«Проблема: Цифровой Плюшкин»

...Я попробовал сортировать вручную. Меня хватило ровно на 15 минут

Мой цифровой ад до начала эксперимента: папки "ШУШТАЛЕП", "Беляши" и разные даты вперемешку
Мой цифровой ад до начала эксперимента: папки "ШУШТАЛЕП", "Беляши" и разные даты вперемешку

Танцы с бубном и 10 Гб боли

Попытка №1. «Я у мамы хакер» (Провал)

Я слышал, что на Python есть популярная библиотека face_recognition. Интернет говорил: «Это просто! Поставь одной командой и пользуйся».

Ага, конечно. Как только я ввел команду установки pip install face_recognition, мой Windows показал мне, кто в доме хозяин. Терминал выплюнул 40 строк кроваво-красного текста. Ошибка сборки dlib.

Я скормил нейросети архив фото за 10 лет...

Гугл объяснил: библиотека dlib, на которой всё держится, написана на C++. Чтобы она заработала, моему компьютеру нужны "инструменты сборки C++".

Решение? Скачать Visual Studio Build Tools от Microsoft. Я открыл установщик и обомлел. Мне предложили выкачать 10 Гигабайт софта. Ради одного маленького скрипта для сортировки фоток!

8 Гб компиляторов C++, чтобы просто запустить скрипт на Питоне. Серьезно?
8 Гб компиляторов C++, чтобы просто запустить скрипт на Питоне. Серьезно?

Я скрипнул зубами, поставил на закачку и пошел пить чай. Прошел час. Установка завершилась. Я перезагрузил компьютер, затаил дыхание и... снова получил ошибку.

По отдельности ничего не получалось. Я пробовал ставить готовые колеса (wheels), менял версии, читал форумы пятилетней давности. Я убил на это весь вечер. В какой-то момент хотелось просто удалить эту чертову папку с фотографиями вместе с Питоном.

(Продолжение): Спасение и Магия

Попытка №2. Смена тактики

Я выдохнул и решил: если старый инструмент не работает, ищем новый. Я пошел гуглить и наткнулся на библиотеку DeepFace.

Это современный «комбайн» на базе TensorFlow, который под капотом использует модели от Google и Facebook, но для пользователя выглядит как одна кнопка «Сделать хорошо».

Установка заняла одну строку: pip install deepface tf-keras

И, о чудо, никаких ошибок компиляции, никаких требований поставить половину софта Microsoft. Я почувствовал, что шанс есть.

Магия кода (30 строк, которые спасли выходные)

Я адаптировал скрипт. Логика у него как у фейс-контроля в клубе: берет моё «эталонное» фото, сравнивает с фото из кучи, и если похоже — копирует в нужную папку.

Самое интересное: для эталона я специально взял свою старую фотографию, сделанную больше 10 лет назад. Это был риск. Я сильно изменился, качество фото было так себе. Я был уверен, что ИИ затупит.

Заодно я настроил скрипт так, чтобы он создавал папки с понятными русскими именами.

Вот тот самый код (можете забирать себе):

import os import shutil from deepface import DeepFace # --- НАСТРОЙКИ --- # Папка, где лежит весь бардак input_folder = "ХАОС_ФОТО" # Папка, куда будем складывать порядок output_folder = "ИТОГ_Сортировки_AI" # Твое эталонное фото reference_image_path = "me.jpg" # --- ПОДГОТОВКА СТРУКТУРЫ ПАПОК --- # Создаем папки с понятными русскими именами folders_structure = { "found_me": os.path.join(output_folder, "Лицо_Дмитрий"), "others": os.path.join(output_folder, "Лицо_Другие"), } # Добавляем папки по годам for year in range(2010, 2026): folders_structure[str(year)] = os.path.join(output_folder, f"Дата_{year}") # Создаем эти папки физически for path in folders_structure.values(): os.makedirs(path, exist_ok=True) print(f"🚀 Начинаю магию... Ищу лицо с фото {reference_image_path}") print("⏳ ПРИМЕЧАНИЕ: При первом запуске скачиваются веса нейросети (ок. 200-500Мб). Жди!") # --- ОСНОВНОЙ ЦИКЛ --- files = os.listdir(input_folder) for filename in files: # Берем только картинки if not filename.lower().endswith(('.png', '.jpg', '.jpeg')): continue source_path = os.path.join(input_folder, filename) try: # 1. Сначала пробуем найти лицо # enforce_detection=False - чтобы не вылетал, если лиц нет result = DeepFace.verify( img1_path = reference_image_path, img2_path = source_path, model_name = "VGG-Face", enforce_detection = False ) if result["verified"] == True: print(f"✅ [ЭТО ОН!] На фото {filename} обнаружено сходство.") shutil.copy(source_path, os.path.join(folders_structure["found_me"], filename)) continue # Если нашли лицо, дальше не проверяем # 2. Если лица нет (или не то), сортируем по дате # Получаем год изменения файла timestamp = os.path.getmtime(source_path) from datetime import datetime year = str(datetime.fromtimestamp(timestamp).year) target_folder = folders_structure.get(year) if target_folder: print(f"📅 [Дата] Фото {filename} отправлено в папку {year}.") shutil.copy(source_path, os.path.join(target_folder, filename)) else: # Если год не попал в наш диапазон, кидаем в "Другие" print(f"❌ [Чужой/Старый] Фото {filename} отправлено в 'Другие'.") shutil.copy(source_path, os.path.join(folders_structure["others"], filename)) except Exception as e: print(f"⚠️ Ошибка с файлом {filename}: {e}") print("\n🎉 Готово! Проверяй папку ИТОГ_Сортировки_AI")

Момент истины Я запустил скрипт. Сначала побежали полоски загрузки — нейросеть скачивала свои «мозги» (веса моделей). Это выглядело масштабно. А потом... Началось.

Я скормил нейросети архив фото за 10 лет...

Итоги

За час скрипт сделал то, что я откладывал 5 лет. Я открыл целевую папку и увидел идеальный порядок.

Я открыл папку Лицо_Дмитрий и увидел себя. ИИ вытащил мои фотки из разных папок за 10 лет и собрал в одном месте.
Я открыл папку Лицо_Дмитрий и увидел себя. ИИ вытащил мои фотки из разных папок за 10 лет и собрал в одном месте.

Самое крутое в автоматизации — это не только результат, а процесс, когда ты пьешь чай, а компьютер делает за тебя грязную работу.

А вы как разбираете свои фотоархивы? Храните всё подряд «на память» или безжалостно удаляете?

6 комментариев