面白いですね!プログラマーが AI を使って双子の息子を認識するんです! 「この Raspberry Pi の顔認識システムは私のものほど正確ではありません」

面白いですね!プログラマーが AI を使って双子の息子を認識するんです! 「この Raspberry Pi の顔認識システムは私のものほど正確ではありません」

2021年までに、学習アルゴリズムと人工知能の研究を通じて、機械は多くの面で人間よりも優れていると広く信じられています。機械は長い間、製造業やサプライチェーンの分野で主流を占めてきましたが、自動運転や、非常に複雑で包括的な記事の執筆など、より複雑なタスクを引き受け始めています。しかし、顔認識に関しては、機械は本当に人間の脳を超えたのでしょうか?

13年前に一卵性双生児の息子たちが生まれたとき、妻も私もどちらがニコラスでどちらがアレクサンダーかすぐに分かりました。サンフランシスコのカリフォルニア・パシフィック・メディカル・センターのNICUで彼らと8週間過ごした後、私たちは彼らの個々の行動を名前とどのように対応づければよいかが分かりました。私たちは、一卵性双生児の親のほとんどが理解していることを早い段階で学びました。それは、人がどんな人間であるかは、見た目だけでなく、歩き方、話し方、そして世界と関わるときのさまざまな態度の違いによっても決まるということです。この膨大なデータセットを処理することで、人間は一卵性双生児を含む知り合いを瞬時に認識できるようになります。

[[381825]]

写真: アレクサンダーとニコラス

犯罪者の特定から買い物の手助けまで、あらゆることにおいて顔認識が「マトリックスのような特効薬」と呼ばれている中、データセットにわずかな違いしか示されない場合、機械が顔をどの程度正確に認識できるのか、私はいつも疑問に思っていました。たとえば、一卵性双生児の識別などです。

違いを深く掘り下げる

息子たちが成長するにつれ、私たちは彼らの遺伝子構成のユニークさ、つまり本質的には同じ受精卵からクローン化されたという事実について長々と話し合いました(注: 息子たちはスターウォーズのクローン軍団の大ファンだったので、これには非常に高い頻度で「クール」な要素がありました)。彼らにとって、彼らはまったく同じ設計図から作られた、まったく同じ人物なのです。もちろん違いはあり、その違いのせいで時々混乱してしまうのですが、機械もその違いを区別できないのではないかと思います。 DNA が同一であることは重要ですが、遺伝子の本質的な発現と環境の影響は、時間の経過とともに人間がどのように変化し、発達するかに大きな役割を果たします。

たとえば、私は最近指紋リーダー付きの携帯電話を購入したのですが、息子たちにちょっとした実験をしたいかと尋ねました。1人が指紋を入力し、もう1人が自分の指を使ってロックを解除するという実験ですが、当然ながらうまくいきませんでした。子宮内での「指紋」の形成には複数の環境要因(そのうち遺伝的要因は 1 つだけ)が関係しており、双子の指紋が異なる場合が多いことが判明しています。

「一卵性双生児の識別が得意なのは、人間と機械のどちらなのか?」という疑問に答えるために、私は指紋リーダーよりも少し複雑な実験を設計することに決め、その手伝いをするよう訓練された「小さな科学者」(息子たち)の協力を得ました。

実験を構築する

このプロジェクトでは、機械学習と顔認識モデルの実行とトレーニングに必要なすべてのソフトウェアを実行でき、できるだけ安価であるコンピューター システムを構築したいと考えました。 Raspberry Pi を選んだのは、コスト効率が非常に良く、周辺機器をサポートしており、標準の Linux ディストリビューションとソフトウェアのコンパイルに必要なすべてのツールを実行できるためです。

私はすでに他のプロジェクトで使用している Raspberry Pi をいくつか所有しているので、どれがこのアプリケーションに最適かを調べるために 3 つをテストしました。 Pi Zero は正常に動作しましたが、ビデオ フィードのフレームを分析し、必要なソフトウェアをすべてコンパイルするのに 48 時間かかりました (そうです、ソフトウェアのコンパイルには 2 日かかりました)。同様の環境を実行したい方には、より高速なプロセッサ、複数のコア、拡張メモリを備えた Pi 4b (8GB モデル) を強くお勧めします。私たちがテストした 3 つの Pi の詳細とフォーム ファクターを以下に示します。このセットアップ プロセスの残りの部分では、Pi 4b (8GB) を想定しています。

図 | Pi Zero、Pi 3b+、Pi 4b - 目盛り付き鉛筆

このプロジェクトにはウェブカメラも必要です。私はすでに Logitech USB ウェブカメラを持っていますが、これはドライバーをインストールしなくても問題なく動作します。最新の Logitech または類似のウェブカメラであればどれでも動作します。

