Pull to refresh

Comments 68

Да, я думаю, не каждый человек распознает. Я промолчу о машине.
Думаю это возникло из-за сглаживания по времени. Девушка появляется на маленький промежуток времени. Очередь содержащая результаты распознавания пола, полученные с предыдущих кадров наполняется Ж только к появлению следующей девушки.
ну зачем я это погуглил, типерь ужосы сниться будут
Ты ещё Иззи Хилтон не видел. Неделю спать не будешь.
Я один по заголовку решил, что речь пойдет про тот пол, который под ногами?.. =)
У меня, скорее, такая ассоциация:

UFO just landed and posted this here
Не один. У меня сейчас похожая задача есть по распознаванию.
А вы не могли-бы выложить CSV'шник с размеченными векторами, которые вы скармливали бустингу?
Посоны, прогоните тест, пожалуйста!
Сейчас такое уже делают
мне в школе одноклассница как-то показала это фото. и я сказал «симпатичная девушка». а потом она мне сказала кто это…
Это Хабр и тут не любят сокращённые ссылки.

P.S. тем более незнакомые сокращалки…
Использовал ее только по той причине, что хабр резал полную ссылку из-за наличия в ней запятой.
Этот сервис был на первом месте в гугле, поэтому использовал именно его.
Значит я не один такой… :D
Тест только на определение «он»\«она», «оно» не определяет
Не быть мне художником, потому что я никак не могу проанализировать, как же я сам различаю мужские и женские лица.
Судя по видео: смотришь в камеру — мужик, отвернулся — уже не мужик… :)
Публикация готовилась для журнала?
Этот алгоритм придуман не мной. Его авторы достаточно известны в области компьютерного зрения. Эта публикация готовилась исключительно для Хабра
На последнем видео хорошо заметно, что алгоритм не редко ошибается, притом что выбирается наиболее часто распознанный пол за последние 19 кадров? Это что получается, если пол мужской, а он его определил как женский хотя бы на одном кадре, значит, как минимум на 10 предыдущих кадрах он определил его как женский? Показали бы результат определения пола с использованием лишь текущего кадра.
Хотя, возможно, такие огрехи из-за разных ориентаций лица, не использованных в обущающей выборке.
Видео представлены исключительно для целей демонстрации. Алгоритм обучен исключительно на фронтальных лица. «Академические» тесты выдают 93% точности. Если убрать сглаживание, то картина практически не изменится. Сглаживание нужно чтобы убрать эффект «моргания».
На последнем цебите был стенд с аналогичной разработкой, только там еще возраст и настроение.

Пол и настроение практически без ошибок, а вот возвраст он определял совсем как-то странно, например 27 [± 11] yrs old.
UFO just landed and posted this here
можно использовать пиксели изображения напрямую. Такой подход часто дает неплохие результаты


Вот и наступил момент, когда наличие относительно сильного алгоритма классификации привело к соревнованию типа «кто придумает такой идиотский набор признаков, что AdaBoost его не переварит». Выглядит как издевательство над здравым смыслом, если я правильно понял правило образования исходного вектора признаков.
Ну на самом деле это вполне нормальный подход, сначала в качестве признаков брать все возможные описания объектов(включая даже абсурдные с точки зрения логики), а затем проводить выделение feature из этих признаков и сокращение размерности дескрипторов при помощи того-же метода главных компонент или случайного леса.
Да, это так, но только в теории или при очень жесткой регуляризации обучения. А в случае AdaBoost сразу же случается дикий overfitting, который был продемонстрирован как на теоретических примерах, так и на реальных:



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

