Adobe

индекс
116,76

Ба! Знакомые все лица! (Lightroom 3 и распознавание лиц)

image
Сравнительно недавно, «по совету друзей», открыл для себя программу Google Picasa. Больше всего понравилась мне возможность распознавания лиц и автоматической простанавки тегов на их основе. Несколько дней я провел над подписыванием лиц в своей немаленькой фотоколлекции… Когда же работа была завершена, то встал вопрос — что же делать дальше? Ибо в качестве каталогизатора и редактора Picasa серьезно уступает специализированным инструментам. Постепенно вопрос трансформировался в такой: как перенести (а лучше регулярно синхронизировать) информацию о контактах из Picasa в предпочитаемый мною Lightroom?


А давайте сделаем плагин!


Первым делом, конечно же, подумалось о плагинах. Ведь Lightroom поддерживает плагины! Значит кто-то должен был сделать такой плагин… Оказалось что плагин действительно есть, но так как Adobe в своем API не предусмотрел работу с тегами, то плагин выполняет некие магические пассы никак, впрочем, проблему не решающие. Пришлось придумывать собственное решение.

Что показало вскрытие


Приятным открытием стало то, что Picasa хранит интересующие данные в XML и INI файлах, а Lightroom — в Sqlite. Поковырявшись в том и другом, очень скоро был рожден PHP скрипт, который переносил информацию о людях из Picasa в Lightroom и прописывал там в качестве тегов. Захотелось поделиться таким замечательным инструментом с общественностью но, ведь каждого не заставишь ставить себе PHP. Поэтому было принято решение переписать программу на чем-то более для этого подходящем, например, на C++.

Lightroom Face Importer


В итоге получилась программа, которая в автоматическом режиме берет список контактов из Picasa, проверяет из наличие среди тегов Lightroom и добавляет недостающие. После чего, опять же на основании информации Picasa, проставляет соответствие тегов и фотографий. Назвал я ее без особых изысков — Lightroom Face Importer. Что приятно, программа не дублирует теги, не требует их размещения в каком-то конкретном месте, не требует инсталляции и довольно шустро работает (мой 110Гб архив она «перемалывает» меньше чем за минуту). В качестве параметра программа принимает имя базы данных Lightroom, но может и запросить его сама, в случае если параметр не передан. Так же, «во избежание», перед началом работы автоматически создается копия базы данных, но за время тестов эта копия еще ни разу не пригодилась.

Я понимаю, что рано или поздно Lightroom научится распознавать лица на фотографиях, но до тех пор Lightroom Face Importer может стать удобным и полезным инструментом.

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

Страница программы
+35
30 июля 2010, 12:32
43

комментарии (39)

0
ivlis #
А можно поподробнее написать как открывать lrcat файлы?
+1
Loki3000 #
lrcat — это обычный файл БД sqlite третьей версии. Так что любым инструментом, который умеет с ней работать.
0
ivlis #
Забавно, надо будет попробовать.
0
RAleks #
очень помог этот факт. а то умудрился сломать каталог так, что lightroom отказывался его чинить, а открыл как бд и сохранил заново — помогло и каталог снова стал читаться
0
Shafeev #
О, спасибо. Иногда не хватало такой вещи в lightroom'е.
0
ScorpAL #
А где именно Picasa хранит записи о распознавании?

