Лидеры года — новая категория на Workspace Digital Awards! Номинируйте вашу команду, продукты и проекты.
Веб-разработка

Как я создал Renvumi - SaaS, который помогает разобрать тысячи фотографий

369 
 

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

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

Именно для решения этой задачи я начал разрабатывать Renvumi — веб-сервис для анализа и организации фотоархивов.

Сервис уже работает и доступен по адресу https://renvumi.ru/.

С чего всё началось

Изначальная задача была довольно простой: найти дубликаты фотографий.

Но довольно быстро выяснилось, что обычного сравнения файлов по контрольным суммам недостаточно.

Например, есть три фотографии:

  • оригинал;

  • уменьшенная копия;

  • тот же снимок после небольшой обработки.

Для компьютера это три разных файла. Для человека — практически одна фотография.

Ещё сложнее с серийной съёмкой. Камера может сделать десять кадров за несколько секунд. Они технически разные, но человеку обычно нужен один или два лучших.

Поэтому постепенно проект превратился из обычного поиска дубликатов в систему анализа фотографий.

Что умеет Renvumi

После загрузки фотографий сервис анализирует изображения и позволяет работать с результатами через браузер.

Поиск одинаковых и похожих фотографий

Renvumi ищет не только полностью одинаковые файлы.

Сервис может объединять визуально похожие изображения, даже если они отличаются:

  • разрешением;

  • размером файла;

  • форматом;

  • небольшой обработкой;

  • кадрированием;

  • качеством сжатия.

Это удобно, например, при объединении нескольких старых фотоархивов.

Одни и те же фотографии часто оказываются одновременно на компьютере, внешнем диске и в резервных копиях.

Серии фотографий

Отдельная задача — похожие фотографии, сделанные практически одновременно.

Например, из десяти кадров ребёнка, пейзажа или спортивного события нужно выбрать один удачный.

Renvumi формирует группы похожих фотографий, после чего их можно быстро просмотреть и решить, какие изображения оставить.

«Лучшие в серии»

Я добавил отдельный механизм анализа серий.

Его задача — помочь человеку быстрее выбрать наиболее удачный кадр среди нескольких похожих.

Важно, что сервис не должен полностью принимать решение за пользователя.

Фотография может быть технически неидеальной, но иметь эмоциональную ценность.

Поэтому Renvumi скорее выступает помощником: сокращает количество фотографий, которые человеку приходится сравнивать самостоятельно.

Интеллектуальная очистка

Ещё одна функция — поиск изображений, которые с высокой вероятностью можно удалить.

Например, когда в архиве находятся практически идентичные фотографии.

Для таких случаев используется высокий порог сходства, чтобы система не предлагала удалять фотографии только потому, что на них изображена одна и та же сцена.

Окончательное решение всё равно остаётся за пользователем.

Поиск людей

При анализе фотографий сервис может находить лица и группировать снимки одного человека.

Это позволяет открыть раздел с людьми и быстро найти фотографии конкретного человека во всём архиве.

Особенно полезно это становится на больших семейных коллекциях, где фотографии накоплены за много лет.

Альбомы и коллекции

Одного анализа фотографий оказалось мало.

Нужны были привычные средства организации архива, поэтому появились:

  • альбомы;

  • коллекции;

  • массовое выделение фотографий;

  • перемещение между альбомами;

  • корзина;

  • массовые операции.

В результате Renvumi постепенно превратился из инструмента поиска дубликатов в полноценную систему работы с фотоколлекцией.


Разместите
тендер бесплатно

Наша система сама подберет вам исполнителей на услуги, связанные с разработкой сайта или приложения, поисковой оптимизацией, контекстной рекламой, маркетингом, SMM и PR.

Заполнить заявку 13752 тендера
проведено за восемь лет работы нашего сайта.


Публикация отдельных фотографий

Недавно в сервисе появилась ещё одна функция — возможность опубликовать выбранную фотографию.

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

При этом весь альбом открывать не требуется.

Это оказалось полезным дополнением: сервис используется не только для внутренней сортировки архива, но и для передачи отдельных фотографий.

