Blog

BLOG

2018.05.21

画像解析で将棋の棋譜を読む

Tweet

こんにちは。クラウドソリューショングループのエンジニア明石です。

日曜日の午前中、物心ついたころから変わらぬ光景といえば?

そうです。「NHK杯テレビ将棋トーナメント」です!

羽生善治さんの「永世七冠」、藤井聡太さんの「15歳での七段昇段」、加藤 一二三さんの人気など、将棋ファンにとって、最近の将棋ブームはとてもうれしいです。

将棋といえば、去る2015年に将棋電王戦で、とうとうAI連合がプロ棋士との5番勝負に勝ち越し、人間越えを果たしたことも記憶に新しいと思います。

今日は「AI?何それ美味しいの?」という人に向けて、「ちゃんと味付けをして調理すれば美味しく召し上がれそう。」ということをAIの素人エンジニアがざっくりとお伝えします。

AIというと、IBM、Google、Amazon Web Seivice、Microsoft などの様々なITベンダーが提供しています。それらのAIを利用した様々なサービスが提供されて身近にあふれています。
今回はSalesforce.comが発表している『Einstein Platform Services(アインシュタイン・プラットフォーム・サービシーズ)』(以下、「Einstein」)というAIを紹介します。

 

Einstein Platform Services: https://metamind.readme.io/

Einsteinはマスコットキャラクターの容姿もあの有名な博士そっくりです。2016年に発表されたサービスですが、


「機械学習や深層学習、予測分析、自然言語処理などを活用したアプリケーションを誰でも簡単に使えるようにする、すなわち『AIの民主化』だ」

Salesforce社


というSalesforce社のコメントにあるとおり、複雑な数学やアルゴリズムなどを知らなくても簡単にAIを試すことができます。(だって僕でも出来たんだもん。)

Einsteinは現時点では2つの分類で4つの機能が提供されています。

Einstein Vision (画像解析)

  • Einstein Image Classification・・・画像を分類
  • Einstein Object Detection・・・画像内から物体を検知する

Einstein Languege(自然言語解析)

  • Einstein Intent・・・文章をポジティブ、ネガティブ、ニュートラルに類推する
  • Einstein Sentimment・・・文章を独自のカテゴリで類推する
    ※現時点では日本語には正式対応されていません。

  

  

お分かりのとおり、ガリガリにチューニングして複雑な学習モデルを作成して将棋で人間に勝つ、ということは出来ません。そんな高度なことは本当の専門家に任せてください。

今日は、冒頭で話した『NHK杯テレビ将棋トーナメント』のような将棋盤の画像から画像解析によって、駒の配置を検知して譜面を読めることができるかを試してみました。※よく目にする以下のような画像です。 

 

Object Detectionで将棋の駒を物体検知し、その駒の位置座標から現在の譜面を読み解く

 

まずは学習データの準備です。

「将棋の駒ってこんなものだよ。」、「王将ってこんな駒なんだよ。」といったことを学習させる必要があります。

 

1.駒の写真を沢山撮影

 

先手と後手でどっち向きの駒か、若干傾いている駒、少し傾けて撮影した駒、色をモノクロにした画像など、判定制度を高めるために画像データの準備も工夫が必要です。今回は32個の画像ファイルを学習させました。

 

2.どこに写っているのが何の駒か座標で覚えさせる。

「後手の銀」→「g_gin」というラベルで名付けてこの部分に写っているよ。
「先手の角」→「s_kaku」というラベルで名付けてこの部分に写っているよ。

という感じで全部のファイルの全部の駒にラベル名と位置を設定します。

今回はデータ作成ツール:misu007/einstein-vision-annotation-creator を使用させていただきました。

Einsteinに対しては『画像ファイル名、駒のラベル名、座標』のセットをCSV形式のファイルで以下のようなデータを渡します。これが学習させる画像ファイルの数だけあります。ジーっと見てると眠くなるので目をそらしてください。

"hogehoge.jpg","{""label"":""s_fu"",""y"":683,""x"":199,""height"":252,""width"":183}","{""label"":""s_kyo"",""y"":676,""x"":482,""height"":251,""width"":202}","{""label"":""s_kei"",""y"":654,""x"":771,""height"":271,""width"":247}","{""label"":""s_gin"",""y"":313,""x"":768,""height"":268,""width"":257}","{""label"":""s_kin"",""y"":323,""x"":1118,""height"":276,""width"":265}","{""label"":""s_oh"",""y"":655,""x"":1105,""height"":287,""width"":304}","{""label"":""s_hisha"",""y"":272,""x"":132,""height"":292,""width"":281}","{""label"":""s_kaku"",""y"":289,""x"":451,""height"":278,""width"":276}"

 

3.学習データをEinsteinに学習させる。

  1. 写真と座標情報のCSVファイルをまとめたZipファイル(データセット)をアップロードする。
  2. アップロードしたデータセットを使用してEinsteinに学習(トレーニング)をさせる。
  3. 学習モデル(判定プログラム)が作成される。

