Комментарии 55
у меня 1.7тб фото/видео со всех моих фотоаппаратов и телефонов, что есть порядка 75000 файлов что ли... часть по папочкам лежит (изначально), часть пробовал вручную отсортировать, но в итоге забил. было бы, наверное, хорошо разложить по папкам (дата - событие), но пока лень)
О, вот эта «лень» и есть главный враг, ровно её агент и снимает: рутину делает он, ты только принимаешь решения. Тот же конвейер «дата, событие» спокойно тянет 75к файлов, у меня архив сопоставимый по размеру. Так что это как раз случай, когда стоит один раз настроить и разгрести то, к чему годами не подходишь. Если что-то не понятно из статьи - спрашивай.
У меня в сумме фото + видео занимают около 90гб, и все хранится в icloud.
Однажды нашел старые фотки в дропбоксе и где-то еще, и за пару часов вручную проставил им всем правильные даты: где-то дата была в exif, где-то в названии файла, в целом я все фотки помнил, так что было несложно.
Ну а потом закрыли возможность оплачивать сервисы apple со счета оператора связи, и пришлось резко найти альтернативу - выгрузил все в желтое облако, где пока безлимитное хранилище.
Самое главное для меня было разобраться с датами, чтобы фото/видео были отсортированы в хронологическом порядке. Персоны обычно определяются в телефоне, либо в облаке.
Да, даты это процентов 90 задачи, у меня было так же. Поэтому и вывел правило «имя папки важнее EXIF»: как раз против скан-дат и сбитых часов камер, когда внутри файла дата неверная. Персоны через телефон или облако отлично работают, если живёшь в одной экосистеме. А у меня архив был размазан по OneDrive, почте и кучам папок, так что лица пришлось делать отдельным проходом, чтобы метки потом ехали вместе с файлами куда угодно. Плюс теперь у меня свой независимый ни от кого набор "слепков" и логики по альбомам. Могу при необходимости откуда угодно куда угодно мигрировать, хоть в селфхостед Призм или Иммич.
В чем проблема оплаты эпл? Разве через авито не работает?
Разгребал похожее полгода назад, правда с кодовой базой а не фотоархивом, около 180К файлов с историей на 8 лет. Главный вывод совпадает: AI-агент хорошо справляется с задачами где есть объём и понятный критерий «готово», но человек давно бы сдался от монотонности. Интересно что вы дали агенту доступ к Gmail API напрямую, я обычно осторожнее и даю только чтение на первом проходе, потом отдельно подтверждаю действия. Для фотоархива разумный риск, но для рабочей почты добавил бы промежуточный шаг с превью что агент собирается сделать.
Согласен, осторожность правильная. Тут страховкой был сам scope (это настройки АПИ в консли Гугла): давал не полный доступ, а gmail.modify, то есть чтение и перемещение в Корзину, без безвозвратного удаления. Плюс перед массовыми действиями был предпросмотр, драйран с подтверждением и бэкапом (канантином локально), и именно он спас: в «спам» чуть не уехала рассылка живого магазина, вернул одной командой из Корзины. То есть ваш «сначала только чтение, потом подтверждаю» у меня свёлся к «всё обратимо плюс подтверждение перед удалением». Для рабочей почты ваш промежуточный preview-шаг и правда не лишний.
Хороший разбор, gmail.modify плюс корзина вместо удаления это по сути и есть обратимость, согласен что так даже надёжнее моего «сначала только чтение». Драйран который ловит улетевшую в спам рассылку магазина прям показательно, без него такие вещи всплывают через неделю когда уже поздно. Беру связку scope плюс предпросмотр на заметку для своих сценариев с почтой.
Утащил в закладки, спасибо. Зацепило, что лучше доверять названию папки, а не дате внутри файла — у меня та же беда со старыми сканами: дата стоит та, когда отсканировал, а не когда снято, и я каждый раз правил руками. А как нейросеть отделяла документы и скриншоты от обычных фоток? У меня именно этот мусор всегда мешает больше всего — она сама всё ловила или часть пришлось пересматривать глазами?
Это делал CLIP (open_clip, ViT-B-32) в режиме zero-shot: у каждого фото берутся ближайшие метки из словаря, где среди прочих есть «отсканированный документ/страница текста» и «скриншот экрана». Если топ-метка такая и уверенность выше порога, файл помечается как не-фото и в общий поток памяти не идёт. Ловило само почти всё, глазами пришлось пересмотреть только пограничное: фотографии документов (где и бумага, и сцена) и дизайнерские мудборды из интернета. Скриншоты и явные сканы отсекались чисто.
Это делал CLIP (open_clip, ViT-B-32) в режиме zero-shot: у каждого фото берутся ближайшие метки из словаря, где среди прочих есть «отсканированный документ/страница текста» и «скриншот экрана». Если топ-метка такая и уверенность выше порога, файл помечается как не-фото и в общий поток памяти не идёт. Ловило само почти всё, глазами пришлось пересмотреть только пограничное: фотографии документов (где и бумага, и сцена) и дизайнерские мудборды из интернета. Скриншоты и явные сканы отсекались чисто.
Не хватает информации о том, как зовут агента, сколько он денег за работу взял и т.п.
В начале статьи. Это был клод опус, но работа не сложная справится совершенно любая ЛЛМ, возможно собственного зрения контроля качества каким-то младшим моделям может не хватить, но как описано в другой моей статье разница с фронтиром для таких задач не критична.
По лимитам, совсем не много (точно не замерял, позже попробую посмотреть), в рамках стандартной подписки все. Основная работа локально, склеить точечно глянуть - не супер дорого и сложно
Прикинул по итогу. Точных биллинговых цифр под рукой нет, но порядок такой: вся переписка с агентом за весь проект это около миллиона токенов контекста, из них собственно генерации агента примерно 100-150к. И ключевой момент: это только оркестрация. Вся тяжёлая работа (около 40к фото через CLIP, 74к лиц через InsightFace, 1754 видео) крутилась на локальных моделях, там токенов ноль. По фронтиру уложился в обычную подписку, в лимиты не упирался.
Муж подруги моей жены выполнил аналогичную работу при помощи ИИ. И вот какая статистика у него получилась - на 88% фотографий с 2005 по 2019 год имеется один и тот же человек, первая (бывшая) жена.
Надо сразу разбирать и сортировать, если не каждый день, то раз в неделю. При этом удалять ненужное, чтобы потом в потоке "в этот день" приятно было взглянуть и вспомнить. Уловно вчера из 50 снимков цапель, которые сделал по дороге, оставил 4 разных (взаимодействие 2х пар и take off/go around при попытке приземлится рядом). Просто архивы за 25 лет разобранные уже показываются, и много фотографий не смотришь. Разобранная и отсортированная большая куча фотографий все равно будет просто большой кучей, в которой что-то попроще найти, но тем не менее это все равно большая куча
Удивило то,что не использовались тэги, которые проставляет сам Onedrive.
Загруженная вчера фотография сегодня уже выглядит в onedrive так. Тэги - подарок от облака

