Pull to refresh

Comments 39

Вот за это — отдельное спасибо :)

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

Мне повезло в этом плане с доцифровой эпохи фотографий всего несколько тысяч, так что я их отсканировал и разложил по местам еще с появлением первых нормальных сканеров.
В этом смысле очень удачным решением зачастую является Wikimedia Foundation. Загрузив ваши фотографии на Викисклад и разрешив всем свободно использовать их для произвольных целей, вы привлекаете большое сообщество к тому, чтобы опознать их сюжеты.

Конечно, это работает лишь с фотографиями, которые можно использовать без ограничений. То есть с фотографиями, где авторское право принадлежит вам, или с фотографиями, которые перешли в общественное достояние.
Провозившись как следует, наконец-то сформулировал свою хотелку. Вопрос не в том, чтобы опознать всех. А в том, что по какому-то набору, в котором, возможно и руками выделить лицо и указать: вот это Ян Феликсович, а это Виктория Юрьевна, в диапазоне от X до Y лет, распознавались конкретные лица и в старшем возрасте

Какое финальное качество распознования?


Пробовали переводить в чёрно-белые и так распозновать?

Если говорить о нахождении лиц, то в случае с CNN сложно сказать точные цифры.
Такое ощущение что находит в 100% (если не брать лица повернутые от камеры больше чем на 90). Специально пропущенные я не искал, а случайно не попадались. В первой тестовой (пара десятков групповых фото) выборке нашел все.
HOG около 97% фронтальных и совсем плохо если даже немного повернуты.

Если про кодировку, то алгоритм из face-alignment нормально отрабатывает на ~95% (но то, что не отрабатывает это в основном совсем шлак: не в фокусе, сильно перекрытые или отвернутые), все хорошие отрабатывают отлично.

Соответственно экспериментами с ЧБ не занимался, впрочем, не исключаю что внутри dlib оно само преобразуется, так как в моих экспериментах по работе непосредственно с сетками ЧБ работает лучше.

100% это просто лица или конкретного человека правильно определяет в 100% случаев?

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

Без отношения к распознованию, но было бы интересно собирать статистику просмотров.


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


Ну и лайки собирать, тоже вариант.

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

Не пробовал, но там, судя по беглому описанию, тот же dlib под капотом.

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

image
Попробовал. Упс.
Ну т.е. оно работает, да, но лица в профиль мимо.
Собственно все проблемы у меня из-за того, что я решил лица в профиль тоже распознавать.

Что-то я не очень понял. Picasa, например, на древнем Core 2 Duo и 2 Gb Ram весьма бодро лица искала и группировала…

А вы уверены, что были найдены все лица, а не только фронтальные?
Большинство программ просто ищет по фото, а не подсвечивает лица, поэтому увидеть что было пропущено весьма непросто.
Ну и плюс сгруппировать и сопоставить все группы одному человеку с этим пока даже гугл-фото весьма и весьма лажает.

Для желающих рассортировать свой каталог фотографии по лицам (и местам и другим другим категориям), но не желающим для этого разбираться в нейронных сетях или сливать личную информацию в Гугл/Эппл -


Попробуйте synology moments.
То же фото-облако, только на вашем собственном железе. Я был полностью удовлетворен.

Уже вот-вот выйдет DSM 7, в котором приложения Photo Station и Moments полностью переделаны и совмещены в одно

А я правильно понимаю, что оно работает только на их фирменном и весьма недешевом железе?

Есть бесплатный опенсорсный порт их софта — XPEnology. Да-да, название придумано русскими :)


Однако после полугода использования Synology DS920+ могу сказать, что качество железа и удобство работы более чем оправдывает его стоимость.

