Pull to refresh

Comments 25

Красота это все же намного сложнее чем простое распознавание. Особенно заметно у девушек на свадебных фото.

При рассматривании свадебных фото, часто возникает вопрос: «Она может быть такой?»

Интересно было бы увидеть зависимость рейтинга от ракурса, освещения и макияжа для одних и тех же людей

Если посмотреть на архитектуру, сети, то в качестве первого значимого шага используется выделение признаков при помощи предобученной InsightFace. Сеть insightface тренирована на распознавание, а значит выделенные ей признаки не должны зависеть от макияжа, освещенности, выражения лица и в теории даже возраста — распознавалка должна не обращать внимание на изменяющиеся черты одного человека и выделять лишь черты, которые не меняются от фото к фото в качестве признаков. Это является и плюсом и минусом модели — плюсом так как оценка не зависит от незначимых факторов, а минусом так как для человеческого восприятия некоторые из этих факторов, очевидно, имеет значение.
Но это в теории. Реально наверняка будет разница, но это можно проверить уже с помощью выложенного кода/приложения

В теории да, можно распознать человека по фото и посмотреть в базе данных какое значение "красоты" для этого человека было определено (или вычислить его по другим фоткам), но суть-то здесь не в этом. Проблема красоты как раз в том, что один и тот же человек при разных уловиях может быть как топ-красавчиком, так и 2/10 уродцем даже для такого прохаваного в этом деле механизме, как человеческий мозг.


Сложно будет найти даже двух людей, которые одинаково ранжируют 1000 фотографий по красоте. Что уж говорить, что сами стандарты красоты очень сильно зависят от эпохи, культуры и прочих социальных факторов.


Как по мне, то красота это почти полная субъективщина.

Спасибо за интересную статью! Вижу пару интересных кейсов:
1. Выбор фото с максимальной оценкой из серии селфи
2. Предложить вариант косметики/прически, которая максимизирует оценку
Есть сервис, где живые люди оценивают фото по нескольким параметрам. Позиционируется как инструмент выбора аватарки под образ, который вы пытаетесь создать.
Моё мнение с результатом оценки не сошлись.
Ой, всё… :D

Спасибо за расклад, хотя как новичок, хотелось бы подробнее. Т.е. Вы все ключевые моменты вроде и вложили в статью, но я не всё понял… может потому что утро и лень мозг включать… несмотря на это, результат и идея классные!

P.S.: в эпп не хватает немного UX… спиннер когда грузит, вторая кнопка должна появится, только после загрузки фото… но это мелочи, и к статье отношения имеет мало.
Формулировка 5.5/10 что означает в случае приложения? Страшность на уровне медианы?

Ванесса Мэй получает 3.5, Ким Чен Ын 4.0., а красавчик я только 2.7. Впереди ещё много работы)

Скомпилировал для API16+, впечатления:
  • FaceDetector на фотографии от tensorflow жутко тормознутый. Тот же OpenCV детектит лица с камеры (!) непрерывно (около 12-15 кадров в секунду)
  • Датасет модели 65Мб это много, пусть даже для разрешения 116x116px
  • Interpreter от tensorflow так же жутко тормознутый

Одно из применений для девушек: включаешь камеру для селфи — программа показывает процент «красивости». Меняешь выражение лица, кое-где поправляешь макияж. Как только программа показывает наибольшую оценку «красивости» — нажимаешь «сделать фото», и самое лучшее фото для инстаграма готово.
Другое применение: новый фильтр для фото-альбома — по «красивости». Программа в фоне анализирует «красоту» фото, и присваивает каждой фотографии свой индекс «красоты».
FaceDetector вроде достаточно быстрый должен быть. Основное время работы — прогон картинок interpreter ом через сеть. Предобученны кусок сети достаточно массивный — resnet, обычно используется на десктопах. Если в качестве предобученного куска использовать mobilenet, которая легче, быстрее и обычно используется на мобильных устройствах, например тут, то можно делать реалтайм. Но к сожалению не получилось с ее помощью добиться сравнимых по качеству результатов

Не пробовали ли Вы пойти обратным путём и по обученной сети оценить какие признаки дают бОльший прирост? Не уверен что понимаю насколько это подъемная задача (учитывая то, что их 512 да еще и они скорее всего не очевидные для человека) но было бы очень интересно на это посмотреть

Нет, не пока не пробовал. Можно в питоне heatmaps построить по признакам, например. В принципе идея решения обратной задачи и применения приходила в голову в такой формулировке:
«Как минимальным образом изменить картинку (то есть в качестве оптимизируемых параметров использовать не веса сети, а пиксели картинки), чтобы максимизировать красоту». По реализации должно быть примерно как neural stule transfer. Кроме того это только десктопно на GPU можно, обучение сети на телефоне долгое время займет, раз даже прямой прогон по несколько секунд занимает. Если будет интересно, могу поиграть с этим и тоже написать по признакам и оптимизации красоты статью. Но может и вовсе ничего не получиться из-за проблемы One pixel attack.

