LINUX.ORG.RU

Sevimon — программа видеоконтроля напряжения мышц лица

 , , ,


1

1

Программа sevimon предназначена для помощи в контроле напряжения мышц лица через видеокамеру.

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

Sevimon работает следующим образом:

  • на изображении с камеры определяется лицо;
  • лицо сопоставляется с каждой из восьми эмоций (злость, презрение, отвращение, страх, радость, отсутствие эмоций, грусть, удивление)
  • для каждой эмоции даётся некая оценка похожести.

Полученные значения сохраняются в журнале в текстовом формате для последующего анализа программой sevistat.

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

При первом запуске скачиваются модели. После этого программа не требует подключения к интернету и работает полностью автономно.

Подготовлены инструкции для запуска в Linux/UNIX и Windows, а также образ docker для Linux.

Программа написана на Python и распространяется на условиях AGPLv3. Для поиска лиц на изображениях используются наработки проекта Centerface. Для определения эмоций используется проект HSEmotion.

>>> Подробности



Проверено: hobbit ()

//карта эмоций Чака Норриса

Irma ()

Прошу прощения за непрошенную рецензию. Но каждый раз, когда вижу анонс кода от чего-то близкого к датасатанизму, уверен, что при открытии кода увижу адскую кашу, написанную с незнанием 80-90% процентов Python, нарушающую все писаные и неписаные законы оформления кода (в т.ч. основополагающего PEP-8).

Открыл. Увидел всё, что ожидал и даже больше. Зачем, например, в Dockerfile в последней команде RUN запускать само приложение?

Вот почему так всегда?..

emorozov ()
Ответ на: комментарий от emorozov

Открыл. Увидел всё, что ожидал и даже больше. Зачем, например, в Dockerfile в последней команде RUN запускать само приложение?

Ответ кроется в комментарии, который расположен непосредственно перед последней строчкой.

ioctl ()
Ответ на: комментарий от emorozov

увижу адскую кашу

Открыл. Увидел всё, что ожидал и даже больше. Зачем

так сходи, наведи порядок, пулл реквест создай, наконец…

но нет, гораздо приятнее прийти на лор поворчать!

aol ★★★★★ ()
Ответ на: комментарий от aol

так сходи, наведи порядок, пулл реквест создай, наконец…

На всё не создашь. Тем более, по опыту, 90% таких советов игнорируется полностью, как с пустотой разговаривать.

Мне просто вообще интересно, почему, например, люди до сих пор пишут class Foo(object):… Ладно, от этого ничего не ломается. Но вот я пишу код, например, и если я совершенно точно знаю, что не могу объяснить в нём какую-то строчку, то понимаю, что это неправильно, и лезу в документацию, чтобы понять, что же именно написал. Мне кажется, что должно быть именно так, но, к сожалению, всё чаще вижу обратное.

emorozov ()
Ответ на: комментарий от aol

Здесь, кстати, ещё неплохо. Но просто кода мало. PEP-8 нарушается в куче мест, но более-менее читаемо. А так, да, зря критикую, слишком эмоционально, наверное.

Но всё равно интересно, датасатанисты считают, что хотя бы PEP-8 соблюдать - западло?..

emorozov ()

Контроль мышц лица не полон без электродов бьющих за неправильную постановку. А как начало платфориы за контролем счастливости, вполне не плохо.

И, я надеюсь, камера крепится на человеке так чтобы постоянно раздражать, да?

R_He_Po6oT ★★ ()
Ответ на: комментарий от emorozov

Но всё равно интересно, датасатанисты считают, что хотя бы PEP-8 соблюдать - западло?..

Проявите снисхождение, это моя первая программа на питоне.

ioctl ()

А модели натренированы на чём? Видел в одном проекте процесс проставления меток «грустный», «радостный» и т.д. и у меня возникло много вопросов. Там ужимки были и совсем уж постановочные и совсем уж крайние. И задался вопросом - а как сторонний человек определяет эмоции незнакомого человека из рандомного датасета? Я грустный, или я задумавшийся? А задумался я о хорошем, или плохом? Улыбаюсь я натурально, или неприязненно выжидаю конца происходящего? Кто должен это определить и натренировать модели?

R_He_Po6oT ★★ ()
Ответ на: комментарий от imul

А про расслабление мышц я вообще молчу!!! :)

Какими моделями определяли что у меня лицо нахмуренное? Это мой натуральный вид! :)))

R_He_Po6oT ★★ ()

кстати, забавная петля обнаружилась ))

«какаказалось», с автором HSEmotion мы на одной кафедре одного нижегородского вуза были. Он учился, я - работал. ))

aol ★★★★★ ()
Ответ на: комментарий от emorozov

Но всё равно интересно, датасатанисты считают, что хотя бы PEP-8 соблюдать - западло?..

