Code for History

"Code for History"はIT技術を歴史学上の問題の解決に使うコミュニティです。強調したいのは、我々にとってIT技術は「手段」であって「目的」ではありません。「目的」は歴史学上の問題を解決する事であって、必要であればITでない手段も活用します。常に最優先なのは、問題を解決することです。

[特許共同出願者募集その1]Maplat、Strolyなどで用いられるGCP登録の機械学習自動化手法案

MaplatやStrolyで古地図を扱うには、GCP(Ground Control Point)と呼ばれる、古地図上の座標と正確な地理座標を対応づける対応点データを多数整備する必要があります。
この対応点数点の周りでベクトル計算をすることにより、座標変換計算をするのが古地図座標を扱えるタネなので、このGCPをいかに整備するかが古地図技術のキモとも言えるところになります。
今現在は完全に手動でやるしかなく、簡単な地図ならば10点とかそこらで済む場合もありますが、複雑な地図だと1000点以上打つ場合もあります。
まあ私のような古地図好きにはいかに大変でもご褒美のような作業ではあるものの、それでも時に面倒臭い...と思うようなこともある作業なので、あまり古地図などが好きなわけではない人にとっては苦行のような作業と言えるのではないかと思います。

f:id:kochizufan:20190708013135p:plain
古地図を扱えるようにするために、GCPを登録する作業。地味で時間のかかる仕事。

なので、機械学習などを利用してこれを自動化しようという発想は昔からあり、実現方法の腹案も持っていました(それについて述べるエントリなので、どのような事を考えていたかはあとで述べます)。

Stroly社に騙されて同社の外部に出てMaplatの開発を始めてからというもの、Stroly社は私にとって商売敵といっていい存在でした。
ですので、Stroly社が私より先にGCP登録の自動化手法を確立しないか、というのは私がずっと恐れていたところでした。
MaplatとStroly技術のベースになっているGIS分野の知識と発想については、私がGISの専門家が一人もいないStroly社に負けるわけがないのでそこは全く心配していませんが、ことGCP登録の自動化については、機械学習は私も全く専門家ではありませんから、資金力で専門家を雇えるStroly社の方に相当の分があります。
実際Stroly社の社員には機械学習の専門家もいるようなので、私が思いついているような方法はとっくに思いついていて、もう投入寸前じゃないかと戦々恐々としていました。
ところが、待てど暮らせどStroly社が機械学習によるGCP登録自動化を投入する素振りが見えません。
そこで、Stroly社の機械学習GCP登録自動化の現状がどんな感じなのか、信頼できる中の人に尋ねてみました。

その結果は驚くべきものでした。
なんと、Stroly社が取り組もうとしている機械学習でのGCP登録自動化は、地図画像からの地名を検出して、それを基にジオコーディングして、GCPを3,4点だけ打つ、とかその程度のものらしいです。
そしてそのチャチい内容ですら、機械学習部分はほぼGoogleの提供する機能に丸投げですし、そしてその程度の内容すら、長い期間かけてまだ実用化できずに投入できていないと。
地名からのジオコーディングで数点GCP打つって、そんなもん、GCP登録作業始める前に、正確な地図側で古地図の示している領域を検索して表示する、手作業でやっても早ければ数十秒、長くても5分もかからない作業が省略できるだけの話にしかなりません。
もっと強烈に時間がかかる、その後の数百、数千とGCPを登録する作業が半自動化できないと何の競争力も持てないでしょう。
あらためて確信しましたが、このStrolyという会社、新技術や新プロダクトの開発におけるテーマ決めのセンスがおそろしく悪い。

私が考えていたのはそんなチャチいレベルではない、整備する必要のあるGCPの5割くらいは自動生成できるものを目指す案を考えているので、機械学習を取り入れる分野ですら、Strolyという会社に対する恐怖は全くなくなりました。
とはいえ、先に書いた通り私も機械学習の専門家ではないのでアイデアだけ死蔵しててもそれ以上先に進めるスキルがないので、ここで考えていることを公開した上で、現実化するための協力者を募りたいと思います。
今から私が書くレベルの雑い素案では全然特許とかに出せるレベルではないと思いますが、特許は考え方を学会発表やWebサイトなどで公開してから半年は優先権があると聞いているので、これを公開してから半年の間に協力者との間で粗い案を精緻化できれば、特許化できる可能性も十分にあるのではないかと思います。
また特許化できなくても、誰もが自由に使えるオープンアイデアになるのであればそれはそれで。

私のGCP登録自動化方法のアイデアは、次のようなステップを踏んで実現するものです。

  1. 古地図の側で、画像処理あるいは機械学習などで、道路および水系のエッジを抽出し古地図側の道路/水系ネットワークを生成する。
    道路だけでなく水系も取る理由は、歴史の経過の中で水系は暗渠化などで容易に道路などに置き換わるためです。
  2. 現代地図において、OSM国土地理院発行の地図データなどを用いて、現代地図の道路/水系ネットワークを得る。
    これは画像処理など使わなくとも、元々ベクタなデータを使えばそのままネットワークが取得できます。
  3. (ここは必要に応じて)数点、ヒントとして人力で、古地図と現代地図間の対応するネットワークのエッジ交点を指定する。
  4. 3.のヒントなどを頼りに、ネットワーク構造の類似性を機械学習で抽出し、対応するエッジ交点を全て抽出し、対応点(GCP)とする。
    あるいは、最新のMaplatでは対応点だけではなく対応線という概念も誕生しているので (該当記事)、GCPだけでなく対応線も自動指定することも考えられる。

という手順でのGCP指定自動化を考えています。
が、画像処理や機械学習の周りは私に完全にノウハウがないので、その辺の所に詳しい方や企業で具体化に力を貸してくれる方、一緒に特許取得を目指してくれる方おられましたら、ぜひ rekishikokudo (@) tilemap.jp までご一報いただけると嬉しいです。
なお、古地図と現代地図の道路/水系ネットワーク間の類似性から対応点、対応線を抽出する技術には、機械学習だけではなく、こちらの会社の技術なんかも使えるんじゃないかなと思って注視しています。

sharedstreets.io

この会社の技術は、異なる会社の生成した、微妙にジオメトリが異なる地図間で、対応付けを生成して各々の地図間での道路属性などをマージしたりできる技術のようなので、古地図の道路ネットワークと現代地図の道路ネットワークのような、似ているけれど微妙に違う関係性などもうまくいけば処理できるのではないかと期待しています。

© Code for History