AI・機械学習

【初心者OK】PythonとTeachable Machineでじゃんけんを認識!AIと対戦するカメラアプリの作り方

Pythonとティーチャブルマシンで作る!カメラで人間のじゃんけんを認識してAIと対戦する方法

この記事では、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/ からアクセスできます。

  1. 「使ってみる」→「画像プロジェクト」→「標準の画像モデル」を選択
  2. クラス名を「グー」「チョキ」「パー」に変更
  3. 各クラスでウェブカメラを使って50〜100枚程度の手の画像を撮影
  4. 「モデルをトレーニングする」をクリックして学習を実行
  5. 「モデルをエクスポートする」→「TensorFlow」→「Keras」形式でダウンロード

エクスポートすると keras_model.h5labels.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 はデフォルトカメラを指します。外付けカメラを使用している場合は 12 に変更してみてください。

認識精度が低い場合

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ライブラリをインストールする方法

📚 関連記事

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る
徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

もしも

徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

電子工作とプログラミングを同時に学べる

Amazonで見る
実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です