2021年05月

将棋の棋譜からのヒートマップアニメーションの生成

前回からの改良点

 前回、棋譜から音楽の生成を行いました。この際対局全体のヒートマップも表示しましたが、それだと最終的な結果は分かりますが、途中の状態を把握することができませんでした。

棋譜ヒートマップアニメーション

 そこで今回は音と合わせて途中の状態のヒートマップも表示することで、経過が視覚的に分かるようにしました。

考察

 情報量が増えたが分かりやすくなったとは言い難い。しかし音を目で確認できるので曲を聞きやすくなった。

アニメーション生成方法について

 棋譜をpython3で読み込みseabornでヒートマップを生成する際に、手順ごとにヒートマップを都度生成するようにしました。それらから大量に生成した画像をffmpegを使い、動画にまとめています。

将棋の棋譜からの音楽生成とヒートマップによる可視化

棋譜音楽について

 将棋の対戦内容を記録したものは棋譜と呼ばれます。棋譜を見れば、後から対戦を再生することができます。棋譜をデータ化したものにはいくつかの形式があり、これらはツールで再生したり、そのまま読むこともできます。
 普通、棋譜は一手一手検討しつつ読みます。しかしそうではなく、棋譜をより直感的に把握する手段を考えてみます。棋譜を読む前に全体像をイメージしておくことで理解の助けになるのではないでしょうか。

 今回は二つのアプローチを試します。
・どこで駒の動きがあったのかヒートマップで画像にする視覚からの影響アプローチ
・どう駒が動いたのか音として表現する聴覚からのアプローチ
このように視覚と聴覚を使い感覚的に理解できるようにしていきます。

棋譜からのヒートマップ生成

 今回のヒートマップは、どこに駒が打ち込まれたかをカウントしました。これによりどこで競り合いがあったのかが可視化できます。
heatmap_640

棋譜からの音楽生成

 横一列ごとに音を当てはまる、縦に移動するとオクターブ音が変わるようにします。横一列の音は白鍵だけを使うようにしました。ですので盤上に同じ音が出る場所がありますがそのまま出力しています。
 横一列の当てはめ方は色々試しました。単純に半音ずつずらしたり、ヨナ抜き音階を使ったりしてみました。その中でしっくり来たものを採用しています。
 将棋盤で表現するとこうなります。
kihu-ban-node

 鍵盤で表現するとこうなっています。
shogi_kenban_position

 これを基本形とした上で、音全体をずらすことで、midiで表現できる音の枠内に収まるようにしています。

 生成する音は、バッハの「平均律クラヴィーア曲集 第1巻 BWV 846‐869」の音を参考にしたものと、単に和音を鳴らしたものを用意しました。

結果

 こちらから再生できます。


・基本形
棋譜音楽 (AlphaZero vs. elmo No.81 2018-12-03)
棋譜音楽 (AlphaZero vs. elmo No.18 2018-12-03)
・和音版
棋譜音楽 (AlphaZero vs. elmo No.81 2018-12-03)
棋譜音楽 (AlphaZero vs. elmo No.18 2018-12-03)

使用データ

AlphaZero Resources | DeepMind
「100 AlphaZero-Elmo games (.zip file).」より。

考察

 今回の結果からは、いくつかの点で理解を助ける要素が現れました。
・上下方向の移動がオクターブで表現され、耳で理解できる
・置いた駒が即座に取られた場合には、同じ音の連続として表現される
・激しいやりとりがあった場所はヒートマップに表現される  しかし一方で当然ながら一貫性が無い曲調であり、全体を通じて印象を持つのは困難な曲です。

コメント

 この取り組みにより直感的な理解ができそうかというとそうでもありません。とはいえこのような取り組みから何かを掴むことができるかもしれません。さらにより自然な表現も検討する必要があります。

(参考)使用ツールとフロー

 主に使用したツール
Python3 mido, python-shogi, seaborn
ffmpeg
kihu_music_dataflow
このサイトについて
Webアプリケーション開発のことや、iPhone・Android向けアプリ開発の話題が中心です。
管理:えんたつ twitter: @tattyamm
mimage
一部のリンクにはアフィリエイトが含まれます。
カテゴリ別アーカイブ
RSS
プログラミング本
古い本含めてメモです
iPhoneプログラミングUIKit詳解リファレンス iPhoneプログラミングUIKit詳解リファレンス Android Layout Cookbook アプリの価値を高める開発テクニック パーフェクトPHP (PERFECT SERIES 3) JavaプログラミングBlack Book 2nd Edition (Black Bookシリーズ)
表記
当サイトではGoogle Analyticsを使用しております。詳細はこちらを御覧ください