この記事では、PythonとTeachable Machine(ティーチャブルマシン)を使って、カメラで人間のじゃんけんの手を認識し、AIと対戦するプログラムを初心者向けに丁寧に解説します。
「AIとじゃんけん対戦」と聞くと難しそうに感じるかもしれませんが、心配はいりません。プログラミングの基礎知識がない方でも楽しみながら学べる内容になっています。とあるセミナーでも大好評だったコンテンツですので、ぜひ一緒にAIの楽しい世界を体験してみましょう!
開発環境の準備
まず、このプロジェクトに必要なツールと環境設定を確認しましょう。
必要なPythonのバージョン
動画内ではPython 3.11 を使用していますが、Python 3.7以上であれば問題なく動作します。お使いの環境に合わせてインストールしてください。
統合開発環境(IDE)の選び方
IDEはPyCharm(コミュニティ版・無料)を使用して解説しています。ライブラリのバージョン管理が GUI で行えるなど、初心者に特におすすめです。
もちろん、Visual Studio Code・Jupyter Notebook・メモ帳など他の環境でも問題ありません。重要なのは「Pythonコードを書いて実行できる環境があること」です。
PyCharmの導入手順は以下の記事で詳しく解説しています。
👉 PyCharmのインストールと初期設定方法(初心者向け)
使用するライブラリ(OpenCV・TensorFlow)
このプロジェクトでは主に以下の2つのライブラリを使用します。
- OpenCV:カメラ映像の取得・画像処理
- TensorFlow(Keras):Teachable Machineで作成した機械学習モデルの読み込みと推論
- NumPy:数値計算(TensorFlow導入時に自動インストールされます)
ターミナルまたはコマンドプロンプトで以下のコマンドを実行してインストールしてください。
pip install opencv-python
pip install tensorflow
⚠️ 似た名前のパッケージが多いため、コマンドは正確にコピーしてください。
コマンドプロンプトを使ったライブラリのインストール方法が不安な方は、以下の記事を参考にしてください。
👉 Pythonライブラリをコマンドプロンプトでインストールする方法
動作確認済みのライブラリバージョン
今回使用した主なライブラリのバージョンは以下の通りです。厳密に合わせなくても動作しますが、エラーが出た場合の参考にしてください。
tensorflow : 2.15.0
opencv : 4.9.0.80
numpy : 1.26.4
scikit-learn : 1.4.1.1
バージョンを指定してインストールする場合は、以下のように記述します。
pip install tensorflow==2.4.0
💡 PyCharmを使っている場合は、GUI上で簡単にバージョンを変更できます。
講座の全体像:3ステップで完成するじゃんけんAI
この記事は、以下の3本の動画を一部再編集してテキスト化したものです。各ステップを順番に進めることで、カメラでじゃんけんを認識してAIと対戦するPythonアプリが完成します。
ステップ1:じゃんけんゲームの基礎を作る
まず最初のステップでは、Pythonだけでシンプルなじゃんけんゲームのロジックを作成します。グー・チョキ・パーの判定と勝敗判定のアルゴリズムを理解することが目的です。
以下の動画で詳しく解説しています(文字が小さい場合は最大化またはYouTubeでご覧ください)。
ステップ2:Teachable Machineで画像認識モデルを作る
次に、GoogleのTeachable Machine(ティーチャブルマシン)を使って、カメラで撮影した手の画像から「グー・チョキ・パー」を識別する機械学習モデルを作成します。
Teachable Machineはブラウザ上で操作でき、コードなしでAIモデルを学習・エクスポートできるため、初心者に最適なツールです。
- ブラウザでカメラを使って手の画像データを収集する
- 「グー」「チョキ」「パー」の3クラスを学習させる
- TensorFlow形式でモデルをエクスポートする
ステップ3:PythonとOpenCVで統合して対戦ゲームを完成させる
最後のステップでは、ステップ1で作ったゲームロジックと、ステップ2で作った画像認識モデルをOpenCVのカメラ映像と組み合わせて、リアルタイムでAIとじゃんけん対戦できるアプリを完成させます。
Teachable Machineでじゃんけん認識モデルを作る手順
Teachable Machineは https://teachablemachine.withgoogle.com/ からアクセスできます。
- 「使ってみる」→「画像プロジェクト」→「標準の画像モデル」を選択
- クラス名を「グー」「チョキ」「パー」に変更
- 各クラスでウェブカメラを使って50〜100枚程度の手の画像を撮影
- 「モデルをトレーニングする」をクリックして学習を実行
- 「モデルをエクスポートする」→「TensorFlow」→「Keras」形式でダウンロード
エクスポートすると keras_model.h5 と labels.txt の2ファイルが入ったZIPが得られます。このファイルをPythonプログラムから読み込みます。
Pythonコード:じゃんけんAI対戦プログラムの実装
以下が完成版のじゃんけんAI対戦プログラムのコア部分です。コードの各部分にコメントを付けて解説しています。
モデルの読み込みとカメラ起動
import cv2
import numpy as np
from keras.models import load_model
import random
# Teachable Machineからエクスポートしたモデルを読み込む
model = load_model("keras_model.h5", compile=False)
# ラベルファイルを読み込む(グー・チョキ・パーの順番)
with open("labels.txt", "r") as f:
labels = [line.strip().split(" ", 1)[1] for line in f.readlines()]
# カメラを起動(0はデフォルトカメラ)
cap = cv2.VideoCapture(0)
じゃんけんの手を認識して勝敗を判定する
def judge(player, ai):
"""勝敗判定:player・aiはともに 'グー'/'チョキ'/'パー' の文字列"""
if player == ai:
return "引き分け"
wins = {"グー": "チョキ", "チョキ": "パー", "パー": "グー"}
return "あなたの勝ち!" if wins[player] == ai else "AIの勝ち!"
while True:
ret, frame = cap.read()
if not ret:
break
# カメラ映像を224×224にリサイズしてモデルに入力
img = cv2.resize(frame, (224, 224))
img_array = np.asarray(img, dtype=np.float32).reshape(1, 224, 224, 3)
img_array = (img_array / 127.5) - 1.0 # 正規化
# 推論(予測)を実行
prediction = model.predict(img_array, verbose=0)
index = np.argmax(prediction)
player_hand = labels[index]
confidence = prediction[0][index]
# AIのランダムな手を生成
ai_hand = random.choice(["グー", "チョキ", "パー"])
result = judge(player_hand, ai_hand)
# 結果をカメラ映像上に表示
cv2.putText(frame, f"You: {player_hand} ({confidence:.0%})",
(10, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
cv2.putText(frame, f"AI: {ai_hand}",
(10, 80), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
cv2.putText(frame, result,
(10, 130), cv2.FONT_HERSHEY_SIMPLEX, 1.2, (255, 255, 0), 3)
cv2.imshow("じゃんけんAI対戦", frame)
# 'q'キーで終了
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
よくあるエラーと対処法
初心者の方がつまずきやすいポイントとその解決策をまとめました。
TensorFlowのインポートエラーが出る場合
TensorFlowはPythonのバージョンによっては最新版が動作しないことがあります。エラーが出た場合はバージョンを指定してインストールしてみてください。
# Python 3.9〜3.11の場合はこちらを試す
pip install tensorflow==2.12.0
# それでも解決しない場合
pip install tensorflow-cpu==2.12.0
カメラが起動しない場合
cv2.VideoCapture(0) の 0 はデフォルトカメラを指します。外付けカメラを使用している場合は 1 や 2 に変更してみてください。
認識精度が低い場合
Teachable Machineでの学習データが不足している可能性があります。以下の点を見直してみましょう。
- 各クラスの画像を100枚以上に増やす
- 照明の明るさや角度を変えながら撮影する
- 背景が明るく均一な場所で撮影する
- 手が画面の中央に来るようにする
まとめ:PythonとTeachable Machineでじゃんけん認識AIを作ろう
この記事では、PythonとTeachable Machineを使ったじゃんけん認識AIの作り方を解説しました。改めて全体の流れを振り返りましょう。
- ✅ Python 3.7以上・OpenCV・TensorFlowの環境を準備する
- ✅ Teachable Machineでグー・チョキ・パーの画像認識モデルを作成・エクスポートする
- ✅ Pythonでじゃんけんの勝敗ロジックを実装する
- ✅ OpenCVのカメラ映像とモデルを組み合わせてリアルタイム対戦を実現する
Teachable MachineとPythonの組み合わせは、じゃんけん以外にも「表情認識」「ポーズ認識」「物体分類」など様々なAIアプリに応用できます。今回の経験を土台に、ぜひ自分だけのAIアプリ作りに挑戦してみてください!
関連記事もぜひあわせてご覧ください。
👉 PyCharmのセットアップ方法(初心者向け完全ガイド)
👉 pipコマンドでPythonライブラリをインストールする方法
📚 関連記事
- PyCharmのインストールと初期設定方法(初心者向け)— 対象記事で推奨されるIDEの詳細な導入手順
- Pythonライブラリをコマンドプロンプトでインストールする方法— OpenCV・TensorFlowなど必要ライブラリのインストール方法
- 【機械学習】Pythonでできるリアルタイム顔認識プログラムのサンプル— OpenCVを使ったカメラ映像処理の実装参考例
- 【機械学習】リアルタイムのカメラ映像で顔にモザイクを付けるスクリプト— カメラ画像認識とリアルタイム処理の実装例








