プログラミングで顔を見分ける

教えて!PFN

ちいさなおともだちは、おとなといっしょによんでください。

このブログ記事は、朝日中高生新聞2020年11月29日号の連載「プログラミングでかわる!?私たちのミライ」第1回と合わせてお読みください。朝日中高生新聞に掲載された記事全文はこちら(転載許可取得済み)。

はじめに

わたしたちPreferred Networks(プリファードネットワークス、PFN)は、ディープラーニング(深層学習)とよばれる技術を用いて、車の自動運転、工場で働くロボット、病気のガンを早く見つけることなどに使われる技術を研究・開発しています。これらの技術開発には、コンピュータとプログラミングが欠かせません。

このブログでは、PFNのエンジニアが、最新のソフトウェア技術の解説や、プログラミングでできることを少しずつ紹介していきたいと思います。

中高生の皆さんにとって、少し難しいテーマも出てくると思いますが、プログラミングを身につけることでどんなことができるのかを知っていただくことで、プログラミングに興味をもつキッカケになれば嬉しいです。

皆さんはどうやって人の顔を見分けているでしょうか?ヘアスタイル、顔の輪郭(りんかく)、目・鼻・口の形や位置、、、見分けるためのポイントはたくさんあります。人間は無意識にそれらの情報を処理して顔を見分けていますが、コンピュータでそれを実行する場合、どのようなプログラムを書けばいいのでしょうか?

顔認識システムってなに?

まず、コンピュータの「目」となるカメラから得られる画像などの情報を使う必要があります。それらの情報に含まれる人を自動で識別するシステムを「顔認識システム」といいます。例えば、顔画像から目・鼻・口・あごの形や位置など顔の特徴を見つけだして、同じような特徴の顔が写っているほかの画像を検索することができます。

どんなことに使えるの?

デジカメやスマホで「〇〇さんが写っている写真だけ見たい」というときにする画像検索や、スマホやタブレットのロック解除に使用されています。また、空港の出入国審査でパスポートのICチップに登録されている顔の画像と、顔認証ゲートのカメラで撮影した顔の画像を照合して本人確認を行うなどの場面でも利用されています。

簡単な顔認識プログラムを試してみよう

ここでは、インターネット上で無料で公開されているコードとツールを使って顔認識プログラムの作り方をご紹介します。

以下のように、写真の人物の顔の位置を検出して、検出したい人物とどれくらい似ているかを表示するコード例です。

サンプルコード

ディープラーニング技術を用いた顔認識ライブラリ「Face Recognition」を使用します。

プログラミング環境には「Google Colaboratory」というツールを利用します。Google Colaboratoryは、ブラウザ上でプログラムの開発や実行が可能なオープンソースのウェブアプリケーションで、データ分析の現場や研究、教育などで広く用いられています。Googleアカウントを持っていれば、誰でも無料で使うことができます。

コード例を見たい方は、以下の「Open in Colab」というボタンを押してください。

コードは自由に編集することができます。Colaboratory上でコードを変更しても、他の人に影響はないので安心してください。変更したコードは、自分のGoogle Driveに保存することができます。