1) Ну, разница HOG и Haar минимальна на лицах. HOG неплохо выигрывает на тушках, но на лицах этого нет.
Крутые пацаны сейчас вообще используют всякие ICF, ну или Deep Learning
3) Классификатор на 3 лица неинтересно обучать. Вот обучите на 25, например. А распознавайте этих же трёх. И тогда люди начнут ой как путаться;) А трёх человек даже eigenface распознает.
Так вроде бы Зисерман и Ко своими триплетами обучали сетку на 1000 уникальных людей… да и findface как-то работает.
1) Ну, разница HOG и Haar минимальна на лицах. HOG неплохо выигрывает на тушках, но на лицах этого нет.
2) То что вы называете «оценка антропометрических точек» это называется «активные модели внешнего вида» (AAM) и появились они не в 2014, а в 1998 году — https://habrahabr.ru/post/155759/
3) Классификатор на 3 лица неинтересно обучать. Вот обучите на 25, например. А распознавайте этих же трёх. И тогда люди начнут ой как путаться;) А трёх человек даже eigenface распознает.
Хотя да, есть сейчас модели которые куда лучше распознают, но не эта. И всё равно точность ограничена.
Помню давно у гугла такую программку видел «Пикасо». Тоже лица распознавала и сортировала все фотки в домашней коллекции по людям на них. Может и сейчас есть.
А кто-нибудь пробовал по этим признакам восстановить лицо?
Уже есть подходы (Deep learning например) восстановления изображения из признаков.
Если построить анимацию изменения одного признака, то есть шанс увидеть, за что отвечает данный признак.
Где на хабре видел подобную статью с птицей.
Для этого нужно обрезать голову сети — так мы получим карты фильтров. Эти фильтры показывают области, вносящие наибольший вклад в определение класса входного изображения. Если теперь эти фильтры применить к конкретному изображению — «засветим» характерные черты конкретного человека.
Ну очень условно: вот есть 68 особых точек, заданных своими координатами. Самое простое, с чего можно начать — к примеру измерить между ними расстояния. По сути получится полный граф, рёбрам которого можно присвоить значение расстояний. Если у нас есть n=68 точек, то значит имеется n(n-1)/2 = 2278 возможных расстояний между точками — столько же возможных параметров. Суть алгоритма обучения — оставить из 2 тысяч только 128, но самых характерных.
На мой взгляд Чед Смит и Уилл Фаррелл вообще не похожи друг на друга. Разные носы, разные уши, разные подбородки, носогубный треугольник. Только брови и глаза слегка похожи.
Но вот что нейронная сеть их различает — это жутко круто.
Расистский вопрос: Градиенты корректно строятся на сильно чёрной коже или вы испортили шутку про «невидимых» негров на определителе лиц?
Второй вопрос: Если в HOG структуре для каждого квадрата 16*16 указывается направление градиента, то почему там не одна стрелка, а «пучок»?
Это такой известный прием — заставьте своего оппонента выглядеть косноязычно. Например, попросив его без подготовки объяснить что-то очень сложное кому-то очень некомпетентному.
Да, статья имеет несколько граней, в том числе, «не использовать модные новые технологии там, где они и правда не нужны, просто потому что это тренд». Т.е. как всегда, для каждого случая — определенный инструмент/подход.
Подмена понятий. Можно написать аналогичный текст на тему «зачем мне IDE, гит, скрам, багтрекер, юнит-тесты, приемочные тесты, дженкинс, автоматический деплоймент, если я хочу написать hello world для лабораторки в универе».
Надеюсь, все понимают жизненную необходимость всего вышеперечисленного для больших проектов. А теперь попытайтесь это объяснить человеку, который писал лабораторки на паскале.
С распределенными отказоустойчивыми системами всё то же самое.
Наверное когда ученик из этого коана стал учителем.
Мастер Фу и десять тысяч строк
Однажды Мастер Фу сказал заезжему программисту: «В одной строке кода shell-сценария больше духа UNIX, чем в десяти тысячах строк кода на С!»
Программист, гордый своими познаниями в С, ответил: «Может ли быть такое? Ведь С — язык, в котором реализовано само ядро UNIX!»
На это Мастер Фу ответил: «Это так. Тем не менее, в одной строке shell-сценария больше духа UNIX, чем в десяти тысячах строк С!»
Программист выглядел удрученным. «Но ведь через язык С мы познаем просвещенность патриарха Ритчи! Мы уподобляемся человеку с операционной системой и компьютером, который получает непревзойденную производительность!»
Мастер Фу сказал: «То, что ты говоришь, правда. Однако в одной строке shell-сценария больше духа UNIX, чем в десяти тысячах строк С».
Программист усмехнулся и поднялся, чтобы удалиться. Но Мастер Фу кивнул своему ученику Ньюби, который писал строку shell-кода на стоящей рядом белой доске, и сказал: «Господин программист, посмотрите на этот конвейер! Не заняла бы его реализация на C десять тысяч строк?»
Просматривая то, что писал Ньюби, программист что-то бормотал в бороду. В конце концов, он согласился, что это так.
«И сколько часов потребовалось бы вам для реализации и отладки этой программы на языке С?»
«Много», — признал заезжий программист. «Но только безумец стал бы тратить столько времени, когда его ждет множество более достойных задач».
«Так кто лучше понимает дух UNIX?» — спросил Мастер Фу. «тот, кто пишет десять тысяч строк, или тот, кто, сознавая тщетность этих усилий, извлекает пользу, не программируя?»
Услышав это, программист достиг просветления.
При том что коан изначально очень мудрый. Но описанное в посте — это просто рекурсия этого коана. Учителя — ученики учеников этого ученика.
Не просто создают новое, а объявляют старое безнадежным и ожидают, что новое само собой будет лучше. Вместо старых проблем получают новые, плюс в новом коде непременно будут новые (свежие, если вам так приятнее) ошибки, какое-то время правят, потом «новое» опять объявляют безнадежным, процесс продолжается бесконечно.
Мне чтобы для себя ответить на эти вопросы, пришлось много лет делать свой фреймворк. Я об этом не жалею, потому что это позволило мне разобраться в JavaScript вплоть до самых его кишок. Но именно поэтому я не осуждаю людей, которые не знают что такое .prototype или зачем нужен Object.create — потому что понимаю, сколько надо потратить личного времени, чтобы в этих деталях разобраться. У большинства людей на работе просто нет задач, которые это требуют.
При этом, при выборе сотрудника на работу я действительно отдам предпочтение тому, кто разбирается в используемых инструментах на самом низком уровне. Возможно, это просто предрассудок и суеверие, не знаю.
при этом если мы нанимаем кого-то в проект — все равно спрашиваем не про либы и фреймворки, а чем this.x отличается от prototype.x и как работают замыкания. И вот ведь незадача! — часто человек весь из себя редукс, а на такие вопросы не отвечает.
Мой друг как-то рассказывал мне историю про своего кореша, который ушел из Яндекса по той причине, что опыт, полученный в Яндексе был применим только в самом Яндексе.
Крутые пацаны сейчас вообще используют всякие ICF, ну или Deep Learning
Так вроде бы Зисерман и Ко своими триплетами обучали сетку на 1000 уникальных людей… да и findface как-то работает.
Да. Но там и не вектора на 128фич на выходе свёрточной сети. Тут всё же старое и простое решение используется.
2) То что вы называете «оценка антропометрических точек» это называется «активные модели внешнего вида» (AAM) и появились они не в 2014, а в 1998 году — https://habrahabr.ru/post/155759/
3) Классификатор на 3 лица неинтересно обучать. Вот обучите на 25, например. А распознавайте этих же трёх. И тогда люди начнут ой как путаться;) А трёх человек даже eigenface распознает.
Хотя да, есть сейчас модели которые куда лучше распознают, но не эта. И всё равно точность ограничена.
Уже есть подходы (Deep learning например) восстановления изображения из признаков.
Если построить анимацию изменения одного признака, то есть шанс увидеть, за что отвечает данный признак.
Где на хабре видел подобную статью с птицей.
Но вот что нейронная сеть их различает — это жутко круто.
Расистский вопрос: Градиенты корректно строятся на сильно чёрной коже или вы испортили шутку про «невидимых» негров на определителе лиц?
Второй вопрос: Если в HOG структуре для каждого квадрата 16*16 указывается направление градиента, то почему там не одна стрелка, а «пучок»?
Надеюсь, все понимают жизненную необходимость всего вышеперечисленного для больших проектов. А теперь попытайтесь это объяснить человеку, который писал лабораторки на паскале.
С распределенными отказоустойчивыми системами всё то же самое.
Программист, гордый своими познаниями в С, ответил: «Может ли быть такое? Ведь С — язык, в котором реализовано само ядро UNIX!»
На это Мастер Фу ответил: «Это так. Тем не менее, в одной строке shell-сценария больше духа UNIX, чем в десяти тысячах строк С!»
Программист выглядел удрученным. «Но ведь через язык С мы познаем просвещенность патриарха Ритчи! Мы уподобляемся человеку с операционной системой и компьютером, который получает непревзойденную производительность!»
Мастер Фу сказал: «То, что ты говоришь, правда. Однако в одной строке shell-сценария больше духа UNIX, чем в десяти тысячах строк С».
Программист усмехнулся и поднялся, чтобы удалиться. Но Мастер Фу кивнул своему ученику Ньюби, который писал строку shell-кода на стоящей рядом белой доске, и сказал: «Господин программист, посмотрите на этот конвейер! Не заняла бы его реализация на C десять тысяч строк?»
Просматривая то, что писал Ньюби, программист что-то бормотал в бороду. В конце концов, он согласился, что это так.
«И сколько часов потребовалось бы вам для реализации и отладки этой программы на языке С?»
«Много», — признал заезжий программист. «Но только безумец стал бы тратить столько времени, когда его ждет множество более достойных задач».
«Так кто лучше понимает дух UNIX?» — спросил Мастер Фу. «тот, кто пишет десять тысяч строк, или тот, кто, сознавая тщетность этих усилий, извлекает пользу, не программируя?»
Услышав это, программист достиг просветления.
При том что коан изначально очень мудрый. Но описанное в посте — это просто рекурсия этого коана. Учителя — ученики учеников этого ученика.
Нет, это принцип «смотреть на пару уровней абстракции вниз», старина Джоэл про него писал в статье «Дырявые абстракции».
Мне чтобы для себя ответить на эти вопросы, пришлось много лет делать свой фреймворк. Я об этом не жалею, потому что это позволило мне разобраться в JavaScript вплоть до самых его кишок. Но именно поэтому я не осуждаю людей, которые не знают что такое
.prototype
или зачем нуженObject.create
— потому что понимаю, сколько надо потратить личного времени, чтобы в этих деталях разобраться. У большинства людей на работе просто нет задач, которые это требуют.При этом, при выборе сотрудника на работу я действительно отдам предпочтение тому, кто разбирается в используемых инструментах на самом низком уровне. Возможно, это просто предрассудок и суеверие, не знаю.
this.x
отличается отprototype.x
и как работают замыкания. И вот ведь незадача! — часто человек весь из себя редукс, а на такие вопросы не отвечает.