導入
このブログのキャッチコピーは「未来の自分のための技術メモ、時々あなたのためのヒント。」ですが、今回は最新のAIと共に、未来のDIYに挑戦した記録そのものが「ヒント」です。
前回の記事では、Raspberry PiとOpenCVを使ってカメラ映像から顔を「見つける」(検出)方法を解説しました。今回はその次のステップとして、その顔が「誰なのか」を識別する「顔認証」システムの構築に、GoogleのAI「Gemini CLI」とペアプログラミングで挑戦します!
この記事を読めば、AIにどのように指示を出せば協力して開発を進められるのか、その具体的なプロセスを学ぶことができます。
AIとのペアプログラミング:新しい開発スタイル
今回の開発では、以下のような役割分担で進めます。
- あなた (ドライバー):Geminiの提案を元に、実際にコマンドを実行し、コードをファイルに保存し、テストする実行役。
- Gemini CLI (ナビゲーター):あなたの指示に基づき、最適なライブラリを提案し、コードを生成し、デバッグの相談に乗る頭脳役。
Step 1: プロジェクトのキックオフミーティング
まず、私たちの優秀なナビゲーターであるGeminiに、プロジェクトの全体像を伝えます。
【Geminiへの指示プロンプト ①】
Raspberry PiとPythonを使って、リアルタイムの顔認証システムを開発したい。カメラに写った顔が、事前に登録した人物の顔と一致するかどうかを判定するシステムです。
このプロジェクトに最適なPythonライブラリと、全体的な開発ステップを提案してください。
Geminiは、おそらくface_recognition
というライブラリを提案し、大まかな開発の流れ(1. 顔の学習、2. リアルタイム照合)を示してくれるはずです。
Step 2: 環境構築をお願いする
次に、Geminiの提案に基づいて、具体的な環境構築の手順を教えてもらいます。
【Geminiへの指示プロンプト ②】
face_recognitionライブラリの提案、ありがとう。
Raspberry Pi OS (Debian系) に、このライブラリと、その依存関係にあるdlibやOpenCVをインストールするためのコマンドを、ステップバイステップで教えてください。
Geminiが提示したsudo apt-get install ...
やpip3 install ...
といったコマンドを、あなたは順番に実行していくだけです。
Step 3: 「顔学習」スクリプトの作成を依頼する
環境が整ったら、いよいよコーディングです。まずは、システムに「この顔は鈴木さん」「この顔は田中さん」と覚えさせるための学習スクリプトの作成を依頼します。
【Geminiへの指示プロンプト ③】
known_faces
というディレクトリ内に置かれた顔写真(例:suzuki.jpg
)を読み込み、それぞれの顔の特徴量を抽出して、encodings.pickle
という一つのファイルに保存するPythonスクリプトを作成してください。ファイル名から名前を取得し、特徴量と名前をセットで保存するようにしてください。
この指示で、Geminiは顔の「データベース」を作成するencode_faces.py
を生成してくれます。あなたはそのコードをファイルに保存し、known_faces
ディレクトリに自分の顔写真などを置いて実行します。
Step 4: 「リアルタイム顔認証」スクリプトの作成を依頼する
いよいよメインのプログラムです。カメラを起動し、学習したデータと照合するスクリプトを依頼します。
【Geminiへの指示プロンプト ④】
次に、リアルタイムでカメラ映像をキャプチャするPythonスクリプトを作成してください。
以下の要件を満たすようにしてください。
- 先ほど作成した
encodings.pickle
ファイルを読み込む。- カメラ映像から顔を検出し、その顔の特徴量を抽出する。
- 抽出した特徴量が、pickleファイル内の既知の特徴量と一致するかどうかを比較する。
- 一致した場合はその人物の名前を、一致しなかった場合は「Unknown」と、顔の周りの四角形の上に表示する。
- Raspberry Piのパフォーマンスを考慮し、処理する映像の解像度は320×240に落としてください。
この詳細な指示により、Geminiは顔認証のメインロジックであるrecognize_faces.py
を生成します。あなたはこのコードを保存し、実行して、自分の顔が正しく認識されるかテストします。
AIとペアプロした感想とまとめ
いかがでしたでしょうか。
このように、「何をしたいか」を明確な言葉で指示することで、AIは非常に優秀なプログラマーとして機能してくれます。
- 圧倒的な時間効率: 細かい文法やライブラリの関数名を覚えている必要がなく、開発のスピードが劇的に向上します。
- 思考の整理: AIに指示を出すプロセスで、自分自身の頭の中にある要件が整理されていきます。
- 創造性への集中: 面倒な定型コードの作成をAIに任せることで、人間は「このシステムで何を実現したいか」という、より創造的な部分に集中できます。
この記事が、AIを単なる「検索ツールの進化版」ではなく、あなたの開発を加速させる「頼れる相棒」として活用する「ヒント」になれば幸いです。
コメント