麻雀CPU、あったらいいので作ります。② 開発環境編

麻雀CPU

こんにちは。

前回の記事では、「なぜ麻雀CPUを作ろうと思ったのか」を紹介しました。

今回は、このプロジェクトで実際に使用している開発環境を紹介します。

AI開発というと高価な機材が必要なイメージがありますが、このプロジェクトでは「今あるものを活用する」をテーマに進めています。


このプロジェクトで目指すもの

今回開発するのは、「麻雀を自動で打つロボット」ではありません。

このプロジェクトでは、CPUが「何を切るか」を考え、その結果を画面に表示することを目標としています。

CPUのツモや捨て牌については、一緒にプレイしている人が実際に牌を操作することを想定しています。

「それならロボットアームを作って、すべて自動化すればいいのでは?」と思われるかもしれません。

もちろん、そのような仕組みも面白いとは思います。しかし、牌を取り、移動し、正確に捨てる仕組みまで作ろうとすると、機械設計や制御など別の課題が増え、プロジェクトの規模が一気に大きくなってしまいます。

今回作りたいのは、麻雀CPUです。

そのため、CPUが打牌を考え、人がその指示どおりにツモや打牌を行う構成としました。

まずは「考える部分」をしっかり完成させることを目標に開発を進めていきます。

将来的には、卓全体を認識するカメラ構成や、より自動化した仕組みに挑戦するかもしれませんが、それはCPUが完成してからのお楽しみです。


開発環境全体

まずは現在の開発環境です。

全自動麻雀卓を中心に、Webカメラ、ライト、Macを配置して開発しています。

現在設置しているWebカメラは手牌認識用の1台のみです。

今後は、卓全体の状況や捨て牌、鳴き牌なども認識できるようにしたいと考えているため、卓全体を撮影するカメラ構成については今後検討・追加していく予定です。


全自動麻雀卓

使用しているのは アルバン スリム ヴォイス28 です。

もともとは普通に麻雀を楽しむために購入したものですが、まさかAI開発でも活躍することになるとは思っていませんでした。

画像認識では何度も牌を並べたり局を進めたりするため、全自動麻雀卓があることで作業効率がかなり向上しています。

実際にプレイする環境で動作確認できる点も大きなメリットです。


Webカメラ

Webカメラは近所のハードオフで購入したAUKEY PC-LM3の中古品を使用しています。

「まずは動けば十分」という気持ちで購入しましたが、今のところ特に問題なく使えています。

画像認識ではカメラの性能よりも、

  • 毎回同じ位置に設置できること
  • ピントが安定していること
  • 明るさが一定であること

の方が重要だと感じています。

必要になれば買い替える予定ですが、現時点では十分満足しています。


三脚

Webカメラは三脚を使って卓の上から撮影しています。

使用しているのは SLIK STAND POD GX です。

高さや角度を少しずつ調整しながら、「手牌がきれいに映る位置」を探しました。

現在は手牌認識が目的なので、手牌全体が安定して映る位置を優先しています。


ライト

ライトは以前からアウトドア用として持っていたものを流用しています。

使用しているのは Superway LEDランタンです。

画像認識では照明の影響が非常に大きく、同じ牌でも明るさが変わるだけで認識結果に影響が出ることがあります。

できるだけ毎回同じ条件で撮影できるよう、ライトを使用しています。


CPU手牌ガイド

今回の開発で意外と役立っているのが、この自作の手牌ガイドです。

手牌を毎回同じ位置・同じ間隔で並べられるように作成しました。

画像認識では撮影条件をできるだけ揃えることが重要です。

このガイドのおかげで、データ収集や動作確認がかなり楽になりました。

見た目はシンプルですが、このプロジェクトでは欠かせないアイテムになっています。


USB変換アダプター

開発にはMacを使用しているため、Webカメラを接続するためにUSB-AからUSB-Cへの変換アダプターを使用しています。

使用しているのは Anker USB-C & USB-A 変換アダプタです。

目立たない存在ですが、これがないとカメラを接続できません。


開発PC

開発にはM4 Macbook air(13インチ, メモリ16GB, SSD256GB)を使用しています。

プログラムの作成だけでなく、画像認識モデルの学習もこの1台で行っています。

Apple SiliconはPyTorchのMetal(MPS)にも対応しているため、個人開発の範囲であれば十分な性能を発揮してくれています。


使用しているソフトウェア

現在使用している主なソフトウェアはこちらです。

  • Python
  • PyQt6
  • OpenCV
  • PyTorch
  • Ultralytics YOLO
  • timm
  • VS Code
  • Git

それぞれ、

  • Python:開発言語
  • PyQt6:GUIの作成
  • OpenCV:画像処理
  • PyTorch:AIモデルの学習
  • YOLO:牌の検出
  • timm:牌の分類
  • VS Code:コード編集
  • Git:バージョン管理

という役割で使用しています。


最後に

今回紹介した環境は、特別高価な機材ばかりではありません。

普段使っているMac、中古で購入したWebカメラ、もともと持っていたライトなど、「使えるものは使う」というスタイルで開発を進めています。

もちろん、プロジェクトが進むにつれて必要な機材が増えたり、構成が変わったりすることもあると思います。

その際は、このブログでも紹介していく予定です。

次回はいよいよ設計編です。

GUI、画像認識、麻雀ロジック、CPUの思考をどのように分けて設計したのか紹介したいと思います。

コメント

タイトルとURLをコピーしました