ネットワークカメラを用いた顔認識及び人物特定システムの構築 [防犯カメラの自作]
1. はじめに
放送大学のオンライン授業である「情報ネットワーク」のレポートで「情報ネットワークの発展学習及び活用」として作成したものを一般公開しています。
2. 前提条件
AIの知識(Python + TensorFlow) |
Webサーバ、データベースの知識 |
サーバサイドスクリプト(PHP or Ruby or Pythonなど) |
クライアントサイドスクリプト(JavaScript + Ajax) |
Linuxの操作・管理 |
Raspberry Piを使用する際には電子工作の知識が必須。 |
3. 応用例
今回のシステムはいわゆる「ロボットの目」としても機能するので、距離センサーなどを組み合わせればロボットアームで物体を掴むことも可能です。
その他に全自動のロボットカー、ドローンなどにも利用可能です。
4. 内容
授業で登場した「AI」「IoT」「ビックデータ」などを利用してシステムを構築する。このシステムは自動監視カメラで指名手配犯や任意の人物を特定するシステムである。
インターネットから自動収集したビッグデータを用いて「画像から顔領域を検出する1つ目のAIモデル」を作成する。次に「顔を判別する2つ目のAIモデル」を作成する。
この2つのAIを用いてネットワークカメラに写っている人物の特定を行う。
※実際に試したところ、1つのAIより2つのAIに分割して組み合わせると精度が高くなります。
4.1 開発環境
・ディープラーニングライブラリにはTensorFlowを使用する。 |
・AIモデルの学習及び作成にはクラウドのPaaS形態であるGoogle Cloud Platformを使用する。 |
※Google Cloud Platformではなく、自前のGPUでもOK。
4.2 1つ目のAIモデル
年齢/性別/人種別など様々な顔画像をインターネットから3,000-10,000枚ぐらい自動収集する。そして、全ての顔画像に対して顔領域のラベリングを行う。ラベリング作業は可能な限りOpenCVなどを用いて自動化する。
次に、TensorFlowの一般物体検出アルゴリズム(SSD - Single Shot multibox Detector)の学習済みモデルを用いてObject Detection APIで「画像から顔領域を検出」するAIモデルを転移学習で作成する。
※この顔領域の検出は精度が非常に高いです。97%以上は検出。
4.3 2つ目のAIモデル
ネットワークカメラで特定したい人物の顔画像を最低でも200枚以上収集する。多いほど、精度があがる。そして、TensorFlowで畳み込みニューラルネットワーク(CNN)を用いて「顔を判別」するAIモデルを作成する。
4.4 カメラ
ネットワークカメラまたはWebカメラを用いてパソコンと連携する。もしくは、Raspberry PiなどにWebカメラまたは単にカメラを搭載する。
※Raspberry Piを使用する場合は人感センサーなどを組み合わせる事が可能である。
4.5 サーバー関連
Apache HTTP Serverを用いてWebサーバーを運用する。そして、サーバーサイド・スクリプト及びHTML/JavaScript+AjaxでWebサイトを構築する。
そのWebサイトではネットワークカメラの状況を映し出す。特定の人物がカメラに映りこんだ場合にデータベースに人物写真と日時を記録する。必要であればメール送信やスマートフォンにプッシュ通知を送る。
5. 最後に
基本的に外部設計のみです。詳細はネットで調査して下さい。
関連記事
この記事を書いた人
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
プチモンテ代表、アーティスト名:プチモンテ | |
🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~ |
オリジナル曲を始めました✨
YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte