Это оно. Это лучшее, черт возьми, что я когда-либо делал. Обычно я не люблю хвастаться, но я так сильно не горжусь собой из-за этого, что чувствую, что должен им поделиться. Они сказали, что это невозможно (на самом деле никто этого не сказал), они сказали, что это невозможно (многие люди сказали, что это возможно), но я сделал это, и это работает ОТЛИЧНО!

Фон

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

Очень быстро для меня стало очевидно (каламбур), что фотографировать больше не имеет смысла, потому что их невозможно будет снова найти позже. В то время все мои фотографии были в Dropbox. В Dropbox не было каких-либо возможностей управления фотографиями (и их все еще нет на момент написания этой статьи), и это было то, в чем я отчаянно нуждался. Я знал, из моей работы в области машинного обучения, что вы так много можете почерпнуть из фотографии, например, кто она, где она была сделана и из какой сцены; будущий суперзлодей терроризирует родителей, например.

Так что я поступил единственно логично. Портировал все 80000 фотографий в Apple Photos, чтобы можно было запустить некоторое машинное обучение, и я мог снова найти свои фотографии. Это сработало блестяще - конец. До свидания!

Ложь

Ложь. Это еще не конец. Теперь я застрял в саду, обнесенном стеной Apple. Я действительно люблю сад, там много красивых цветов, таких как iMaccius RhoddeNoCDrom и Ipaddus Expensivus. Но не все делают это, и сообщение моего хорошего друга Джарона Филлипса напомнило мне, что всегда есть другой способ (кроме Google, у которого есть серьезные проблемы с конфиденциальностью).

Запустите его локально

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

Ваши фотографии (вероятно) невероятно конфиденциальны и хранят много секретов, поэтому вы можете захотеть, чтобы они существовали локально на вашем компьютере только. Но тогда они недоступны для поиска! Давай изменим это! Чтобы этот процесс работал, они должны находиться в папке, поэтому просто экспортируйте их все в одну папку (если их еще нет). Если вы хорошо разбираетесь в компьютерах, вы можете настроить мой сценарий, чтобы он работал и с фотографиями во многих подпапках. Но ключевым компонентом на самом деле является машинное обучение.

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

Мы собираемся хранить эти теги ВНУТРИ ЧЕРТОВЫХ ФАЙЛОВ. Представь это?! Почему мы это делаем? Так что можно искать. БАМ! БИНГ! ДРУГОЙ! Разве это не потрясающе?

Эти теги войдут в поле «комментарий», которое Spotlight проиндексирует, чтобы вы могли искать в этих файлах позже.

Процесс

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

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

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

Затем я запустил сценарий и вуаля - ПРЕВОСХОДНОЕ ПРЕВОСХОДСТВО.

Теперь я могу искать любую фотографию по тому, что есть на моем Mac. Не нужно отправлять мои личные фотографии в облако, в Google или… другим чудакам. Он работал локально, он работал быстро, и он работал ОТЛИЧНО.

Это только начало - поскольку вы отличный разработчик, вы можете перейти на следующий уровень и создать реальное приложение с другими функциями или, возможно, изучить внедрение тегов в другие места, такие как данные EXIF ​​или отдельный xml. файл sidecar. Я здесь, чтобы дать вам идеи, вы здесь, чтобы делать с ними удивительные вещи, потому что, честно говоря, я ужасный разработчик.