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

Screenshot-20200728110725-685x256.png

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

Screenshot-20200728111119-757x595.png

ここでhowdyの設定ファイルに入り、対応するカメラパスを修正し、いくつか設定を変更する。

sudo howdy config

以下の項目を変更する:

device_path = /dev/video0  # IRカメラのパスを変更
dark_threshold = 100 # IRカメラの暗所しきい値を変更。少し高めにすると暗い場所でも認識できる
force_mjpeg = true #カメラがmjpeg形式に対応していればこれを使える

Screenshot-20200728111127-646x112.png

設定変更が終わったらカメラが使えるかテストする。

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を見てほしい。

本家 plumz.me でこの記事にコメントする

コメントは中国語の本家サイトで受け付けています。このミラーは閲覧専用です。

目次