PEP-8 соблюдать - зашкварно. Пожалейте тех, кто будет читать и копипастить эти сраные пробелы.

token_polyak ★★ ()
Последнее исправление: token_polyak (всего исправлений: 3 )
Ответ на: комментарий от aol

так сходи, наведи порядок, пулл реквест создай, наконец…

Напомнить историю с YandereDev’ом? Ему TinyBuild за свой счёт предоставили программиста чтобы «навести порядок». Когда тот закончил YandereDev посмотрел и сказал «я ничего в этом не понимаю» и продолжил пилить свой говнокод.

Так что только форкать.

Gentooshnik ★★★★ ()
Ответ на: комментарий от ioctl

Проявите снисхождение, это моя первая программа на питоне.

Ну, критикующий товарищ предположил нежелание учиться. Надеемся что он был неправ. :)

Gentooshnik ★★★★ ()

А откалибровать эту тулзу можно? Насколько она чувствительна к эмоциям? Допустим, я хочу напряжением ануса менять громкость звука в системе. Сила напряжения отражается на выражении лица. Вопрос только в точности измерения.

cocucka ★★★★☆ ()

А этой программулиной можно контролить эмоции оппонента при игре в онлайн-покер?

drfaust ★★★★★ ()
Ответ на: комментарий от R_He_Po6oT

Какими моделями определяли что у меня лицо нахмуренное?

На сайте Александра Савченко написано про Affect Net.

Какими моделями определяли что у меня лицо нахмуренное? Это мой натуральный вид!

Возможно да, а возможно и нет. Выражение лица зачастую следствие привычки, обычно не осознаваемой.

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

ioctl ()
Ответ на: комментарий от emorozov

Но каждый раз, когда вижу анонс кода от чего-то близкого к датасатанизму,

К «датасатанизму». В этом что-то есть. Де-факто, такие технологии сейчас все более и более используются для разного контроля над людьми.

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

praseodim ★★★★★ ()
Последнее исправление: praseodim (всего исправлений: 1 )
Ответ на: комментарий от ioctl

в конфигурационном файле

Вот это напрягло. Это как редактировать видео в imagemagick? «Всё интуитивно и просто, с помощью команды ffmpeg вытащите необходимый кадр и выделите объект с помощью команды imagemagick....» - Это как-то так? Ненененене, без гуя такое даже пробовать не стану. Хотел дома развернуть, попробовать, но... Блин... Для того чтобы писать лимиты в конфиг надо точно и отчётливо понимать всю работу программы и опции и всю «физиономистику». В данном виде программа не может быть интересной никому кроме автора.

R_He_Po6oT ★★ ()
Ответ на: комментарий от Gentooshnik

Зачем вообще Dockerfile?

  1. Используется менеджер пакетов pip, который ставит отсутствующие в системе зависимости в домашнюю папку. Эти зависимости потом не так-то просто вычистить при удалении программы.

  2. Программа имеет доступ к камере. Если не запускать в докере, то у кого-то могут быть опасения, что она или её зависимости будут сливать изображения куда-то в сеть. Да и файлы пользователя тоже. Конечно это не так, но чтобы это проверить надо разбираться и смотреть код. А докер сразу запускается без сети и доступа к лишним файлам, так что можно быть спокойным.

  3. Для конечного пользователя, желающего использовать докер, Dockerfile не обязателен. Образ уже залит на Docker HUB.

  4. Запуск через докер это лишь один из вариантов.

ioctl ()
Ответ на: комментарий от R_He_Po6oT

Для того чтобы писать лимиты в конфиг надо точно и отчётливо понимать всю работу программы и опции и всю «физиономистику».

С 8 числами не разберётесь?

unDEFER ★★★★★ ()
Ответ на: комментарий от unDEFER

Надо представлять что значат из себя эти числа и когда оно хорошо, а когда плохо, нет? Или это такой тамагочи? Смысл программы, чтобы она сообщала мне о проблемах, или чтобы ковырять параметры?

Хотя, ладно. Я сегодня злой и невменяемый

R_He_Po6oT ★★ ()
Ответ на: комментарий от unDEFER

С 8 числами не разберётесь?

Дополню, что определяемые 8 чисел постоянно выводятся в консоль при работе, так что откалибровать настройки под себя не составит труда.

ioctl ()
Ответ на: комментарий от R_He_Po6oT

Надо представлять что значат из себя эти числа и когда оно хорошо, а когда плохо, нет?

Тут каждый сам определяет, что для него хорошо, а что плохо.

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

ioctl ()
Ответ на: комментарий от ioctl

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

R_He_Po6oT ★★ ()
Ответ на: комментарий от R_He_Po6oT

А ещё лучше чтобы человек видел своё лицо «морфирующее» между этими границами при настройке.

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

R_He_Po6oT ★★ ()
Ответ на: комментарий от ioctl

