TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

ControlNetを「いらすとや」で学習する

先日試したControlNetの学習を「いらすとや」のデータセットで学習させてみた。 データセット 以前にStable Diffusionの追加学習を試したときに収集したいらすとやの22891枚の画像を使用した。 いらすとやの画像説明文に加えて、wd-v1-4-vit-taggerを使用し…

ControlNetの学習を試す

ControlNetは、Stable Diffusionの出力を、スケッチや深度、ポーズなどで制御する手法で、従来のテキストによる条件付けやImage2Imageでは難しかった制御が可能になる。ControlNetを独自のデータセットで学習をしたいと考えており、まずは公式で用意されてい…

PaintsChainerをPyTorchで学習 その2

前回、PaintsChainerをPyTorchにポーティングして着色モデルの学習を行った。 その際、danbooru2017の512x512の画像をすべて使用したが、四コマ漫画のようなイラスト以外の画像も含んでいたため、学習の妨げになっていた可能性があるため、今回は、画像をフ…

PaintsChainerをPyTorchで学習

Stable Diffusionが公開されてから、拡散モデルで自動着色したいと思っていて、自動着色についていろいろ調べていた。最近、Style2Paints V5 Previewが発表されて、拡散モデルによる自動着色で高いクオリティの自動着色が実現できることが示された。 Control…

【Bing】Bingチャットにマインドマップを作らせる

小ネタです。 前回、ChatGPTにマインドマップを作らせてみたが、Bingチャットでも試してみた。プロンプト:「AIの技術」に関するマインドマップを作って回答: ちゃんとツリーになって返ってきた。 前回ChatGPTで試した時は、箇条書きだったので、こっちの方…

【ChatGPT】ChatGPTにマインドマップを作らせる

ChatGPTでマインドマップを作れるか試してみた。プロンプト:「AIビジネスに関してマインドマップを作って」 回答: はい、AIビジネスに関連するマインドマップを作成することができます。以下が一例です: I. AI技術とその概要 A. 機械学習 B. 自然言語処理…

Whisperモデルの軽量化

ONNXにしたWhisperのモデルの推論を速くするために、以下の方法を試した。 OpenVINOで推論 FP16化 INT8量子化 Whisperのモデルはbaseを使用している。 OpenVINOで推論 OpenVINOは、intelのCPUに最適化した推論エンジンである。 ONNX Runtimeの代わりに、Open…

pocketfftを使ってみる

FFT

先日、Whisperで音声認識する処理を実装した際に、FFTの処理でフレームサイズが2のべき乗でない場合にどうやって処理するか戸惑った。Whisperではフレームサイズが400となっており、NAudioのFFTでは、フレームサイズが2のべき乗という制約があり使用できなか…

Whisperでリアルタイムに文字起こしするアプリ

前回の記事で、WhisperのモデルをONNXにして文字起こしができるようになったので、Windowsでスタンドアロンで実行できるアプリを作成した。C#でWPFを使用して開発したので、実行できるのはWindowsのみである。GitHubのReleaseからダウンロードできるようにし…

WhisperのモデルをONNXにする その2

前回、WhisperのモデルをONNXにする方法について記述した。Whisperのモデルは、単体では音声認識はできず、音声をメルスペクトログラムにする前処理と、トークンをデコードして文字列にする後処理が必要になる。 今回は、前処理と後処理をC#で実装する方法に…

WhisperのモデルをONNXにする

WhisperのモデルをONNXに変換する方法について記述する。 Whisperのモデル WhisperのモデルはPyTorchを使ってPythonで実装されている。 そのため、実行にはPyTorchをインストールしたPython環境が必要になる。 環境構築なしでスタンドアロンで利用できると用…

続:どの駒が評価値に寄与しているかを可視化する

先日記事にした駒の働きを可視化するツール(feature_importance.py)に、SVGを出力する機能を追加した。前回は数値で出力して、Excelの条件付き書式のカラースケールで、色に変換してから、ShogiGUIに画像として重ね合わせるということを行っていたが、手間が…

floodgateで任意のソフト同士で対局する方法

floodgateは、30分置きに自動で対局が始まるコンピュータ将棋の対局サイトだが、任意のタイミングで2つのソフトを対局させることができる。 CSAサーバプロトコル CSAサーバプロトコルでは、%%GAMEでgamenameを指定することで、対局条件が同じソフト同士の対…

【論文】Adversarial Policies Beat Superhuman Go AIs

[2211.00241] Adversarial Policies Beat Superhuman Go AIs最先端のコンピュータ囲碁ソフトのKataGoの脆弱性を攻撃することで、高い勝率を上げるエージェントを訓練する方法について書かれた論文。囲碁のルールの設定が公平でないとRedditで批判されている…

棋力計測の戦型分類

floodgateの戦型分類の記事にコメントをいただいたので、棋力測定時の戦型について分類してみた。 棋力測定の方法 dlshogiの棋力測定は、平手開始局面から序盤ランダムありで測定を行っている。 また、基準ソフトとして水匠5を互角になる条件に調整して、リ…

水匠の定跡作成プログラム