Почему это веб-сервис

Можно было сделать обычную программу для Windows.

Но веб-интерфейс даёт несколько преимуществ.

После запуска сервиса пользователь работает с фотографиями через привычный браузер. Интерфейс не зависит от конкретного рабочего места, а тяжёлые операции анализа можно выполнять отдельно от интерфейса.

Внутри проекта используются несколько компонентов.

Backend работает на Python и FastAPI, фоновые задачи выполняются через Celery, для очередей используется Redis, основные данные хранятся в PostgreSQL, а векторный поиск выполняется с использованием Qdrant.

Для анализа изображений используются OpenCV и модели машинного обучения.

Вся система разворачивается в Docker.

Для пользователя вся эта инфраструктура, разумеется, скрыта: он просто загружает фотографии и получает результаты анализа.

Самая сложная часть оказалась не в нейросетях

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

На практике создание SaaS состоит из огромного количества более прозаичных задач.

Нужно сделать:

  • загрузку большого количества файлов;

  • обработку ошибок;

  • фоновые очереди;

  • ограничение ресурсов;

  • регистрацию пользователей;

  • восстановление доступа;

  • альбомы;

  • корзину;

  • удаление данных;

  • резервное копирование;

  • мониторинг;

  • мобильную версию;

  • API;

  • документацию;

  • безопасность.

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

Отдельная проблема — скорость

Когда пользователь загружает несколько фотографий, практически любое решение кажется быстрым.

Но ситуация полностью меняется, когда фотографий становится несколько тысяч.

Для каждого изображения могут потребоваться:

  1. чтение файла;

  2. создание превью;

  3. извлечение признаков изображения;

  4. поиск лиц;

  5. построение векторного представления;

  6. сравнение с уже обработанными изображениями;

  7. сохранение результатов.

Поэтому значительная часть разработки сейчас связана не с добавлением новых функций, а с оптимизацией уже существующих.

Почему я решил сделать собственный сервис

Существуют программы для поиска дубликатов, облачные фотосервисы и системы каталогизации изображений.

Но мне хотелось объединить несколько сценариев в одном интерфейсе:

загрузил фотографии → система проанализировала их → нашла похожие → сформировала серии → помогла выбрать фотографии → нашла людей → позволила организовать архив.

При этом мне было интересно построить именно самостоятельный SaaS-проект, а не очередную локальную утилиту.

Сейчас Renvumi находится на ранней стадии

Проект продолжает активно развиваться.

Сейчас мне особенно важно проверить его не только на собственных фотографиях, но и на реальных архивах других пользователей.

Поэтому я ищу людей, готовых попробовать сервис и рассказать:

  • какие функции оказались полезными;

  • где интерфейс непонятен;

  • какие операции выполняются слишком долго;

  • каких возможностей не хватает;

  • какие ошибки возникают на реальных коллекциях фотографий.

Такой feedback сейчас для проекта гораздо ценнее, чем просто количество регистраций.

Кому может пригодиться Renvumi

В первую очередь сервис рассчитан на людей, у которых накопились большие фотоархивы.

Это могут быть:

  • фотографы;

  • владельцы семейных архивов;

  • путешественники;

  • контент-мейкеры;

  • дизайнеры;

  • специалисты, работающие с большими коллекциями изображений.

Особенно хорошо проблема становится заметна после нескольких лет съёмки, когда фотографии уже лежат на нескольких дисках и никто точно не знает, сколько среди них копий.

Что дальше

В ближайших версиях основное внимание я хочу уделить скорости анализа, работе с большими архивами, поиску людей и улучшению мобильного интерфейса.

Также постепенно развивается API, чтобы возможностями Renvumi можно было пользоваться не только через веб-интерфейс, но и из внешних приложений.

А дальше многое будет зависеть от обратной связи пользователей.

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

Выскажите мнение
Авторизуйтесь, чтобы добавить свой комментарий.




369

Лучшие статьи

Поделиться: 0 0 1

Оцените статью
Спасибо за оценку