セットアップ: ステップ 1

Pi をセットアップする最初のステップは、Raspberry Pi OS を micro SD カードにフラッシュし、基本的な設定を行うことです。これを行うには、Raspberry Pi Imager をワークステーションにダウンロードしてインストールします。インストールが完了したら、マイクロ SD カードを挿入し (通常はアダプタを使用)、イメージャーを起動し、オペレーティング システムと SD カードを選択して、「書き込み」を選択します。 OS (オペレーティング システム) には、Debian Linux の移植版であり、機械学習環境をセットアップするために必要なものがすべて揃った Raspberry PI OS (32 ビット) を選択します。 SD カードへの書き込みと検証が完了したら、カードを取り外さないでください。Pi に再度挿入する前に、WiFi、SSH、ビデオ出力の設定という 3 つの追加設定を行う必要があります。

  • WiFi: Pi を起動したら、ローカル ネットワークに接続する必要があります。 wpa_supplicant.conf というファイルを作成し、SD カードの最上位レベルに配置します。ファイルがプレーンテキスト形式であり、.conf で終わることを確認してください。ファイルを保存する前に、地理的な場所の 2 文字の国コードと WiFi ネットワークの SSID と PSK を追加します (二重引用符はそのままにします)。

  • SSH: Pi をヘッドレス (モニターなし) で実行するように設定しているため、管理と構成のために SSH を使用して Pi に接続する方法が必要です。 Linux SSH デーモンを有効にして自動的に実行するには、SD カードの最上位に、内容もファイル拡張子もない ssh という名前のファイルを配置します。
  • ビデオ: ディスプレイを接続せずに Pi を起動しますが、リモートで制御するときにビデオを有効にしたいので、HDMI が検出されなくても強制的にアクティブにする必要があります。 SD カードの最上位にある config.txt というファイルを編集し、hdmi_force_hotplug = 1 という行のコメントを解除します。

次に、マイクロ SD カードを取り出し、Pi に挿入し、電源に接続して電源を入れます。約 1 分後、Pi は完全に起動し、WiFi ネットワークに接続されるはずです。 Pi の IP アドレスについては WiFi ルーターを確認してください。

次に、ターミナル (Mac の場合) を開くか、Putty (Windows の場合) を使用して、ユーザー名「Pi」(デフォルトのパスワードは「raspberry」) として IP アドレスで SSH 接続し、Pi に接続できることを確認します。

セットアップ: ステップ 2

インストール プロセスの 2 番目の手順は、必要なすべてのソフトウェアをインストールしてコンパイルすることです。顔認識タスクを実行するために、OpenCV (オープンソースのコンピューター ビジョン ライブラリ) と Dlib を使用することにしました。 OpenCV と Dlib には、顔認識を含む多くの最適化されたアルゴリズムがあり、業界や学界で広く使用されており、高く評価され、サポートされており、モデルのトレーニングや認識プログラムを実行するために使用できる Python プログラミング言語のインターフェイスを備えています。 Raspberry Pi で OpenCV と Dlib を設定するための例はインターネット上に多数ありますが、簡潔で包括的なものは見つからなかったため、すべての前提条件をインストールし、OpenCV と Dlib のソース コードをコンパイルするための簡単なラッパーを作成しました。このラッパーをダウンロードして実行するには:

  • SSH経由でpiユーザーとしてPiに接続し、piユーザーのホームディレクトリにいることを確認します: cd ~
  • Github 上の Raspberry Pi 顔認識リポジトリのコピーをクローンします: git clone https://github.com/tomalessi/pi-facial-recognition.git
  • インストール スクリプトを実行します (約 1 時間かかります): pi-facial-recognition/pi-setup.sh

セットアップ: ステップ 3

Pi は写真を撮影し、顔認識モデルをトレーニングする準備が整いました。これを行うには、Pi 上のウィンドウ環境を表示して、VNC ビューアーで接続できるようにする必要があります。 Pi で VNC サーバーを有効にし、ワークステーションにクライアントをダウンロードする必要があります。以下の手順に従ってください。

  • Pi のセットアップ: Pi に SSH で接続し、sudo raspi-config コマンドを実行し、下にスクロールして「インターフェース オプション」→「VNC」を選択して有効にします。この機能を有効にした後は再起動する必要があります。
  • ワークステーションのセットアップ: RealVNC から、お使いのプラットフォーム用の VNC Viewer をダウンロードしてインストールします (無料ダウンロード)。インストールしたら、IP アドレスを使用して VNC Viewer から Pi への新しい接続を設定し、ログインできることを確認します。ログインに成功すると、Raspberry Pi OS の背景が表示されます。

顔認識を実行する