第3回電竜戦の水匠の定跡作成プログラムと同様のプログラムを作成した。 DeepLearningShogi/make_book_minmax.py at master · TadaoYamaoka/DeepLearningShogi · GitHub 方式 水匠の定跡作成プログラムと同様に、末端局面(一定の対局数以上の局面)の勝率をMi…

中盤互角局面集

先日、dlshogiと水匠が互角になる探索ノード数を調べたが、初手開始局面からdlshogiはランダムありで測定していた。 初手開始局面からだと、dlshogiは序盤で優勢を築いてそのまま勝つ場合が多いため、中終盤の精度が測定できていない可能性がある。 そこで、…

将棋AI実験ノート:dlshogiと水匠で評価値の割れる局面の精度改善

第3回世界将棋AI電竜戦では、先手の角換わり定跡で、dlshogiが後手番で後手優勢と評価している局面から、定跡を抜けてから反省して負けることがあった。 dlshogiと水匠で評価が分かれる場合、dlshogiが正しくてそのまま勝ち切ることも多いが、特に中盤以降で…

拡散モデルの実装を理解できるノートブック

拡散モデルの実装を理解するために、こちらのノートブックがとても分かりやすかったので紹介する。 diffusion-models-class/unit1 at main · huggingface/diffusion-models-class · GitHub拡散モデル(DDPM)を、以下のように段階的に実装して確認できるように…

floodgateの戦型別先手勝率の変化

先日の第3回世界将棋AI電竜戦では、水匠の先手角換わり定跡の勝率の高さが注目された。 そこで、最近の将棋AI同士の対局で、戦型別の勝率に変化があるか調査した。以下の調査では、戦型の分類にMizarさんが公開されているjsonの定義ファイルを使用している。…

どの駒が評価値に寄与しているかを可視化する

dlshogiのモデルに盤面を入力すると、その盤面の評価値(勝率)を出力できる。 その際、どの駒が評価値に寄与しているか可視化できると、AIがどこに注目しているのかがわかる。 以前に、Attention Branch Networkを使って可視化を試したが、今回は、駒を除くと…

将棋AIの進捗 その60(固定プレイアウトで水匠5と互角になる条件)

dlshogiの棋力測定する際に、dlshogiの過去のバージョンとの対局だとレーティング差が実際よりも大きくなる傾向がある。 そこで、棋力測定では水匠5を加えてリーグ戦で連続対局している。普段の棋力測定では、対局条件をフィッシャールールの持ち時間で対局…

将棋AIの進捗 その59(第3回電竜戦で見つかった課題と対策検討)

第3回電竜戦では、水匠が準備した先手番角換わりの長手数の定跡が、dlshogiの盲点を突いていて定跡を抜けた時点で大差になっていた。具体的には、以下の局面の85手目の8三角打が先手優勢であることをdlshogiが見つけらず、盲点となっていた。 8三角打から…

将棋AIの進捗 その58(訓練の省メモリ化と高速化)

現状のdlshogiのモデルの訓練の実装では、訓練データが多い場合にメモリを大量に消費する課題があった。dlshogiのモデルの訓練は、訓練データをすべてメモリに読み込んで処理を行っている。 そのため、一度に学習できるデータはメモリに読み込める分に制限さ…

第3回世界将棋AI電竜戦 結果報告

週末(12/3,4)に開催された第3回世界将棋AI電竜戦に参加しました。HEROZチームとして、「dlshogi with HEROZ 30b」と「dlshogi with HEROZ 20b」という2つのソフトでエントリしました。 大会の概要 世界将棋AI電竜戦は、コンピュータ将棋開発者の有志により立…

DeepNash(R-NaD)でクーン・ポーカーを学習する

DeepMindがArxivで発表したDeepNash(R-NaD)がOpenSpielに実装されたので試してみた。 ※2022年12月にScienceにも掲載されました。 DeepNash(R-NaD) DeepNash(R-NaD)は、不完全情報ゲームで探索なしでナッシュ均衡に収束するモデルフリーの深層強化学習アルゴ…

将棋AI実験ノート:30ブロックの学習

dlshogiのモデルサイズは、10ブロック192フィルタから初めて、精度が飽和するたびに、15ブロック224フィルタ、20ブロック256フィルタと段階的に大きくしている。参考: 将棋でディープラーニングする その48(ResNet) - TadaoYamaokaの開発日記 第2回 電竜戦T…

アニメデータセットでリコメンドを試す(NMF編)

少し古いがWEB+DB PRESS Vol.129のレコメンドエンジンの記事を読んでいて、勉強のために記事とは異なるデータセットで試したいと思った。記事ではMovieLensのデータセットで使っているが、アニメレビューのデータセットを使って試してみた。 モチベーション …

PCで再生中の音声をWhisperでリアルタイムに文字起こしする

PCで再生中の音声をリアルタイムで文字起こしできると、字幕機能がない動画の再生や、外国とのオンライン会議で便利である。先日、OpenAIが公開したWhisperは、音声ファイルから文字起こしするするツールが提供されているが、リアルタイムで処理するツールは…

いらすとやでDreamboothを試す

先日、いらすとやの画像でTextual Inversionを試したが、今回は同じく数枚の画像でスタイルを学習するDreamboothを試してみる。Dreamboothは、元は、GoogleのImagenに対して適用された手法だが、Stable Diffusionに適用できるようにした実装が公開されたので…