Прпробовал на нескольких своих фото. Оазброс от 5.2 до 7.5

Я загрузил в приложение около 50 своих фотографий. Результаты имели довольно сильную погрешность аж в 3 балла. Так же обнаружил явную зависимость итоговой оценки от наличия очков. Медицинские очки прибавляли 1.5-2 балла. Автор пишет в статье, что алгоритм не зависит ни от макияжа, ни от причёски и выражения лица, ни от ракурса и освещённости. Однако про очки ничего не сказано. Тем не менее надеюсь приложение будет развиваться и было бы интересно посмотреть на новые результаты спустя какое-то время. Считаю, что это приложение могло бы стать ночным кошмаром для женщин, поскольку те зачастую имеют абсолютно неадекватно завышенную самооценку. Интернет и лайки в социальных сетях сильно испортили женщин.
Можно поподроблее узнать про логику выражения
Посмотрим на среднеквадратичное отклонение в оценках:

ratingDS.groupby('Filename')['Rating'].std().mean()

Оно составляет 0,64, что означает отличие в оценках разных оценщиков менее 1 балла из 5, что говорит о единодушии в оценках красоты.


Разброс значений в оценках не от 0 до 5, а от 1,0 до 4,6, а значит фактически получаем почти 18% разброс, что в последующем переводе к десятибальной шкале доет погрешность почти в 2 балла. Т.е. при обучении можем получить модель корая будет приварнивать 2 объекта у которых разница в красоте равна 3.6(сравнивая 4 и 7.6 модель может поставить им по 5.8) и это не будет считаться ошибкой?

P.S. Если вопрос тупой сильно не ругайте, я в этом не сильно разбираюсь
Как правильно заметили, разброс значений по 10 бальной шкале чуть меньше 2 баллов. Вопрос, что считать ошибкой это вопрос статистической гипотезы. Например, можно предположить, что есть некое «истинное» значение красоты для каждого лица, а оценщики пытаются его угадать, причем матожидание оценок соответствует истине. Хотя, очевидно, что такая гипотеза далека от реальности, она позволит интерпретировать результаты. Из такой гипотезы, например, следовало бы, что нейросеть лучше, чем средний человек, определяет «истинную красоту» и ошибается в 1.5 паза меньше (0.42 против 0.64).
Вопрос о том, что считать «ошибкой», сложен и зависит от того, что именно мы хотим узнать. Например при всех вышеуказанных допущениях, можно принять нулевую гипотезу, например, что A красивее, чем Б, а потом на основании тестов нейросети проверить ее с помощью какого-либо критерия.
Вопрос сложный, что считать ошибкой и короткого и однозначного ответа дать на него не могу
Гм, “красота НЕ в глазах смотрящего” — «оцененных каждая 7 оценщиками из числа китайских студентов.» Ну и результат 7.1/10 на примере фото (если это пример реальной работы) — это, выражаясь мягко, не внушает доверия.
1) Насчет макияжа и прочего — ну так модельные агенства просят фотки без макияжа, с убранными волосами, в купальнике, без каблуков, и т.п… А там думается народ э… прошаренный.
2) Я бы не сказал, что у автора есть модель. У автора есть нейросетевая аппроксимация признаков. А почему это всё так — непонятно. Впрочем это традиционная претензия к нейросетевым технологиям.
3) Вопрос который мне не дает покоя — почему такой признак особи как красота лица получил эволюционное значение/преимущество? Характер — понятно, сила — понятно, но лицо… какая разница? То что с лица воду не пить — это ясно, а то что красивым носом мамонта не напугаешь и косулю не подманишь — это вообще очевиднее очевидного.
3) Есть версия, что красота лица до изобретения косметики очень сильно коррелировала со здоровьем
Эволюция это слепой процесс не имеющий цели и не стремящийся осознанно закрепить какие-либо полезные признаки. Передаются и закрепляются гены способствующие их передаче, иначе говоря, партнёр с красивым личиком более привлекателен для размножения отсюда и выделение этого признака.
Мне кажется, что вопрос как раз в том, почему партнёр с красивым личиком более привлекателен для размножения
Быть может в процессе эволюции, когда видов первобытного человека было более одного определённые черты лица свидетельствовали о принадлежности особи к своему виду и это делало партнёра более привлекательным. Меня бы, если честно, удовлетворил бы и ответ о том, что это всего-лишь ответная реакция в прошивке нашего мозга сформированная случайным образом.

Возможно также сам вопрос поставлен некорректным образом и на самом деле нужно спросить откуда берётся тяга к красоте, попытки найти которую в окружающем заставляют эту красоту сформироваться в глазах смотрящего, а не наоборот.
Мне одно мое фото, выдало 7.5, где я вообще себе не нравлюсь, где нравлюсь ниже, не это нормально вообще?
Sign up to leave a comment.

Articles