顔認識プロセスには、写真の撮影、モデルのトレーニング、ライブビデオの分析という 3 つのステップが含まれます。これら 3 つのタスクはすべて、上記の Github リポジトリから取り込まれた face-req.py Python プログラムを使用して実行できます (注: これは最初のリビジョンであり、エラー処理機能があまりありません。改善をご希望の場合は PR を送信してください)。写真を撮影し、モデルをトレーニングし、ビデオを分析する手順を以下に示します。これら 3 つはすべて、VNC 経由で Pi にログインし、ターミナル ウィンドウが開いていることを前提としています。

  • ライブ ビデオを見た後、次のコマンドを実行し、スペース キーを押して写真を撮ります: python pi-facial-recognition/face-req.py -c photo -n Tom -n パラメータを別の名前に置き換えて、他の人の写真を撮り続けます。終了するには、ターミナル ウィンドウで Ctrl + C を押します。
  • モデルをトレーニングします: python pi-facial-recognition/face-req.py -c train。各写真を分析し、その結果をシリアル化してビデオを分析するには約 10 秒かかります。
  • ビデオを分析し、顔認識モデルを適用します: python pi-facial-recognition/face-req.py -c analyze。約 10 秒後にライブ ビデオが始まります。認識された顔にはすべてその人の名前がラベル付けされ、それ以外の顔は認識不能としてマークされます。終了するには「q」を押してください。
  • 環境をクリーンアップして再度開始するには、python pi-facial-recognition/face-req.py -c clean を実行します。

実験結果

環境が完全にセットアップされた後、私は自分の顔写真を 3 枚、ニコラスの顔写真を 3 枚、アレクサンダーの顔写真を 3 枚撮影し、これらの写真を使用して顔認識機械学習システムをトレーニングしました (正面から 1 枚、左向きから 1 枚、右向きから 1 枚)。これらのテストが行​​われた日には、現在の写真以外の写真には修正は行われませんでした。システムをトレーニングした後、私たちは交代でカメラの前に立ち、機械がカメラを認識できるかどうかを確認しました。

注: 異なる角度で 10 枚の写真を撮るという別の実験を試みましたが、結果は変わりませんでした。これはおそらく、正面の写真でのみ機能するヒストグラム方向勾配 (HOG) 顔認識方法を使用していたためと思われます。

結果: テスト 1

テスト 1 は私と Alexander で、マシンは彼らを正しく認識しました。

結果: テスト 2

テスト2は私とニコラスでした。機械は再びそれを正しく識別しました。私は最初の推測が間違っていたのではないかと考え始めました。おそらく機械が勝つだろうと。

結果: テスト 3

テスト 3 は、私たち 3 人が一緒に参加したこのセッションの「ハイライト」でした。すると機械が故障してしまいました!明らかに、ニコラは2人いません。子どもたちが動き回ると認識が切り替わるが、機械が双子を同時に認識することはほとんどできないことがわかった。非科学的ですが、約 5% の確率で、双子と私を正しく識別しました。

結果: テスト 4

私は、カメラにかざした3歳の双子の写真に対して機械学習モデルがどの程度の性能を発揮するかを見たかったのです。私はこの機械を少しは評価しなければなりません。機械は写真のニコラスを正しく識別しました(最初は)(アレクサンダーは識別しませんでしたが)、レンズ上で写真の方向と距離を少し動かしたところ、アレクサンダーを誤って識別し、ニコラスを識別できませんでした。しかし、これはすでに非常に良い結果です。 やはり、3歳から10歳までの間に子どもたちの顔は大きく変化しています。

アレクサンダー(左)、ニコラス(右)

アレクサンダー(左)、ニコラス(右)

結果: テスト 5

新しいカラー写真(子供はおそらく 4 歳)を試してみましたが、機械は再び故障しました。 2 人の Nicolas を誤って識別しました。

最終テストでは、写真がどれくらい古いと機械に完全に認識されなくなるのかを調べたかったのです。双子が1歳くらいの頃の写真を使いました。機械は私を正しく識別しましたが、双子は識別しませんでした。

注: 12 歳の静止画であっても、妻と私には双子をすぐに見分けることができました。

実験的結論

ここでの最初の結論は明らかです。 75 ドルで、最新の顔認識および機械学習アルゴリズムを実行できる、完全に機能するコンピュータ システムを構築できます (多少の遅さを気にしないのであれば、わずか 10 ドルで入手できるものもあります)。双子を識別するというより複雑なタスクは別として、この機械はライブビデオフィードで双子以外のものを識別することに100%の成功率を達成した。システムは、トレーニングされたすべての非双子に対して 100% の認識成功率を達成しました (ここには示されていない追加の非双子テストも実行しました)。同時に、個人のプライバシーに関する懸念から、私は躊躇しています。この技術は強力で、非常に使いやすく、日常生活では予想もしないような場所に導入される可能性が高いため、悪用されないようにする必要があります。