Ну и как минимум в таких случаях упор делается на устойчивость полученных признаков, а тут как раз почти очевидна принципиальная неустойчивость (заметьте, что делается упор на необходимость использовать при обучении тот же алгоритм нахождения глаз).
Да, полностью с вами согласен по поводу adaBoost. В практических задачах здорово заметно у него переобучение при подаче на вход всего что есть. Но это не противоречит такому подходу, при нем вообще говоря на вход классификатору мы подаем дескрипторы в пространстве уже сокращенной размерности.
Вообще в задаче описанной в этой статье я попробовал-бы использовать вместо adaBoost что-нибудь вроде random forest, чтобы избежать неприятностей с перечисленными вами проблемами.
1000 признаков — это для бинарной классификации как бы за пределами любого разумного понимания «сокращенной размерности», ИМХО. Если бы оно заработало на сотне признаков (или порядка сотни), как это делает SIFT/SURF, то можно было бы говорить о предотвращении оверфиттинга за счет регуляризации по числу признаков. А тут либо случилось чудо и именно так естественно классифицировать по полу, либо наоборот :)
Не понимаю вашей критики. Алгоритм работает и очень неплохо.
По существу вашего коментария.
1000 признаков — это для бинарной классификации как бы за пределами любого разумного понимания «сокращенной размерности»,

Напомню, что начальное количество признаков — 1 560 000. Сокращение в 1 560 раз. Очень неплохо
Если бы оно заработало на сотне признаков (или порядка сотни)

Обратите внимание на график зависимости точности распознавания от количества характеристик, из которого видно, что алгоритм имеет точность более 0.9 при количестве характеристик около 150. Согласитесь, неплохо
то можно было бы говорить о предотвращении оверфиттинга

Объясните, пожалуйста, что заставляет вас говорить об overfitting конкретно в этом применении

Про AdaBoost.
Данный алгоритм применяется очень часто и очень эффективно. Например, поиск лиц на картинке, распознавание эмоций, пола и т.п. Он, как и другие алгоритмы обучения, подвержен проблеме overfitting. Так, например, чрезмерно большое количество параметров в нейронной сети может привести к нему, «сильное выращивание» упомянутого коментарием выше, random forest, может привести к нему, бесконтрольный рост параметров регрессии может привести к нему… Примеров масса. Эту задачу должен решать исследователь, а не алгоритм. Цель AdaBoost — эффективная комбинация слабых классификаторов. Если у вас набор сильных классификаторов, то AdaBoost не поможет (это тезис авторов AdaBoost).

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


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

Аргумент с независимым тестированием конечно очень сильный. Именно поэтому ниже я спросил Вас про результаты тестирования на другой базе.
Спасибо! В целом убедили.

Конечно, моя вера в разумное устройство окружающего мира говорит мне, что вероятно там фактически само собой сформировалось небольшое количество гораздо более устойчивых признаков, которые оказались спрятанными внутри процесса взаимодействия слабых классификаторов и которые было бы интересно выделить. Но тем больше очков в пользу AdaBoost.

А на окончательный классификатор можно где-нибудь посмотреть? Т.е. на координаты точек и веса отдельных слабых классификаторов.
Первые 50 характеристик приведены в статье. В качестве весов может выступать либо значение error_t либо B_t.

Все вместе выглядит примерно вот так:

index: 1357250
error: 2.1651162207126617e-001

index: 128970
error: 2.6818192005157471e-001

index: 989735
error: 3.0862584710121155e-001

index: 1135840
error: 3.0191463232040405e-001

index: 308475
error: 3.4082311391830444e-001