Планирую переставить систему, а вот заниматься 3 дня по новой распознаванием нет никакого желания :(
+1
Loki3000 #
Сами файлы раскиданы по каталогам с фотографиями, а информация по контактам хранится в
%USERPROFILE%/Local Settings/Application Data/Google/Picasa2/contacts/contacts.xml
0
Maklaut #
Вот тут полезная статейка про базу пикасы www.kyrejto.com/2009/08/10/picasa-2/
0
easy_john #
Вот хорошо бы привязать те же лица к digikam.
все же оно более кроссплатформенное и фичастое.
+1
Loki3000 #
Есть одна мелкая засада: Picasa не кроссплатформенная. Версия, которая умеет распознавать лица, под вайном не завелась…
0
easy_john #
Picasa отлично работает в wine, я ей парсил свои 300 gb лиц только так. Но опять же в пикасе не смотря на то, что имена догодались добавить, нормально работать с ними не удобно, иерархии нет. А когда имен больше 100-200 работать с ними в виде плоского списка уже невозможно.
0
Loki3000 #
А у меня запустилась, но добавлять фотографии в базу данных наотрез отказалась… Вероятно, что-то я не допилил.
Надо будет посмотреть что из себя представляет база digikam… возможно, все и получится.
0
easy_john #
Проблемы есть пока еще у всех программ, для обработки фото.
Чуть более развернуто я писал тут easyjohn.livejournal.com/160256.html
А кратко — они не готовы для работы с большими объемами данных.
В этом смысле мне более импонирует digikam, т.к. его развивают энтузиасты и есть большая вероятность, что быстрее всего адаптируется опенсорсный продукт.
0
Sicness #
о_О
Работаю с Picasa только под Ubuntu и даже не ведаю как оно работает. Ставится как с офф сайта, так и с репозитория гугла.
В принципе, вот: picasa.google.com/linux/
0
easy_john #
В линуксовой версии, если я правильно помню, распознаваний лиц нет (ну или не было долгое время), по этому ставили виндовую под wine.
Тем более, что убунтой мир линукса не заканчивается, а бинари у них на сайте только в rpm и deb. Стыд и позор гуглу.
0
Sicness #
Пользуюсь ей не давно, но у меня распознавание лиц было всегда.
Выложив rpm и deb они покрыли гораздо больше половины машин с Linux ;)
Сами файлы при желании можно взять как из deb, так и из rpm.
— Уж извините что 2 раза комментарий отправил, глюк с браузером, бывает.
0
Sicness #
Работаю с Picasa только под Ubuntu и даже не ведаю каким образом она работает. Ставится с офф сайта или с репозитория гугл.
В принципе вот: picasa.google.com/linux/
+2
rewiaca #
0
easy_john #
погуглите, там куча смешных было.
что не умаляет сути, разбирать фото с этими подсказками на порядок проще. тем более в пачке с одного мероприятия как правило сразу человека на куче фото опознает как одно лицо.
0
zkn #
а нельзя ли включить эти таги просто внутрь самих файлов? т.е. в IPTC.
это как-то более правильно, чем хранить таги в базе данных программы.
0
Loki3000 #
Можно и так сделать. Собственно, именно этим найденный мной плагин и занимался. Но пользоваться этим совершенно невозможно, так как все найденные люди запихиваются в один тег. В итоге выглядит это так:
фото1
Faces: Вася
фото 2
Faces: Вася, Маша

В лайтруме нет инструментария, чтобы выбрать все фотографии, где тег Faces содержит подстроку Вася. В итоге, все возможные комбинации людей на фотографиях добавляются как отдельные метатеги. Если какой-то софт научится их разбирать — это может быть полезно. Пока же — скорее вредно.
0
zkn #
я таким образом импортировал для теста базу фоток из acdsee в photoshop elements. все таги хорошо подхватились. странно, что здесь не так.
0
Gorodohan #
После прочтения вот этой статьи — habrahabr.ru/blogs/infosecurity/100043/
мне было бы как то ссыкотно подписывать всех своих знакомых ;)
0
easy_john #
в вебе — да. а в локальных базах, почему нет?
0
Sicness #
Там дискреционное разграничение доступа. То есть, если альбом не публичный, то это достояние только Вас и гугла. Собственно как и переписка, которую Вы, вероятно, не боитесь.
+1
EaE #
Про распознавание лиц. Я долго собирался начать использовать эту фичу Пикасы, и когда надумал попробовать, решил первым делом устроить ей стресс-тест. Ну и натравил ее на коллекцию фотопорно, сколько было на винте. В общем, сам интерфейс оказался для таких объемов данных просто не приспособлен. Последовательный показ лиц с вопросом «это %actressname%, я угадал?» не катит как способ быстро каталогизировать тысячи и тысячи кадров. Очень смело занимаясь угадыванием, программа пытается приписать новое лицо одному из уже существующих персонажей. Т.е. если вначале вы указали по именам одну блондинку и одну брюнетку, то дальше про большую часть блондинок и брюнеток вас обязательно спросят, а не вот те ли это две. Одну и ту же актису пикаса начинает сносно узнавать довольно быстро, но все же, даже после сотни указанных кадров с ее лицом, новые пачки будут поступать максимум штук по десять, даже если ее там еще тысяча таких же кадров. И это речь еще только о лицах. :)