2 つ目の結論は、私たちの顔の特徴は人生の最初の 13 年間で劇的に変化し続けるため、若者にとって顔の認識が困難になるということです。私は、双子がまだ「幼児」だったころでさえ、古い写真から双子を識別する機械の能力に感銘を受けました。正直、これはすごいです!子供たちの昔の写真を見て誰が誰なのかを判断できるのは、私と妻だけです。

最後に、そして最も重要なことですが、機械が一卵性双生児を識別するのは困難であり、私の子供たちのように明らかに違いがある双子であってもそうであるということに気づきました。このシステムは、特に双子または片方がビデオフレーム内で動いたときに認識に苦労し、誤認がよく起こります。これらの簡単なテストから、現時点では顔認識においては人間の方が機械よりはるかに優れているという結論に達しました。これは驚くべきことではありません。なぜなら、私たちは600万年もの間、感覚を進化させ、洗練させてきたからです。なぜ子供たちの違いを簡単に見分けられるのかは分かりませんが、ただ簡単だということだけは分かります。機械は最終的には人間に追いつくかもしれないが、まだそうではない。

次に何をすべきか

息子たちは、ドアのロックを制御したり、寝室に入るときに挨拶したりするための追加機能を Pi に組み込みたいと考えています。しかし、私たちの結果に基づくと、まず Pi が息子たちを区別する能力を向上させる必要があります (一方が他方の宝物にアクセスできないようにするため)。

システムの精度を向上させるために、Dlib を搭載した畳み込みニューラル ネットワーク (CNN) を使用する (ただし、Raspberry Pi の計算能力には制限があります) か、Pi で GCP、AWS、または Azure のパブリック サービスを呼び出して顔認識を行うなど、いくつかの異なる顔認識技術を試してみたかったのです。

双子の顔認識に関する学術研究も増えているので、ここで指摘した既存の欠陥のいくつかに対処するために技術は今後も確実に改善されていくでしょう。これは私と息子たちが間違いなく注目していく分野です。

<<:  調査:ブラジルのAIスタートアップの50%以上がサンパウロ州に拠点を置く

>>:  「機械が人間に取って代わる」時代が到来。人類はこれからどう生き残っていくのか?

ブログ    
ブログ    
ブログ    

推薦する

TensorFlow と PyTorch: ディープラーニングに最適なフレームワークはどれですか?

この記事を読んでいるということは、おそらくすでにディープラーニングの旅を始めているということでしょう...

...

Googleの研究者が自撮りカメラ用の顔歪み防止アルゴリズムを開発

最近の調査によると、毎日 9,300 万枚の自撮り写真がソーシャル メディアに投稿されており、Ins...

ビッグデータは私たちを新たな AI の冬に引きずり込むのか?

過去数年間の息を呑むようなニュースクリップの数は思い出すのが難しいが、人工知能の歴史は挫折と挫折に満...

AI スタートアップはどうすれば成功できるのでしょうか?ガートナー:「以下の点が不可欠」

[[430175]]デジタル変革の波を受けて、さまざまな新興技術が急速に応用され、普及してきました...

人工知能はどのようにして銀行をより「インテリジェント」にすることができるのでしょうか?

[[263447]]人工知能技術の継続的な導入は、新たな産業発展の中核的な原動力となり、さまざまな...

...

ビデオ通話の低品質なビデオとはおさらば: NVIDIA の新しいアルゴリズムはトラフィックを最大 90% 圧縮できます

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

機械学習を理解するための 3 つの図: 基本概念、5 つの主要な流派、9 つの一般的なアルゴリズム

機械学習は進歩しており、私たちが思い描いている人工知能にどんどん近づいているようです。音声認識、画像...

マスクを着用しているときでも顔認識は役立ちますか?

[[415947]]顔認識技術は今や私たちの生活のあらゆる側面に浸透しています。公共の安全、スマー...

マッキンゼーのレポート:これらの業界が人工知能に転換しなければ、ますます取り残されることになる

最近、マッキンゼーは「人工知能:次のデジタルフロンティア?」と題した80ページのレポートを発表し、人...

AIにソフトウェア開発を教える: IBMオープンソースデータセットProject CodeNetには1,400万のコード例が含まれている

[[399492]] Big Blue は、AI ベースのプログラミング ツール向けの充実したトレー...

...

「AI」の限界:人工知能は未来を変えるが、まだ解決されていない問題がある

[[348196]]画像ソース: unsplash人工知能はこの時代の合言葉であり、技術専門家、学...