TadaoYamaokaの開発日記

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

いらすとやでDreamboothを試す

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

【TIPS】 Stable Diffusion web UIの起動を速くする

AUTOMATIC1111版Stable Diffusion web UIは、起動時にCLIPの学習済みモデルを取得するために、HuggingFaceにアクセスを行う。 初回は、実際に学習済みモデルのダウンロードが必要だが、2回目以降はキャッシュされるために、ローカルストレージのキャッシュが…

Whisperとゲームバーで会議議事録作成を自動化する

先日、OpenAIが公開したオープンソースの音声認識ソフトウェアのWhisperを使って、会議議事録を自動作成する方法について記載する。昨今、オンライン会議が主流になっているため、会議を録画/録音することが容易になっている。 Windows 10/11には、Xbox Game…

WindowsにWhisperをインストールする

先日、OpenAIが公開したオープンソースの音声認識ソフトウェアであるWhisperをWindowsにインストールする方法について記載する。 Anaconda(Miniconda)のインストール Anacondaもしくは、Minicondaをダウンロードして、インストールする。 必要に応じて仮想環…

いらすとやでTextual Inversionを試す

Stable Diffusionの追加画像によるスタイル学習の方法として、「Textual Inversion」という方法がある。これは、3~5枚の画像を用いて、スタイルを表す新規の単語の埋め込みベクトルを学習する方法である。 既存のパラメータは一切更新しないで、既存モデルに…

Stable Diffusionを「いらすとや」で追加学習する

前回、Stable Diffusionをdanbooruデータセットを使用して追加学習することを試した。今回は、自分でデータセットを作成して追加学習することを試す。 データセットには、画像とキャプションが揃っている必要があり、キャプションがない場合はCLIPで疑似ラベ…

Stable Diffusionにdanbooruデータセットを追加学習する その2

前回、danbooruデータセットを使用してStable Diffusionに追加学習を行う手順について記載した。今回は、追加学習したモデルで、生成する画像がどう変わるか確認する。 追加学習の結果 98エポックまで学習を行った。 エポック数とステップ数 エポック数とス…

Stable Diffusionにdanbooruデータセットを追加学習する

Stable Diffusionに独自データセットで追加学習できるようになるために、まずは既存のデータセットを使用した学習方法を試した。追加学習の方法には、画像3~5枚を用いてスタイルを学習させるTextual Inversionという方法があるが、ここでは追加学習にデータ…

Latent Diffusionの学習を試す その2

昨日の記事の続きで、CelebA-HQデータセットでLatent Diffusionの学習を続けた場合に生成画像の質が上がるか確認した。昨日の記事で、5000バッチ(51エポック)時点のモデルで、潜在空間からランダムにサンプリングして生成した画像は以下の通りであった。 学…

Latent Diffusionの学習を試す

話題のStable Diffusionは、 LAION-5Bデータセットを用いて学習された、CLIPのテキスト埋め込みを条件としたLatent Diffusionモデルである。Stable Diffusionの仕組みを理解したいと思っており、そのために、まずは比較的小さいデータセットでLatent Diffusi…

stable-diffusion-webuiをWSL2で動かす その2

昨日導入方法を書いたstable-diffusion-webuiにGFPGANとRealESRGANを導入する。GFPGANは、顔を改善するモデルで、RealESRGANは解像度2倍にするモデルである。 それぞれ適用した場合の比較画像は、公式のページにサンプルがある。 GitHub - hlky/stable-diffu…

stable-diffusion-webuiをWSL2で動かす

この議事の内容は古いです。現在この手順では動きません。Stable Diffusionが公開されて一週間もたたないうちに便利なUIがいくつもリリースされている。 その中でも、stable-diffusion-webuiが機能が充実している。 GitHub - hlky/stable-diffusion-webui: S…

Stable Diffusionを試す

拡散モデルを使用した画像生成AIであるStable Diffusionがオープンソースで公開された。 ソースだけでなくモデルの重みも自由に利用できる。商用利用も可能だ。Stable Diffusion Public Release — Stability.Ai早速、ローカルのPCで試してみた。 丁寧な使っ…

timmのモデルを可視化する

timmのモデルはソースが複雑なため、ソースからモデルの構造を理解するのは大変である。 そのため、モデル構造を可視化できると理解しやすい。以下では、PyTorchのTensorBoardで、モデル構造を可視化する方法を紹介する。 TensorBoardでグラフ表示 TensorBoa…

nnue-pytorchを試す その3