Если для DSM7 смогут сделать загрузчик, то на условно произвольном железе тоже будет работать. Гуглить XPEnology
Я пришёл в эту публикацию потому что знал, что в комментариях кто-то подскажет готовое решение для ленивых. Большое спасибо! Теперь есть чем занять свою домашнюю DSку.
«Лица, лица, лица...»
В общем-то, неплохой вариант. Было предложение авторизировать пользователей ватер-клозета по индивидуальному рисунку складок, оказывается они более уникальны, чем черты лица.
можно позавидовать людям, у которых такая большая семья и столько разных фотографий, что без распознавания лиц никак не обойтись…
в postgres есть уже давно такой тип как CUBE — в идеально хранятся матрицы с лицами. Потом можно одним запросом находить самые похожие лица. Вообще я 2 года назад сделал на этой же библиотеке поисковик по фейсам за 2 секунду по 300к фейсам с википедии искала на довольно плохом хостинге.
Спасибо. Про CUBE знаю, но не хотелось привязываться к «взрослой» СУБД. Да и скорость поиска тут не важна, он только на этапе подготовке данных и на фоне остальных операций крайне незначительно времени занимает. А в основном режиме работы поиск идет только по тегам, а это вообще не требует ничего специфического.
Спасибо за статьи.

Тоже интересовался темой, потому что не хочу выкладывать фотографии в облако.
Нашёл opensource приложение на Go PhotoPrism, которое умеет распознавать объекты на фотографиях (TensorFlow) и web-ui для просмотра и поиска фотографий. Есть демо — demo.photoprism.org/browse

В случае работы на Mac OS задача облегчается тем, что все модели для распознавания объектов на фотографиях уже есть в ОС и с приложением osxphotos можно разметить свои фотографии, метаинформацию хранить в sqlite. Вот еще занимательная статья про то, как найти лучшую фотографию с пеликаном.

Интересно, может где-то есть обученные модели распознавания предметов и животных в открытом доступе?
PhotoPrism плохонько работает. Чёрную кошку распознал только на трёх фото из нескольких десятков, хлебушек счёл портретом и так далее. там под капотом NasNet, SOTA 2017 Года: accuracy of 82.7% top-1 and 96.2% top-5 on ImageNet.
Почему так? Модели не очень?
Спасибо за ссылку, посмотрю.
Довольно большой каталог датасетов для создания различных моделей можно найти тут www.tensorflow.org/datasets/catalog/overview?hl=en
Насчет уже обученных моделей не подскажу, не приступал еще к этой задаче.
pypi.org/project/face-recognition – вполне ок. Я вставил ее в свой самописный iPhoto, она за 1-2 дня обработала тысяч сорок фоток на дохленьком двухядерном Celeron 1.6GHz. Главное было обрабатывать scaled фотки, а не оригиналы 6000x4500px (разницы в точности я не заметил).

Главной проблемой оказалось не найти лица, а корректно идентифицировать людей, с учетом того, что это семейный архив, и условная Маша в 2020 году очень похожа на бабушку Клаву в 1925 :-)
Подозреваю что вы использовали ее с настройками по умолчанию, значит с HOG, он да, на CPU вполне норм идет.

Главной проблемой оказалось не найти лица, а корректно идентифицировать людей, с учетом того, что это семейный архив, и условная Маша в 2020 году очень похожа на бабушку Клаву в 1925 :-)

Значит вы ощутили всю мою боль! :)

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


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

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

Сейчас для поиска и распознавания лиц существуют более продвинутые библиотеки, например https://github.com/deepinsight/insightface.


Правда для быстрой работы GPU уже просто необходимы. С некоторыми оптимизациями сетки по ссылке выше можно запускать на видеокартах GTX 1080 на скоростях около 70-90 кадров в секунду

Если будет интересно попробовать, у меня на гитхабе есть докеризованная версия обернутая в FastAPI и сконвертированная в TensorRT для повышения производительности: https://github.com/SthPhoenix/InsightFace-REST

вы крутой.
а на TensorRT действительно в разы быстрее работают модели insightface
Only those users with full accounts are able to leave comments. Log in, please.