где index — номер характеристики
Я немного не об этом. Интересно было бы поверх некоего усредненного лица нарисовать все отрезки соединяющие точки, в которых берется разность яркостей. При этом можно попробовать выбирать яркость отрезка в зависимости от веса признака в окончательной сумме (тут надо экспериментировать, скорее всего придется выбирать яркость пропорциональной логарифму веса признака). Было бы очень интересно посмотреть, как такие отрезки «заметают» лицо и где геометрически расположены основные признаки. Альтернативный вариант (более обещающий, но и более сложный) — выбирать яркость в зависимости от частоты срабатывания признака, т.е. от частоты ситуации, когда именно данный признак обусловил ответ усиленного классификатора (т.е. при его учете произошла смена ответа, а следующие признаки не поменяли результат). В общем тут было бы, с чем поразвлекаться, если был бы доступен конечный обученный классификатор.
Странная мысль. А в чем собственно связь числа классов и числа признаков? Количество и вид фич выбирается исходя из характера границ между множествами, а не от того сколько классов мы имеем. По статье я на самом деле не понял откуда берутся такие характеристики вообще(те 5 штук неравенств с мэйджик числами), вероятно какая-то эвристика, и наверно если понять почему авторы взяли такие правила, то станет понятно откуда столько фич в финальном классификаторе. Но это не важно в принципе. Важно то, что если результаты из статьи воспроизводимы с соответствующей точностью, то нет особых причин говорить о том, что все работает благодаря правильно сошедшимся звездам на небе :)
заметьте, что делается упор на необходимость использовать при обучении тот же алгоритм нахождения глаз

Сразу отмечу, что это не упор, а скорее рекомендация, и делается она мной, а не авторами статьи. Если алгоритмы поиска глаз будут различны, например, обучать на глазах расставленных руками из FERET и запускать с глазами расставленными автоматическим алгоритмом, то точность слегка упадет на 2-3%. Это, а также то, что алгоритм здорово работает на данных которые «не видел» на этапе обучения, демонстрирует хорошие способности к обобщение (generalization). Говорить об overfitting можно тогда, когда наблюдается практически полное запоминание обучающей выборки (или очень похожей выборки), а неизвестная выборка прогнозируется плохо. В данном случае обобщение на лицо.
Мне на видео показалось, что кое-где довольно неустойчиво распознает (см. 0:50 и 1:30, там везде очень четкий фронтальный ракурс), особенно если учесть усреднение голосов по времени. Но это так, впечатления. Я сравнивал исключительно со своими воспоминаниями о том, как работал проприетарный алгоритм, который мне как-то показывали и который использовал те же признаки, что и Виола-Джонс. Там вообще совершенно железобетонное распознавание было, вплоть до поворота градусов на 45 относительно вертикальной оси.

Кстати, а Вы тестировали на выборках лиц из других баз?
Ну это не совсем алгоритм — мы просто накачали алгоритм обучения данными и она сам нашёл какую-то закономерность. При этом рационально (по крайней мере по я тексту этой статьи) так и не понял, какие факторы отличают мужское лицо от женского.
Пусть видео Мэрилина Мэнсона скормят этой софтине. Будет BSOD.
UFO just landed and posted this here
Для повышения достоверности надо было распознавать по сиськам…
В Таиланде не работало.
В чем может быть прикладной смысл задачи? И интересно было бы пощупать работающий экземпляр.

Интересно как с трансвеститами обстоят дела :)?
Различать пол же. Например у вас есть n часов видеозаписи. А вам нужно быстро вычленить из нее всех женшин. Не просматривать же все подряд.
Что различать — понятно и так. Если общая задача, распознать конкретного человека (поиск преступника), номера машин, и т.д.
Но для чего нужно вычленить(учесть|посчитать) именно только один пол — практическое применение какое? Только в мужскую баню девок не пускать и в гарем султану автоматизировать :).
Ну я предположу, что научить робота распознавать пол собеседника будет полезно. Еще как вариант: если по изображению лица можно различить половую принадлежность, то за счет этого можно повысить точность определения эмоций.
UFO just landed and posted this here
А если рядом будет несколько разнополых? И если они будут ещё перемещаться. Реклама сойдёт с ума :)
Есть системы которые позволяют в видео делать вот такой поиск: «найти всех детей», «найти людей в красной куртке», «найти блондинов» и т.д. Пол — это очередной тег для таких систем. Ну и таргетированная реклама опять же.
UFO just landed and posted this here
Sign up to leave a comment.

Articles