前回、nnue-pytorchでdlshogiの棋譜を学習して、floodgateの棋譜でテストを行うと、評価損失(val_loss)が上昇する事象が起きることを書いた。いろいろ条件を変えて実験したところ、最適化をデフォルトのRanderから、Momentum SGDに変更すると評価損失(val_lo…

将棋倶楽部24万局集の統計

昨日の記事で書いた通り、「将棋倶楽部24万局集」のデータベースを読めるようになったので、棋譜の統計情報を調べた。 期間 1999年5月から2002年2月のデータが格納されている。 ほとんどは、2001年9月以降のデータである。 count 240000 unique 159 top 2001…

将棋倶楽部24万局集をCSAに変換

以前に棋譜から棋力測定を試した際に、中古で「将棋倶楽部24万局集」を買ったが結局使わずに眠らせていた。 せっかく買ったので棋譜を分析してみようとCDROMを開いたらデータ形式が棋泉というソフトの形式で、一括で処理しようとすると変換が必要であること…

ConvNeXtを試す

ConvNeXtは、ResNetなどの畳み込みニューラルネットワークで構成されるニューラルネットワークで、SwinTransformerなど最先端のVisionTransformer系モデル並みの性能が出せるというモデルである。 モデル構成 残差ブロックの1層目がカーネルサイズ7x7のDepth…

arXivのPDF論文をブラウザ上で翻訳して読む

普段英語のページは、ChromeのGoogle翻訳拡張機能を使って、翻訳して読むことが多い。 英語をそのまま読むのは英語の勉強にもなるのだが、自分の英語力だと辞書引きながらになって読む速度が遅すぎるので、やはりGoogle翻訳が便利である。しかし、Google翻訳…

DCGANを試す

ほぼ個人メモです。今更ながら生成系のモデルをあまりさわっていなかったので、PyTorchのDCGANのTutorialを試してみた。 DCGAN Tutorial — PyTorch Tutorials 1.12.0+cu102 documentationWindowsだとチュートリアルのソースがそのままでは動かないので、WSL…

将棋AIの実験ノート:活性化関数をReLUに変更

以前に、活性化関数を変えると同じデータを学習した場合でも、方策の傾向が変わることを実験で確かめた。現状のdlshogiのモデルでは、活性化関数にSwishを使用していたが、最善手を見つけるのに時間のかかると指摘を受けた以下の局面が、活性化関数をReLUに…

Learning to Play Minecraft with Video PreTraining (VPT)を読む

OpenAIが発表したマインクラフトの操作を学習した「Learning to Play Minecraft with Video PreTraining (VPT)」の論文を読んだ際のメモです。 概要 請負業者(フリーランス)に依頼して作成した7000時間分のキーボード・マウス操作のラベル付き動画からIDM(逆…

nnue-pytorchを試す その2

前回、nnue-pytorchをWindowsとLinuxで動作確認した。今回は、前回説明したqsearchで動く局面を除外した場合としない場合で精度の比較を行った。 qsearch除外の実装 Stockfishのnnue-pytorchの--smart-fen-skippingは、学習の実行時に指し手が駒をとる手と王…

nnue-pytorchを試す

Stockfishで実装されたNNUEモデルをPyTorchで学習できるnnue-pytorchが、nodchip氏によって将棋のNNUE向けにポーティングされた。 GitHub - nodchip/nnue-pytorch at shogi.2022-05-23dlshogiの知識蒸留を試していることもあり、dlshogiのモデルを教師として…

dlshogiモデルの20ブロックから15ブロックへの知識蒸留 追試3

前回、知識蒸留を訓練データと教師モデルの損失の加重平均の定数αを0.5として実験を行った。 今回は、加重平均の重みを変えた場合、精度がどうなるか測定を行った。 測定条件 前回同様、20ブロックで生成した9.4千万局面(同一局面を平均化すると7千万局面)を…

dlshogiモデルの20ブロックから15ブロックへの知識蒸留 追試2

前回、知識蒸留を定義通りKLダイバージェンスを計算して実装したが、交差エントロピーを使用しても勾配は変わらないため、交差エントロピーで実装し直した。 交差エントロピーの方がPyTorchで用意されているメソッドが使用でき、実行時間も短くなる。 実装 i…

dlshogiモデルの20ブロックから15ブロックへの知識蒸留 追試

先日実験した20ブロックから15ブロックへの知識蒸留について、どれくらい強くなるか検証した。 検証項目 同一データを使用して学習した、20ブロックと、知識蒸留あり15ブロックのどちらが強いかを確認する。 比較のために、知識蒸留なしで学習した15ブロック…

WCSC32版dlshogiが公開しているモデルからどれくらい強くなっているか

第32回世界コンピュータ将棋選手権で優勝したdlshogi with HEROZが、第2回世界将棋AI電竜戦エキシビジョンバージョン(公開しているモデル)からどれくらい強くなっているかちゃんと測定していなかったので、測定した。 測定条件 dlshogiは2スレッド、1GPU(A10…

dlshogiモデルの20ブロックから15ブロックへの知識蒸留

dlshogiでは、10ブロックのモデルから始めて、15ブロック、20ブロックとモデルサイズを大きくしている。 ブロックが大きいほど、精度が高くなっており強さにも反映される。 第32回世界コンピュータ将棋選手権のdlshogiでは20ブロックのモデルを採用している…

dlshogiをVisual Studio 2022+CUDA11.6+cuDNN8.4+TensorRT8.4に移行

Visual Studio 2022が去年の11月にリリースされたが、CUDAが対応するまで移行を控えていた。 1月にCUDA 11.6がリリースされてVisual Studio 2022に対応したが、cuDNNとTensorRTがCUDA11.6に対応したバージョンがリリースされていなかったので、移行できずに…