Оно, правда, сейчас поспокойнее к распознаванию подходит. В конце 201x фото асфальта распознавалось как манускрипт на санскрите.
Или берем immich просто, настраиваем ML с лицами, контекстом фото, умным поиском и прочим. Настраиваем автоматическую загрузку туда, забываем :)
После невозможности оплатить Google photos пересел на immich, запущенный на домашнем однопалатнике. Работает прекрасно и закрывает все вопросы структуризации фото.
ml на одноплатнике работает или без него?
На нём же, штатным docker compose файлом запускаю, в котором все сервисы прописаны, в том числе и ml. Распознавание не шустро работает, конечно, но я этого не замечаю. Просто все ядра под 100% загружаются на некоторое время, когда много фотографий синхронизируется, но на работе это никак не сказывается.
У меня Orange Pi 3b.
Immich смотрел и даже поднимал у себя, чтобы пощупать (и PhotoPrism тоже гонял). Инструменты отличные, спору нет. Мы с агентом их подробно обсудили и он же меня с ними познакомил и дал пощупать. Решили, что в моём случае это было бы из пушки по воробьям. Мне не нужна была полноценная селфхост-галерея, в которой потом жить, задача была ровно обратная: остаться в рамках текущих обвязок (OneDrive плюс Apple Photos) и просто разгрести в них бардак, а не переезжать в новый сервис и тащить туда 36к неразобранных файлов. Immich, PhotoPrism и подобные комбайны для этого избыточны, у меня болело «разобрать и разложить прямо там, где уже лежит». Плюс лишний сервер, который надо поднимать, кормить и бэкапить.
ух ты. я тут думаю как соседний десктоп с gpu приспособить для мл immich, а оно вона как...
Когда такое просишь кроме бекапов нужно еще просить записывать все действия в файл и финальный шаг добавлять перепроверку... иначе может быть печальная грусть.
Полностью согласен, именно так и делал. Каждое перемещение писалось в undo-лог, отдельный файл со всеми действиями, поэтому любой шаг откатывается одной командой, а удаления почты шли только в Корзину и локальный карантин (папку), без стирания насовсем. И финальная перепроверка была не одна: сортировку сначала гонял пилотом на одном годе и смотрел результат глазами, манифесты строил в режиме dry-run с предпросмотром перед реальными перемещениями, а в самом конце прошёл отдельным дедуп-проходом уже по разложенному. Без этой обвязки на 36к файлов реально легко словить ту самую печальную грусть, согласен на все сто.
Гитхаб имеется? Лень разбираться, подсуну агенту как темплейт
Репозитория и не нужно. Достаточно скормить эту статью любому агенту: в ней весь стек и вся логика по шагам, так что он всё поймёт и воспроизведёт уже под ваши данные и ваши структуру папок и сервисов. Скрипты всё равно выходят одноразовые, под конкретный архив, поэтому статья как «темплейт» работает даже лучше готового кода: агент адаптирует подход, в этом прелесть ИИ, как раз, безграничная и практически бесплатная кастомизация всего под все.
Осталось дело за малым, отправить в ИИ эту статью, чтобы всё это настроить и начать процесс 😀
Когда появится устанавливаемый рабочий инструмент который делает всё перечисленное в полуавтоматическом режиме.
Я уверен что только за процедуру сортировки, пометки, удалении документов и фотографий - найдутся плательщики.
Знакомая боль, и подход правильный. Локальные модели на своей видяхе тут и есть разблокировка, и по деньгам, и по приватности.
Мы недавно крутили похожее, только под коммерцию. Надо было собрать базу фоток БУ-устройств и телефонов для интернет-магазина. Картинки тянули из публичных источников через Serper, закинули около 50 долларов и получили тысячи запросов, этого хватило на приличную базу. Дальше всё перемалывали локально на одной 4070Ti, несколько разных моделей под свои шаги. Вышло на удивление бодро.
Что совпало с вашим опытом. Самой моделью дело не решается, узкое место это дедуп и матчинг грязных входов. У вас EXIF врёт и имена IMG_4348, у нас почти то же на товарных фото. Соберу отдельную статью про этот пайплайн, там интереснее всего как раз матчинг. А дубликаты вы как ловили, по хешу, по эмбеддингам или смешанно?
Дубликаты ловил перцептивным хэшем, не точным хэшем и не эмбеддингами. Гонял czkawka: она считает хэш по содержимому картинки с регулируемым порогом похожести, поэтому берёт и пересохранения, и ресайзы, и почти одинаковые кадры серии. Эмбеддинги у меня шли отдельно и только на лица (InsightFace), для дедупа целых картинок хватило перцептивного хэша, и это быстро и полностью локально. В каждой группе оставлял лучший по разрешению, остальное в обратимый карантин, и делал это до всего остального. Под ваш кейс с товарными фото, кстати, скорее пригодятся именно эмбеддинги (CLIP): там не «почти дубликат», а «тот же товар с другого ракурса», это уже хэш не ловит, нужен матч по смыслу. Статью про матчинг подожду, звучит как самое интересное. Будет классно если сделаете референт на меня, получится что и для коммерции и для личных целей годное.
Есть способ лучше: CTRL+A, CTRL+D
Думаю вы и не заметите того что удалили …. А жить станет проще и объем хранения уменьшится.
Рука не поднялась. Пока фотки сортировали понял почему. Накидал в домашние чаты столько всякой разной ми-ми-шности из старых неразобранных. Семья рыдала от умиления и спрашивала где взял. Еще отправил другу фотографию его маленькой дочки, которой у него не было, а я оказывается сфотал на детском празднике почти 10 лет назад. Еще нашел 3 фотографии ушедшего из жизни знакомого с его маленькой дочерью на руках. Этих кадров тоже ни у кого не оказалось. Отправил их его вдове. Поэтому каждому свое.
Пока читал статью, все время крутилась мысль: "А кто это все смотреть будет?". ИИ? Свои полтерабайта за 25+лет разобрал неспешно глазами, примерно за месяц, по вечерам. Получил удовольствие.
Неспешно.
Глазами.
По альбомам, датам и местам разбирал в Immich вручную. По лицам он раскидывает хорошо и бесплатно сам.
ИИ использовал только для улучшения пленочных сканов.
Я тоже получил удовольствие. Весь архив просматривать сложно сесть, а вот в процессе корректировки работы агента очень даже кайф. И посмотрел и порядок навел и кучу всяких редких кадров родне и знакомым накидал.
Верно понимаю, что по логике работы у Вас не было защиты от раскрытия содержимого почты облачному LLM-провайдеру (если только отдельно не делали редактирование/маскирование, но в статье этого не видно)? Я к тому, что в 90% писем не то что секрета нет, а просто бытовые вещи типа "ок" или "у нас скидка", но 10% - там и чувствительные вещи, и подробности юридического характера, которые не хочется отдавать модели для чтения/изучения.
Изначально все данные с которыми работал в данном кейсе уже были в облаке Майкрософта Гугла или Эпла. Если есть задача не отдавать в облако данные она тоже тут может решаться легко, агент пишет только код, который можно запускать в изолированной среде куда у агента доступа нет и там уже «молотить» локальными инструментами.
Как понял, локальные модели у Вас на маке работали. А что за параметры железа (проц, память)? Несколько тысяч фоток кластеризовать за вечер — это быстро как то.
Кликбейтный заголовок, хоть бы сроки пореальнее указать. "За вечер" это такое себе. У меня только емейлов 200K уже третий день разбирает в 2 потока. Gmail API нужно запрашивать с паузами, а ollama на qwen3:8b еще медленнее, тратит на 1 емейл около 3-х секунд. Примерно неделю будет работать. Фотки на 5TB даже загадывать не берусь сколько займет все разобрать.
попроси плиз своего робта сделать md file c псевдокодом этой системы и кинь нам :). Спасибо
Сделал такую штуку на Zennoposter + LMstudio. Модель распознает фото, и делает его описание в БД, затем сохраняет по папкам - Животные, Люди, Природа и т.д.

Как за один вечер разгрести 36 000 фотографий и почту с 2005 года, руками AI-агента и локальных моделей