Comments 25
При рассматривании свадебных фото, часто возникает вопрос: «Она может быть такой?»
Интересно было бы увидеть зависимость рейтинга от ракурса, освещения и макияжа для одних и тех же людей
Но это в теории. Реально наверняка будет разница, но это можно проверить уже с помощью выложенного кода/приложения
В теории да, можно распознать человека по фото и посмотреть в базе данных какое значение "красоты" для этого человека было определено (или вычислить его по другим фоткам), но суть-то здесь не в этом. Проблема красоты как раз в том, что один и тот же человек при разных уловиях может быть как топ-красавчиком, так и 2/10 уродцем даже для такого прохаваного в этом деле механизме, как человеческий мозг.
Сложно будет найти даже двух людей, которые одинаково ранжируют 1000 фотографий по красоте. Что уж говорить, что сами стандарты красоты очень сильно зависят от эпохи, культуры и прочих социальных факторов.
Как по мне, то красота это почти полная субъективщина.
1. Выбор фото с максимальной оценкой из серии селфи
2. Предложить вариант косметики/прически, которая максимизирует оценку
Ой, всё… :D
Спасибо за расклад, хотя как новичок, хотелось бы подробнее. Т.е. Вы все ключевые моменты вроде и вложили в статью, но я не всё понял… может потому что утро и лень мозг включать… несмотря на это, результат и идея классные!
P.S.: в эпп не хватает немного UX… спиннер когда грузит, вторая кнопка должна появится, только после загрузки фото… но это мелочи, и к статье отношения имеет мало.
Ванесса Мэй получает 3.5, Ким Чен Ын 4.0., а красавчик я только 2.7. Впереди ещё много работы)
- FaceDetector на фотографии от tensorflow жутко тормознутый. Тот же OpenCV детектит лица с камеры (!) непрерывно (около 12-15 кадров в секунду)
- Датасет модели 65Мб это много, пусть даже для разрешения 116x116px
- Interpreter от tensorflow так же жутко тормознутый
Одно из применений для девушек: включаешь камеру для селфи — программа показывает процент «красивости». Меняешь выражение лица, кое-где поправляешь макияж. Как только программа показывает наибольшую оценку «красивости» — нажимаешь «сделать фото», и самое лучшее фото для инстаграма готово.
Другое применение: новый фильтр для фото-альбома — по «красивости». Программа в фоне анализирует «красоту» фото, и присваивает каждой фотографии свой индекс «красоты».
Не пробовали ли Вы пойти обратным путём и по обученной сети оценить какие признаки дают бОльший прирост? Не уверен что понимаю насколько это подъемная задача (учитывая то, что их 512 да еще и они скорее всего не очевидные для человека) но было бы очень интересно на это посмотреть
«Как минимальным образом изменить картинку (то есть в качестве оптимизируемых параметров использовать не веса сети, а пиксели картинки), чтобы максимизировать красоту». По реализации должно быть примерно как neural stule transfer. Кроме того это только десктопно на GPU можно, обучение сети на телефоне долгое время займет, раз даже прямой прогон по несколько секунд занимает. Если будет интересно, могу поиграть с этим и тоже написать по признакам и оптимизации красоты статью. Но может и вовсе ничего не получиться из-за проблемы One pixel attack.
Прпробовал на нескольких своих фото. Оазброс от 5.2 до 7.5
Посмотрим на среднеквадратичное отклонение в оценках:
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. Если вопрос тупой сильно не ругайте, я в этом не сильно разбираюсь
Вопрос о том, что считать «ошибкой», сложен и зависит от того, что именно мы хотим узнать. Например при всех вышеуказанных допущениях, можно принять нулевую гипотезу, например, что A красивее, чем Б, а потом на основании тестов нейросети проверить ее с помощью какого-либо критерия.
Вопрос сложный, что считать ошибкой и короткого и однозначного ответа дать на него не могу
2) Я бы не сказал, что у автора есть модель. У автора есть нейросетевая аппроксимация признаков. А почему это всё так — непонятно. Впрочем это традиционная претензия к нейросетевым технологиям.
3) Вопрос который мне не дает покоя — почему такой признак особи как красота лица получил эволюционное значение/преимущество? Характер — понятно, сила — понятно, но лицо… какая разница? То что с лица воду не пить — это ясно, а то что красивым носом мамонта не напугаешь и косулю не подманишь — это вообще очевиднее очевидного.
Возможно также сам вопрос поставлен некорректным образом и на самом деле нужно спросить откуда берётся тяга к красоте, попытки найти которую в окружающем заставляют эту красоту сформироваться в глазах смотрящего, а не наоборот.
Как научить телефон видеть красоту