Postmanというソフトを使って一連の操作を行いました。
実際には日々の業務で収集したデータを使って、日々再学習させていくような仕組みを業務システムへ組み込むことになると思います。

 

4.実際に画像を判定してみる!

このような画像を判定させてみました。

先手は矢倉囲いで、後手は美濃囲いか。

というのはどうでもよくて・・・

 

5.判定結果を読んでみる。

Einsteinに判定させると以下のような結果が返ってきます。

{
    "probabilities": [
        {
            "label": "g_kin",
            "probability": 0.78360254,
            "boundingBox": {
                "minX": 739,
                "minY": 560,
                "maxX": 981,
                "maxY": 784
            }
        },
        {
            "label": "g_kin",
            "probability": 0.75549245,
            "boundingBox": {
                "minX": 753,
                "minY": 60,
                "maxX": 964,
                "maxY": 291
            }
        },
~~~ 省略(全部で35駒有り) ~~~
    ],
    "object": "predictresponse"
}

また目をそらしたくなるようなものが出てきました。
これはJSON形式というデータです。

1駒分のデータを解説

 {
            "label": "g_kin",  ・・・・・「後手の金」を表すラベルを名前付けています。
            "probability": 0.78360254,・・・78%の確立でこれは「後手の金」だと判定した。
            "boundingBox": {
                "minX": 739, ・・・・左からのピクセル位置
                "minY": 560, ・・・・上からのピクセル位置
                "maxX": 981, ・・・・左からどこまでかのピクセル位置
                "maxY": 784  ・・・・上からどこまでかのピクセル位置
            }
        },

このような情報が駒の数だけずらーっと帰ってきます。

6.駒の座標を将棋盤に当てはめる。

上記の「後手の金」を画像の座標に当てはめると、以下のような位置になります。

なんかそれっぽいですね!
これを将棋盤の座標から棋譜表記に変換していけば「後手6三金」というように棋譜にできそうです。

 

というところで、中途半端ですが『画像解析で将棋の棋譜は読めそう』ということで、Einsteinの紹介でした。

ちなみに上記の作業ですが、仕事が終わってから思いついて、近所のイオンに将棋盤を買いに行ったのが夜の20時、その晩のうちに作業をしてこの記事まで書き上がりました。本当にパッと出来て簡単です。

Einsteinは自然言語解析のほうがまだ日本語対応がリリースされてないこともあり、未知数な部分などありますが、今後が楽しみです。

ITをいかに理解して活用できるかというスキルを「ITリテラシー」と呼び、ITリテラシーが仕事の生産性に影響を及ぼしている昨今ですが、今後はAIをいかに使いこなせるかという「AIリテラシー」が当たり前になるという話も聞きます。いろいろとアイデアを出して、さまざまな業務システムに活用していけたらと思います。

Salesforce 技術関連記事

一緒に開発しませんか?

サンビット株式会社では、Salesforce によるクラウドシステム構築の開発技術者を募集しています!
興味のある方はぜひお問い合わせください。

Salesforce お役立ち/TIPS記事

カレンダー

«5月»
  1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31   

最近のエントリー

AIエージェント元年、その現状と課題

2026.07.27

各社から相次いで登場している「AIエージェント」。情報収集や資料作成、業務ツールの操作まで任せられるようになった一方、現場では「思ったほど使えていない」という声も聞かれます。各社のAIエージェント機能を紹介するとともに、導入がうまくいかない5つの理由を整理。業務の棚卸しや手順の分解、品質基準の明文化など、小さく試しながら実用化を進める方法を解説しています。

QRコードを使ったフィッシング詐欺が急増【第16回 情報セキュリティブログ】

2026.07.24

QRコードを悪用したフィッシング詐欺「クイッシング」が増加しています。画像内のURLはメールフィルターで検知されにくく、スマートフォンを経由して偽サイトへ誘導される点が特徴です。セキュリティ意識が高い人ほど狙われる巧妙な手口と、被害を防ぐために実践したい3つの確認ポイントをご紹介します。

AIが変える仕事のカタチ ~ Blaze と SlackBot で実現する開発・業務の効率化 ~

2026.07.21

Salesforceの設定・開発を自然言語で支援するAIエージェント「Blaze」と、SlackBotを活用した業務自動化を紹介します。AIは、日々の細かな作業をどこまで効率化できるのでしょうか。設定変更やデータ確認、商談分析、活動登録漏れの検知・入力など、サンビットで実際に構築・運用している仕組みを交えながら、AIに任せる業務と、人がより力を注ぐべき仕事について紹介します。

おもちゃたちは、いつも必要とされなくなる不安と向き合っていた?|『トイ・ストーリー』シリーズを振り返って

2026.07.13

『トイ・ストーリー』シリーズを、「必要とされなくなる不安」という視点から振り返ります。ウッディたちが向き合ってきた居場所の変化、役割の終わり、そしてデジタル時代におけるおもちゃの存在意義を通じて、現代を生きる私たちの不安にも重なるテーマを考えます。

アーカイブ

ブログ内検索

  1. TOP
  2. BLOG
  3. 画像解析で将棋の棋譜を読む