今回は顔認証(face-authentication)という非常に興味深い機能を試してみましたので、その報告です。よく映画などにも出てくるし、いまでは実際に使われているところもあるかと思いますが、まさかLinuxでしかも自分で試せるとは思っていませんでした。


※ UbuntuのKDMでのログイン時に顔認証を行なっているようす。

必要なものは、WEBカメラを搭載しているUbuntu(Lucid or Maverick)をインストールしたPCだけ。ただし、ここで紹介するのはGNOME版のみです。KDEでも使えますが、導入方法が異なりますし、自分で試してはいませんので、KDE版は省略します(KDE版の方がカッコよさそうですけど)。

pam-face-authenticationの導入方法

顔認証ログインに使用するプログラム(pam-face-authentication)はGoogle Codeでオープンソースとして配布されています。今のところ、バイナリパッケージはPPAなどでもまだ配布されていないようですので(PPAで配布されていました > ※ 追記 参照)、ソースコードをコンパイルしてインストールする必要があります。

STEP 1:開発パッケージの導入
まずインストールに先立ち、開発環境を導入しておきます。

Lucidの場合:
$ sudo apt-get install build-essential cmake qt4-qmake libx11-dev libcv-dev libcvaux-dev libhighgui-dev libqt4-dev libpam0g-dev libswscale0 libhighgui4

Maverickの場合:
$ sudo apt-get install build-essential cmake qt4-qmake libx11-dev libcv-dev libcvaux-dev libhighgui-dev libqt4-dev libpam0g-dev libswscale0 libhighgui2.1

STEP 2:コンパイルとインストール
手順としては、wgetでコードを取得して展開し、makeしてmake installです。checkinstallを利用してパッケージ化した方が便利ですが…。なお、安全のため、/tmpディレクトリで作業します。

$ cd /tmp
$ wget http://pam-face-authentication.googlecode.com/files/pam-face-authentication-0.3.tar.gz
$ tar zxf pam-face-authentication-0.3.tar.gz && cd pam-face-authentication-*
$ mkdir build && cd build
$ cmake -D CMAKE_INSTALL_PREFIX=/usr ..
$ make
$ sudo make install


STEP 3:GDMの設定
/etc/pam.d/gdmという設定ファイルの1行目に下記の行を追加します。
auth sufficient pam_face_authentication.so enableX
viやnanoやgeditを使ってもいいですが、下記のようにsedを使えば一発です。

$ sudo sed -i '1i auth sufficient pam_face_authentication.so enableX' /etc/pam.d/gdm

なお、スクリーンセーバーのロック解除に使う場合は、/etc/pam.d/gnome-screensaverにも同じ設定を施しておきます。

$ sudo sed -i '1i auth sufficient pam_face_authentication.so enableX' /etc/pam.d/gnome-screensaver

これで、ログイン時にユーザを選択すると、カメラの映像が表示されて顔がスキャンされるようになります。

STEP 4:認証画像の登録
以上でインストールは終了ですが、まだ自分の顔が登録されていません。

qt-face顔の登録は、GNOMEメニューの「アプリケーション>未分類>Qt Face Trainer」で行ないます。端末で「qt-facetrainer」というコマンドで起動することもできます。

Qt Face Trainer-1Qt Face Trainerを起動すると、この画面が表示されるので「Next」をクリックします。

Qt Face Trainer-2WEBカメラが認識されていれば、自分の顔が映りますので、「Capture」ボタンをクリックしてしばらく待ちます。

右の枠内にキャプチャされた画像が登録されます。1枚だけだと、きちんと認識してくれないことがありますので、何パターンか登録しておくといいでしょう。某誌の女の子の写真でもログインできてしまうのは問題かも(ry

Qt Face Trainer-3「Next」ボタンをクリックすると、終了画面になります。「Finish」をクリックして終了します。

以上で設定は終了です。ログアウトして試してみて下さい。きちんと導入されていれば、自分の顔がスキャンされ、パスワードなしでログイン出来るはずです。

※ ちなみに、顔認証に失敗した場合は、タイムアウトしてパスワード入力画面になります。

【参照】
OMG!UBUNTU(Login to Ubuntu using your face)
Google Code(pam-face-authentication)


※ 追記:steveacabさんがPPAで配布されているようです。

$ sudo add-apt-repository ppa:antonio.chiurazzi/ppa
$ sudo apt-get update
$ sudo apt-get install pam-face-authentication

で簡単にインストールできます(LucidとMaverickの両方に対応)。