Я ещё с класса так девятого стал ценить свой цифровой след, в особенности скриншоты и фотографии. Для меня было важно не столько защитить их от посторонних корпоративных глаз (что, безусловно, тоже имеет место), сколько сохранить их в приемлемом качестве для будущего себя. Так у меня от сервиса к сервису, от устройства к устройству кочевало и дополнялось 18к различных мемов и фотокарточек, которые ценны для меня где-то меньше, где-то больше.
Со временем навигироваться и искать нужные файлы стало всё сложнее и сложнее, мне приходилось уже каким-то бинарным поиском искать фотографии по вайбу времени, в котором я их сохранял. Тут-то я наконец обратил внимание на свой домашний компьютер, которым я уже не пользуюсь и которой было бы хорошо переоборудовать под сервер, на котором можно хранить всю мою армаду фотокарточек. Вот только так я решал проблему с дисковым пространством, но не с файловым поиском.
Тогда-то я и провёл ресёрч и наткнулся на Immich, это селф-хостед аналог Google Photos, который позволяет локально индексировать фото и видео с помощью какой-либо модели, а потом искать их по человекочитаемым запросам. Также доступен поиск по тексту внутри фото. Я развернул её у себя, загрузил одну тысячу файлов из своих архивов и был в восторге от того, насколько хорошо это работает.


Вот здесь он смог распознать довольно маленькую “абобу” среди стены другого текста

Для обработки файлов и нахождения текста используется модель, которую вы сами можете выбрать из характеристик, представленных в документации. Для поиска по фото я выбрал вот эту, она позволяет искать файлы и на латинице, и на кириллице, она довольно тяжёлая, но об этом позже.
Также Immich распознаёт лица на фотографиях и группирует их по людям, так что я могу легко найти совместные фотографии с каким-то конкретным человеком. Показывать, думаю, не буду, чтобы ничью конфиденциальность случайно не нарушить. Работает это достаточно хорошо, лица распознаются под разными углами и профилями, иногда конечно бывает такое, что фотографии одного и того же человека распознаются как несколько разных, но это довольно редкая история, а эти личности можно смёрджить в UI.
Вы можете посмотреть на UI, поиск по лицам и многое другое в демо.
Теперь я могу с лёгкостью рыскать по всей моей галерее, собранной за лет так пять. Всё это, конечно, приходит с ценой. Обучение и прогон модели - это дело тяжёлое и долгое. У меня в компьютере стоит Ryzen 5 3400G и 8 гигабайт DDR4, так что моя машина из-за недостатка оперативной памяти задыхается, особенно на поиске текста и обработке видео. Мне приходится использовать swap, так эффективно у меня используется порядка 12-14 гигабайт оперативки. Но я использую тяжёлую модель, можно выбрать что-то и полегче для своих нужд и ресурсов. Чтобы проиндексировать все файлы, моей машине понадобилось где-то часов 8-10 вычислений.
Если у вас есть доступ к какому-то мощному серверу, вы можете развернуть на нём инстанс Immich и с помощью настройки инстанса на вашем хосте отправлять файлы на обработку на этот сервер, а от него получать только полезные данные, которые будут записываться в локальную базу данных. Никаких вычислений на локальной системе производиться не будет.
Также можно добавлять, как это называется в терминах Immich, внешние библиотеки, это некоторые файловые подсистемы с файлами. Immich будет брать оттуда все фото- и видео-форматы и индексировать. Так, если у вас уже есть развёрнутый NextCloud, вы можете сделать папку с вашими файлами такой внешней библиотекой и скармливать их через загрузку в NextCloud Immich с помощью функции автоматической проверки внешних библиотек на предмет новых файлов, я ровно так и сделал. Эта фича сейчас экспериментальная, и, да, работает не всегда гладко, но больше работает, чем нет.
Пока я пользовался ей где-то неделю, но каждый раз это выглядит как какое-то чудо, я теперь могу очень просто искать практически любой текст и контекст и фото и видео среди огромной кучи, и меня это просто завораживает. Ох не зря я копил все эти фотографии, ох не зря.

