Linuxで顔認証 (howdy)



Linuxで顔認証する方法を説明します。
今回はWindows Hello <font color="Red">非搭載</font>のカメラで認証してみます。



# インストール

公式では以下のように記載があります。

```bash:shell
sudo add-apt-repository ppa:boltgolt/howdy
sudo apt update
sudo apt install howdy
```

これでは、external managedとエラーになり、どうやらUbuntu24.04LTSではインストールできないようです。

Issueに別のインストール方法があったのでそちらでインストールしてみます。

https://github.com/boltgolt/howdy/issues/890

以下のURLから`.deb`を予めダウンロードします。
https://github.com/thecalamityjoe87/howdy/releases/tag/v2.6.1-1


+ 依存関係のインストール
```bash:shell
sudo apt-get update && sudo apt-get install -y \
python3 python3-pip python3-setuptools python3-wheel \
cmake make build-essential \
libpam0g-dev libinih-dev libevdev-dev \
python3-dev libopencv-dev python3-numpy \
python3-opencv libpam-python
```
+ インストール
```bash:shell
sudo dpkg -i howdy_2.6.1-1_all.deb
```

以下の出力が得られればインストール成功です。
```bash:shell
howdy
current active user: haruki-goto

usage: howdy [-U USER] [-y] [-h] command [argument]

Command line interface for Howdy face authentication.

positional arguments:
  command               The command option to execute, can be one of the following: add, clear, config, disable, list, remove, snapshot, test or version.
  argument              Either 0 (enable) or 1 (disable) for the disable command, or the model ID for the remove command.

options:
  -U USER, --user USER  Set the user account to use.
  -y                    Skip all questions.
  -h, --help            Show this help message and exit.

For support please visit
https://github.com/boltgolt/howdy
```

# 顔の追加

顔の追加を行うカメラの設定をします。
```
sudo howdy config
```

ここの`device-path=`に自分のカメラのデバイスのパスを入れて下さい。(例 : `/dev/video0`)

+ 顔の追加

`sudo howdy add`でOKです。


```bash:shell
$ sudo howdy add                  

Adding face model for the user haruki-goto
Enter a label for this new model [Initial model] (max 24 characters): haruki
[ WARN:0@3.701] global ./modules/videoio/src/cap_gstreamer.cpp (2401) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module source reported: Could not read from resource.
[ WARN:0@3.701] global ./modules/videoio/src/cap_gstreamer.cpp (1356) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:0@3.701] global ./modules/videoio/src/cap_gstreamer.cpp (862) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created

Please look straight into the camera
Scan complete

Added a new model to haruki-goto
```

これで完了です！これだけでsudoの入力とかも顔認証されます！！！

## 動作確認

sudo apt updateしてみます。

![howdy.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729508/230390f3-39cd-cdf6-def8-96f93490766f.gif)


```bash: shell
haruki-goto ~/Downloads[0] > sudo apt update                           
[ WARN:0@0.540] global ./modules/videoio/src/cap_gstreamer.cpp (2401) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module source reported: Could not read from resource.
[ WARN:0@0.541] global ./modules/videoio/src/cap_gstreamer.cpp (1356) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:0@0.541] global ./modules/videoio/src/cap_gstreamer.cpp (862) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
[ WARN:0@1.010] global ./modules/imgcodecs/src/loadsave.cpp (773) imwrite_ imwrite_('/usr/lib/security/howdy/snapshots/20241101T142612.jpg'): can't open file for writing: permission denied
Identified face as haruki-goto
Hit:1 https://download.docker.com/linux/ubuntu noble InRelease
Hit:2 https://brave-browser-apt-release.s3.brave.com stable InRelease                                                                                         
Hit:3 https://packages.microsoft.com/repos/code stable InRelease   
~~~~
```

うまくいけました。
加えてログインも顔認証で行けたので非常に便利です！
ウェブカメラ搭載のPCはぜひ導入して下さい。

## まとめ
+ インストールは.debでインストールしないとUbuntu24は実行できないです。
+ `sudo howdy config`でカメラの設定をします。
+ `sudo howdy add`で顔を追加します。
+ あとはsudoとかで顔認証でいけます。

また、howdyはwindows helloも対応しているのでそのwebカメラを持っている人にとってはさらに良いと思います。
設定に解像度やSSHでの設定など細かく決められるので、高速だけど精度落としたり、低速だけど精度上げたりとかも自由に設定できそうです。

以上です。お疲れ様でした。