Распознавание лица (howdy)
Введение
Howdy обеспечивает аутентификацию пользователя по геометрии лица. Howdy использует встроенные ИК-излучатели и камеру в сочетании с функцией распознавания лиц.
Используя Howdy совместно с PAM, можно настроить аутентификацию по геометрии лица везде, где до этого работала парольная аутентификация: вход в систему, экран блокировки, sudo, su и т.д.
Список поддерживаемых камер и их настроек можно посмотреть здесь.
Установка
Установить пакет howdy:
# apt-get install howdy
Для возможности настройки в графическом интерфейсе на платформах с KDE (дистрибутивы Альт Рабочая станция К, Альт Образование) установить пакет kde5-kcm-howdy:
# apt-get install kde5-kcm-howdy
Для возможности настройки Howdy в графическом интерфейсе на платформах отличных от KDE можно установить пакет howdy-gtk:
# apt-get install howdy-gtk
Добавление модели лица в Howdy
Графический интерфейс
Модуль «Распознавание лица» (KDE)
В KDE для настройки параметров Howdy и создания моделей лица можно воспользоваться графическим интерфейсом: «Параметры системы KDE5» → «Предпочтения пользователя» → «Распознавание лица».
$ kcmshell5 howdy
В модуле «Распознавание лица» на вкладке «Устройство» необходимо выбрать ИК-камеру и нажать кнопку «Применить»:
В этом же окне можно настроить:
- «Порог яркости» — кадр с яркостью ниже этого порога считается слишком тёмным и распознавание не производится (чем ниже этот параметр, тем меньше темных кадров игнорируется);
- «Достоверность» — уверенность в принадлежности обнаруженного лица пользователю аккаунта (чем значение ниже, тем точнее должно быть совпадение). Не рекомендуется устанавливать значения выше 5;
- «Предпросмотр» — включить камеру для предпросмотра изображения.
Нажатие кнопки «Сброс» приведёт к сбросу настроек к предыдущему сохранённому варианту, а нажатие кнопки «По умолчание» — к настройкам по умолчанию («Камера не выбрана», «Порог яркости»=60, «Достоверность»=3,5).
При сохранении настроек будет запрошен пароль пользователя root:
Для добавления лица пользователя в базу данных на вкладке «Список моделей» модуля «Распознавание лица» необходимо нажать кнопку «Добавить». В открывшемся окне следует ввести имя модели и нажать кнопку «Сканировать»:
Будет запрошен пароль текущего пользователя:
После ввода пароля начнётся процедура создания модели. Чтобы правильно создать модель следует смотреть в камеру.
В случае успешного создания модель появится в списке:
Можно добавить еще несколько вариантов лица, повторно запустив процедуру создания модели (кнопка «Добавить»).
Для удаления модели следует выделить её в списке и нажать кнопку «Удалить»:
Howdy GTK
Запуск (для пользователя должен быть настроен sudo):
$ sudo howdy-gtk
При первом запуске будет запущен мастер настройки Howdy:
В ходе работы мастера настройки Howdy найдёт и покажет все доступные камеры. На этом шаге необходимо выбрать ИК-камеру («Рекомендуется, совместимая инфракрасная камера»):
На следующем шаге проверяется работа камеры:
Затем добавляется модель лица. Здесь необходимо нажать ссылку «Начать сканирование лица»:
Если модель лица добавлена успешно, на следующем шаге настраивается политика достоверности (параметр certainty):
При всех последующих запусках будет открываться окно «Настройка Howdy» где можно просмотреть настройки камеры (вкладка «Камера»), добавлять/удалять образцы для разных пользователей (вкладка «Образцы»):
Командная строка
Все настройки Howdy можно выполнить в командной строке.
Синтаксис команды howdy:
# howdy [-U пользователь] [-y] команда [аргумент]
где команда может принимать одно из следующих значений:
- add — добавить новую модель лица пользователя;
- clear — удалить все модели лица пользователя;
- config — открыть файл конфигурации в редакторе по умолчанию;
- disable — отключить или включить howdy;
- list — вывести список всех сохраненных моделей лица пользователя;
- remove — удалить определённую модель лица пользователя;
- snapshot — сделайте снимок с камеры;
- set — установить параметр конфигурации;
- test — выполнить тест камеры и методов распознавания;
- version — вывести версию howdy.
В конфигурации Howdy в параметре device_path необходимо указать устройство ИК-камеры, например:
device_path = /dev/video0
Сделать это можно:
- отредактировав вручную файл /etc/howdy/config.ini;
- открыв файл конфигурации для редактирования в текстовом редакторе по умолчанию командой:
# howdy -U user config
- выполнив команду:
# howdy -U user set device_path /dev/video0
# EDITOR=vim howdy -U user config
В большинстве случаев устройством для веб-камеры будет /dev/video0.
Установить пакет v4l-utils:
# apt-get install v4l-utils
Вывести список устройств:
$ v4l2-ctl --list-devices
Integrated Camera: Integrated C (usb-0000:00:14.0-7):
/dev/video0
/dev/video1
/dev/video2
/dev/video3
/dev/media0
/dev/media1
Получить информацию по конкретному устройству:
$ v4l2-ctl -d /dev/video0 --all
Устройство должно иметь возможность захвата видео, а не только захвата метаданных.
Получить список камер также можно, выполнив команду:
$ find /dev/v4l/by-path/*
/dev/v4l/by-path/pci-0000:00:14.0-usb-0:7:1.0-video-index0
/dev/v4l/by-path/pci-0000:00:14.0-usb-0:7:1.0-video-index1
/dev/v4l/by-path/pci-0000:00:14.0-usb-0:7:1.2-video-index0
/dev/v4l/by-path/pci-0000:00:14.0-usb-0:7:1.2-video-index1
После установки правильного пути к устройству, можно выполнить команду:
# howdy -U user test
Будет открыто окно для тестирования (для выхода необходимо в терминале нажать <Ctrl>+<C>).
Для добавления лица пользователя в базу данных для распознавания следует выполнить команду:
# howdy -U user add
Добавление образца лица пользователя user
Использование метки по умолчанию "Модель №1", так как установлен флаг -y
Пожалуйста, смотрите прямо в камеру
Сканирование завершено
Добавлен новый образец лица пользователя user
Можно добавить еще несколько вариантов лица, повторно запустив команду howdy add.
Если для пользователя настроен sudo он может самостоятельно добавить образец своего лица, выполнив команду
$ sudo howdy add
Добавление образца лица пользователя user
Введите название для нового образца лица [Модель №2]:
Пожалуйста, смотрите прямо в камеру
Сканирование завершено
Добавлен новый образец лица пользователя user
Получить список всех моделей для пользователя можно, выполнив команду:
# howdy -U user list
Найденные образцы лица для пользователя user:
ID Date Label
0 2023-12-12 10:19:19 test1
1 2023-12-12 10:28:49 test2
2 2023-12-12 10:57:50 Модель №2
3 2023-12-12 11:04:23 Модель №3
Для удаления определённой модели лица пользователя необходимо указать идентификатор этой модели:
# howdy -U user remove 3
Это удалит образец лица с названием "Модель №3" для пользователя user
Вы все равно хотите продолжить? [y/N]: y
Удален образец лица 3
Удалить все модели лица пользователя можно, выполнив команду:
# howdy -U user clear
Будут удалены все модели для пользователя user
Вы все равно хотите продолжить? [y/N]: y
Образцы лица удалены
Изменить значение параметра конфигурации howdy можно, выполнив команду howdy set, например:
# howdy -U user set dark_threshold 70
Файл конфигурации обновлен
Данная команда установит для параметра dark_threshold («Порог яркости») значение 70.
Настройка аутентификации
Чтобы Howdy мог аутентифицировать пользователя, необходимо в тот файл конфигурации PAM, где может потребоваться использование Howdy добавить строку:
auth sufficient pam_howdy.so
Например, для настройки локальной аутентификации эту строку следует добавить в начало файла /etc/pam.d/system-auth-local-only:
#%PAM-1.0
auth sufficient pam_howdy.so
auth required pam_tcb.so shadow fork nullok
account required pam_tcb.so shadow fork
password required pam_passwdqc.so config=/etc/passwdqc.conf
password required pam_tcb.so use_authtok shadow fork nullok write_to=tcb
session required pam_tcb.so
В данном случае сначала будет проводится проверка распознавания лица, и в случае если лицо не распознано, будет запрошен пароль.
Аутентификация по лицу при входе пользователя в систему:
Запрос пароля, если лицо не распознано:
Аутентификация по лицу при регистрации пользователя в консоли:
Если для пользователя не созданы модели, будет сразу запрошен пароль.
Ограничение прав пользователей
По умолчанию при сохранении настроек howdy в модуле «Распознавание лица» запрашивается пароль администратора, а при создании и удалении модели — пароль пользователя (см. /usr/share/polkit-1/actions/org.kde.kcontrol.kcmhowdy.policy). Изменить это поведение можно при помощи средств polkit.
Например, чтобы запретить пользователю test удалять модели в модуле «Распознавание лица» можно создать файл /etc/polkit-1/rules.d/60-kcmhowdy.rules со следующим содержимым:
polkit.addRule(function (action, subject) {
if (action.id == "org.kde.kcontrol.kcmhowdy.removefacemodel" &&
subject.user == test) {
return polkit.Result.NO;
}
})