Ubuntu LinuxでThinkPad X1 CarbonのIR顔認証を有効にする
多くのノートPCには顔認証のためにIR赤外線カメラが搭載されている。特にSurfaceでは標準装備だ。Windows 10ではWindows Helloと呼ばれていて、簡単に言うとノートを開くとそのまま顔をスキャンしてロック解除し、パスワードを入力する必要がなくなる。
Linuxでこの機能は使えるのか?
使える。
howdyというプロジェクトを使えばいい。
https://github.com/boltgolt/howdy
インストール
Ubuntu LinuxでhowdyをインストールするにはPPAを追加する。
sudo add-apt-repository ppa:boltgolt/howdy
sudo apt update
sudo apt install howdy
他のディストリビューションについては公式のインストールマニュアルを参照してほしい。
ここで注意したいのは、howdyのインストール中にpipなどのパッケージマネージャーがサードパーティのPythonパッケージを入れることだ。ネットワークが科学上网状態であることを確認しておいたほうがいい。じゃないと遅すぎる。proxychains4なんかで強制的にプロキシを通すのもありだ。
howdyはざっくり言うとopencvなんかのライブラリを使って顔認証を計算しているらしく、依存関係が多くてディスク容量もかなり食う。潔癖な高貴なArcherたちはインストールしなくていい。
設定
インストールが終わってもすぐには使えず、いくつか調整が必要だ。ThinkPad X1 Carbon 2017のIRカメラ版には実際にはカメラが2つある。IRカメラと通常カメラだ。まずIRカメラの位置を特定する。
sudo apt install v4l-utils
まずv4l-ctlツールをインストールしてカメラの状態を確認する。
v4l2-ctl --list-devices

自分のカメラが2つあるのがわかる。IRと通常だ。IRカメラは/dev/video0であることをメモしておく。

ここでhowdyの設定ファイルに入り、対応するカメラパスを修正し、いくつか設定を変更する。
sudo howdy config
以下の項目を変更する:
device_path = /dev/video0 # IRカメラのパスを変更
dark_threshold = 100 # IRカメラの暗所しきい値を変更。少し高めにすると暗い場所でも認識できる
force_mjpeg = true #カメラがmjpeg形式に対応していればこれを使える

設定変更が終わったらカメラが使えるかテストする。
sudo howdy test
「setMouseCallback on Qt windows」のようなエラーに遭遇するかもしれない。原因はhowdyのインストールスクリプトがpipでopencvを入れていて、新しいopencvがUbuntuで問題を起こすことだ。pipで入れたものをアンインストールして、Ubuntu公式リポジトリのものに戻せばいい。
sudo pip remove opencv-python
sudo apt install libopencv-dev python3-opencv
理論上、インストール後に再テストして問題なければ使える。まずコマンドで自分の顔を追加する:
sudo howdy add
顔ごとに識別用のラベルを追加できる。適当に入力すればいい。
画面をロックしてIRカメラを直視し、そのまま解除できるか試してみよう。自分の環境ではOKだった。環境は多くのArcherたちが最も軽蔑するGnome-Shell 3.36.3だ。高貴なKDEでも動くかもしれない。
以下、いくつかの問題:
Q:解除時に失敗して「Unknown Error 1」と表示されることがある。
A:権限の問題だ。対応する情報に権限を与える:
sudo chmod o+x /lib/security/howdy/dlib-data
sudo chmod a+x /lib/security/howdy/recorders/
あるいはこうする
sudo chmod a+x -R /lib/security/howdy/recorders/
でもあまりおすすめはしない。
Q:顔を登録した後、メガネやマスクをかけたまま解除できる?
A:できない。各状態で顔を登録することを勧める。メガネなし、メガネあり、メガネ+マスクあり……しかも各顔を何回か登録して認識率を上げるといい。ただしマスクありで登録すると、他人に成りすまされる保証はない。
Q:照明なしで認識できる?
A:試した。IRカメラなら可能だ。暗いところでも問題ない。暗所では解除できないとか言ってるやつ、てめえIRカメラ持ってるのか?
Q:通常カメラでも認識できる?
A:できる。設定ファイルに通常カメラを書き込めばいい。ただし暗い環境では無効になるかもしれない。
Q:顔を登録した後、Terminalを開くたびにsudoコマンドがそのまま顔認証される?これ怖すぎる。
A:howdy configコマンドで詳細設定ができる。詳しくは公式Wikiを見てほしい。
コメントは中国語の本家サイトで受け付けています。このミラーは閲覧専用です。