Morikatron Engineer Blog

モリカトロン開発者ブログ

PythonのGUIフレームワーク「Dear PyGui」の紹介

(2021/2/01/06追記) この記事を書いた当時から Dear PyGui のバージョンが上がり、記事内のコードは最新の Dear PyGui では動かなくなりました。
Ver1.0.0 以降の Dear PyGui 向けに新しい記事を書きましたので、そちらもご参照ください。

Dear PyGui チートシート(Ver.1.1.3 対応版)

どうも、モリカトロン株式会社でエンジニアおじさんを営んでいる岡島です。

お仕事でプログラムを書いていると、ときどきGUIアプリケーションを作る必要が出てきてきます。 そういう場合今まではPythonのQtバインディングであるPyQtPySide(Qt for Python)を使っていたのですが、これらには

  • pip installとは別にQtのインストールが必要(インストールには割と時間がかかる)
  • 高機能で色々なことが出来る反面、覚えないといけないことが多い(すぐに忘れるので都度調べることになる)

という不満がありました。ちょっとしたGUIアプリケーションを作るなら、シンプルで簡単に使えるフレームワークが良い…
(Pythonに標準搭載されているtkinterもちょっと苦手です)

ということで今回は最近使い始めたGUIフレームワーク「Dear PyGui」を紹介します。

続きを読む

「toio SDK for Unity」v1.1.0の更新

はじめまして、モリカトロン株式会社・AIエンジニアの舒(ジョ)と申します。今年4月からモリカトロンに入社しました。大学と院生の専門は機械電子システムで、機械学習に触れたこともあります。

会社の皆と一緒に「toio SDK for Unity」一部の開発に参加して、いろいろな知識を学びました。 まず、「toio SDK for Unity」とは何かを紹介させていただきます。

  • 「toio SDK for Unity」
    • v1.0
  • v1.1
    • 1. 姿勢検出
    • 2. ダブルタップ検出
    • 3. モーター速度検出
    • 4. シェイク検出
    • 5. 目標指定付きモーター制御
    • 6. 加速度付きモーター制御
  • 検出できる状態のシミュレータ
  • 最後に
続きを読む

UE4.26 に新規追加されたUE4MLを試す

どうも、モリカトロン株式会社でプログラマおじさんを営んでいる岡島です。

先日正式リリースされた Unreal Engine 4.26.0 に UE4ML という機械学習関係っぽい名前のプラグインが追加されたという情報を見つけたので、早速試してみました。

UE4ML はブログ執筆現在、公開されたばかりの実験的機能です。
README.md には、まだこの仕組みを使ってトレーニングした例がない(見せられるものという意味だと思いますが…)と書かれている点をご留意ください。

  • UE4ML とは?
    • 対応プラットホームは現状Windowsのみ
  • サンプルを動かしてみる
    • Unreal Engine 4側の作業
    • Python 側の作業
    • 公式の手順
    • 実行エラーを回避して動作させる
  • 最後に
  • おまけ
続きを読む

自動微分+XLA付き機械学習フレームワークJAXを使用してMNISTを学習させてみる

こんにちは、エンジニアの竹内です。
深層学習を行う際によく利用されるフレームワークといえばGoogleが開発しているTensorflowとFacebookが開発しているPytorchの2大巨頭に加えて、Kerasなどが挙げられるかと思いますが、今回はそのような選択肢の一つとしてGoogleが新しく開発している*1新進気鋭(?)の機械学習フレームワークJAXを紹介したいと思います。
github.com

*1:あくまでリサーチプロジェクトの一つであり、公式の製品では無いらしいです。

続きを読む

AIネット対戦システムの紹介2

こんにちは、モリカトロン株式会社チーフエンジニアの松原です。

前回記事(AIネット対戦システムの紹介 - Morikatron Engineer Blog)に続きまして、AIネット対戦システムのAIクライアント(ゲームをプレイするためのプログラム)を紹介いたします。まずは「ゲームをプレイするプログラム」の仕組みについて、プログラマ以外の方でもわかるよう説明してみます。そして後半はAIネット対戦システム上でリバーシのランダムプレイヤーを実現するプログラムコードを紹介します。

 目次

  • はじめに
  • 「ゲームをプレイする」プログラムとは
  • リバーシをプレイするプログラムコード
  • 思考ルーチンに渡されるデータ
  • 思考ルーチンの内容
  • より強い思考ルーチン
  • おわりに
続きを読む

可搾取量(exploitability)で不完全情報ゲームの戦略を評価する

こんにちは、エンジニアの竹内です。
以前のブログ記事【CFR】不完全情報ゲームを学習するAIを実装してみる【KuhnPoker】 - Morikatron Engineer Blogにて二人不完全情報ゲームのナッシュ均衡を計算的に求めるCounterfactual Regret Minimizationというアルゴリズムを紹介しました。
その際、最終的に得られた戦略プロファイルが解析的に計算されたナッシュ均衡と近い値をとっているかを確認することでアルゴリズムの正当性を示していました。
しかし、この方法では「戦略の更新を繰り返すたびにナッシュ均衡に近づいているのか」がわからないだけでなく、そもそも解析的にナッシュ均衡を計算できないゲームについては最終的に得られた戦略プロファイルを評価することができません。

そこで今回は、二人不完全情報ゲームにおける戦略プロファイルを評価する際に有効な「可搾取量(exploitability)」という指標を紹介し、前回Pythonで実装したCFRアルゴリズムに組み込んでいきたいと思います。

  • 可搾取量とは
    • 可搾取量の定義
      • 定義
    • 可搾取量の具体的なイメージ
  • 実装
    • 大枠
    • 最適反応戦略と可搾取量の計算
    • 正しく実装できているかチェック
    • CFRアルゴリズムのパフォーマンス
  • まとめ
  • Reference
続きを読む

CEDEC2020の補足 ー格闘ゲーム編その3ー

どうも、モリカトロンのプログラマおじさん、岡島です。 CEDEC からだいぶたってしまいましたが、前回 からの続きで 接待プレイについての補足などをしていこうと思います。

  • 「接待」について
  • そもそもなんで接待プレイをAIにさせたかったのか
  • 接待プレイの中身について
  • 原理的には「学習後に調整ができるAI」なので接待以外にも
  • 最後に
続きを読む