Используется менеджер пакетов pip, который ставит отсутствующие в системе зависимости в домашнюю папку. Эти зависимости потом не так-то просто вычистить при удалении программы.

Поэтому никто уже не пользуется pip напрямую. Используют `virtualenv`, а ещё лучше poetry или pipenv. poetry по функциональности и удобству превосходит все решения, на мой взгляд.

emorozov ()

Поигрался с программой. Не уверен что обработка значений нейронной сети так должно производиться.

По идее надо брать максимум из всех очков и говорить, что вот она распознанная эмоция. (UPD: Это оказывается уже есть) Ну и уж точно нельзя выводить предупреждение из одного кадра. Надо чтобы нежелательная эмоция несколько кадров подряд превалировала, тогда уж и предупреждать.

unDEFER ★★★★★ ()
Последнее исправление: unDEFER (всего исправлений: 1 )
Ответ на: комментарий от unDEFER

несколько кадров подряд превалировала

Ну или не подряд, а скажем больше чем в 5 кадрах из 10.

Об этом варианте я думал и тут есть следующая сложность:

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

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

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

В целом идею надо тщательно проработать.

ioctl ()
Ответ на: комментарий от R_He_Po6oT

«Это, батенька, не извилина, а след от фуражки»!

hobbit ★★★★★ ()
Ответ на: комментарий от token_polyak

Пожалейте тех, кто будет читать и копипастить эти сраные пробелы.

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

PEP — следствие, Python — причина.

hobbit ★★★★★ ()
Ответ на: комментарий от hobbit

Не совсем. Всё ещё можно делать ублюдские отступы по-относительно-человечески - табуляторами.

token_polyak ★★ ()
Последнее исправление: token_polyak (всего исправлений: 2 )
Ответ на: комментарий от hobbit

А мне нравятся отступы! И Питон тоже :)

«Это, батенька, не извилина, а след от фуражки»!

И горжусь этим :)))

R_He_Po6oT ★★ ()
Ответ на: комментарий от praseodim

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

Свят-свят-свят!

mydibyje ★★ ()
Ответ на: комментарий от mydibyje

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

Если такого менеджера поставили во главе птицефабрики — то да, свят-свят-свят, пропал калабуховский дом.

hobbit ★★★★★ ()
Ответ на: комментарий от R_He_Po6oT

а как сторонний человек определяет эмоции незнакомого человека из рандомного датасета?

в большинстве случаев - плохо определяет

cvs-255 ★★★★★ ()
Ответ на: комментарий от R_He_Po6oT

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

Предложение очень хорошее. Когда придёт время, подумаю как это можно сделать без особого разрастания зависимостей.

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

Спасибо!

ioctl ()
Ответ на: комментарий от ioctl

Ага, и группы мышц, которые хочешь наьренировать :) вот хочу я щёки как у Пелагеи в детстве, значит мне надо их тренировать. Вот пусть он мне считает улыбки :) а кто-то захочет брови как у Валуева, тоже качать надо :)

R_He_Po6oT ★★ ()
Ответ на: комментарий от emorozov

А вам шашечки или ехать?

Вам использовать, пусть и написано может «неказисто» или неиспользовать по причине, что «нарушающую все писаные и неписаные законы оформления кода» и ибо соответственно нет проекта?

Вы знаете как «правильно»? Сделайте, предложите, исправьте. Не хотите, не можете, лень - сидите молча и используйте. Ну или не используйте.

Alexandr06 ()
Ответ на: комментарий от Alexandr06

Да, выплеснул эмоции. Не могу? Как лучше делать я отчасти предложил.

Просто уже есть печальный опыт, когда здесь человек выложил свою программу, я потратил кучу времени, чтобы по полочкам разложить, что улучшить как глобально, так и на уровне оформления кода. В ответ - тишина.

Так что сначала лучше узнать, насколько человек восприимчив к критике. А то потратишь время на pull request или написание длинного комментария, и всё будет впустую.

emorozov ()
Ответ на: комментарий от emorozov

А то потратишь время на pull request или написание длинного комментария, и всё будет впустую.

Если есть желание и готовность внести конкретные предложения, заводите issue или делайте pull request, только лучше с комментариями на первоисточник. Ничего не обещаю, но постараюсь учесть когда будет время.

ioctl ()
Ответ на: комментарий от ArtyomSilchenko

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

emorozov ()
Ответ на: комментарий от ioctl

Используется менеджер пакетов pip, который ставит отсутствующие в системе зависимости в домашнюю папку.

Sevimon - программа

Программа никакие менеджеры пакетов использовать не должна. Это на усмотрение опакечивателя.

Gentooshnik ★★★★ ()
Ответ на: комментарий от Gentooshnik

Посмотрел. Программа никакой менеджер пакетов и не использует, всё в порядке. То что pip использует разработчик и он упомянут в документации - дело десятое.

Gentooshnik ★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.