Long story short, работает эта фигня только на небольших группах разных людей. Т.е. разметить архив дружеских фоток за год еще можно. Но опять же, требуется принятие индивидуального (с кликом, а частенько и печатанием вручную) решения по каждой фотке. Плюс, добавить нового персонажа — это не просто затайпать новое имя; надо создать новый контакт через специальный интерфейс.

Как-то так.
0
easy_john #
работает в целом более-менее адекватно.
да, разбор с нуля большой коллекции это пара вечеров. за то потом новодобавленное сортируется относительно быстро.
+1
EaE #
Да, это точно. Но сначала сильно разочаровала именно необходимость вручную участвовать в сортировке.
0
easy_john #
не на столько идеален механизм.
у меня получалось по разному, сначала сортировал большими группами и подсказки были адекватные. а потом дошел до фоток, где размер лица не больше аватара, вот там началось трудное, подсказывал лица от балды.
0
Loki3000 #
На самом деле не все так печально. Там интерфейс немного неочевидный, так что я тоже поначалу продвигался почти вручную… Но по мере освоения, появились определенные навыки… Хотя, интерфейс я по прежнему считаю неочевидным:)
Ах да. Еще у меня сложилось впечатление что пикаса не принимает решения по многим фотографиям до конца сканирования… а сканирование у меня заняло около суток.
0
EaE #
Про интерфейс хорошо что напомнили. Да, «неочевидный» это мягко сказано. :)
0
Pollux #
«Picasa хранит интересующие данные в XML и INI файлах», а подскажите где именно хранит?
0
ser_gun #
А чем не подошел экспорт/импорт через xmp?
(http://www.anvo-it.de/wiki/avpicfacexmptagger:main)

Я как-то увидел у товарища на работе процесс разбора фото, меня порадовало. Решил попробовать. (Для каталогизации с давних пор использую Expression Studio, в девичестве iView Media Pro, и импорт через xmp меня вполне устраивал).
Натравил Пикасу на одну фотосерию, сначала порадовало. На второй серии засёк время, сколько я трачу и вручную оценил качество. В первую очередь о качестве. Плохо, если не сказать ужасно. Многие лица просто пропускает (вообще даже не понимает, что это лицо), и в то же время очень много шума: манекены, постеры, памятники и т.п. С шумом фиг с ним, а вот ручной просмотр всех фото в поисках нераспознанных лиц здорово увеличивает время обработки. Теперь про время. В итоге, с учетом ручной проверки работы Пикасы, общее время обработки оказывается БОЛЬШЕ, чем обработка вручную.

Итог: для серьезной работы функция распознавания лиц пикасы пока не пригодна. Но для людей, выкладывающих огромное количество фотошума в социальные сети вещь незаменимая: таким образом шум этот здорово детерминируется.
0
ser_gun #
кликабельная ссылка
http://www.anvo-it.de/wiki/avpicfacexmptagger:main
0
RAleks #
А как программа решает где брать базу Picasa? может тоже добавить окно для поиска файла как для каталога lightroom. а то у меня
«D:\Рабочий стол>LightroomFaceImporter.exe
Loading Picasa contacts…
Error: Picasa contact file corrupted or does not exist.»
0
Loki3000 #
Программа ищет базу по адресу %USERPROFILE%/Local Settings/Application Data/Google/Picasa2/contacts/contacts.xml
Я просто не знаю где она еще может храниться. Если бы знал — перебирал бы несколько вариантов.
Окно выбора я вначале хотел сделать, но при этом придется пользователю объяснять что именно ищем, а пикаса все равно не умеет хранить свою БД по другому адресу (во всяком случае, мне неизвестно можно ли ее переместить в другое место). Так что от окна было принято решение отказаться.
0
RAleks #
если именно по такому пути — то понятно, почему у меня не нашло. в windows 7 другие пути папок внутри папки профиля %userprofile%\AppData\Local\Google\Picasa2\contacts
0
Loki3000 #
Спасибо — вечерком добавлю.
0
Loki3000 #
Заменил путь на %LOCAL_APPDATA%, так что теперь, по идее, должно работать и в win7.
Если есть время — проверьте пожалуйста.

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