機械学習を使って航空写真や地形図からo-mapを生成しようとしたけど無理があった話

tech
この記事は約5分で読めます。

皆さんこんばんは。オリエンテーリング関連のアドベントカレンダーを書くのはこれが初めてで、書き出しに悩んでいます。最初にぶっちゃけると、実は今回書く内容は、卒業研究の没テーマです(笑)。没テーマなので、大したことないんですけど、せっかくやってみたのにどこにも出さないのはもったいないので、アドベントカレンダーで供養させてください(笑)。

というわけで、この記事は、オリエンテーリング Advent Calendar 2020の4日目、12月4日の記事です。

機械学習とは

機械学習とは、名前の通り、機械、つまりマシーンに学習させることです。様々な種類があります。最近では、ブームになったこともあって、実際には学習させているわけではないけど、機械学習と言っていることもあります。そういう場合は、人間が手動で条件分岐を設定しているだけです。「機械学習」と聞いても、その中身で何をしているのかをある程度知ることができれば、本当に機械に学習させているのかわかります。

「人工知能(=AI)」という言葉も、「機械学習」とほぼ同義だと考えていいと思います。

機械学習の分野は、人間の脳の仕組みを疑似的に再現することで、精度を上げてきました。その仕組みに注目すると、人間が作った脳(知能)ということで、「人工知能」という言葉も理解できます。

しかし、実際には、みなさんが思っているほど、「知能」はありません。「知能」とは何か、という問いもありますが、「人工知能」といっても、中身は算数・数学をしているに過ぎません。例えばSiriも、知能があるというよりも、ユーザーに対して知能があるように見せており、どちらかというと、後者の技術が優秀であるために、人間は機械に期待してしまうのです。

逆に言うと、人間の脳は複雑で、簡単には再現できないのです。本当に相手の言っていることを理解できるAIが登場すれば、それはそれで恐ろしいことだと思います。

pix2pix

機械学習は、いくつかの層を重ねて行うのですが、画像を使った機械学習には、ResNetやVGG16など、いくつかのモデルがあります。これらは、一連の層の重なりのことで、こういう風に層を重ねると精度が高くなったよ、という先人の発見に名前がついたものです。将棋で言うところの定石のようなものです。画像を使った機械学習のモデルの一つに「pix2pix」というのがあります(原論文はこちら)。これは、航空写真から地図を予測したり、地図から航空写真を予測することのできるモデルです。今回はこのモデルを使用してo-mapが生成できないかやってみました。

左半分は、地図から衛星画像を予測したもの。右半分は、衛星画像から地図を予測したもの。出典は原論文。

今回やってみたこと

1.国土地理院の航空写真からO-mapを予測

データセットの作成

データセットを作成します。使用するデータは以下の2種類です。

  1. O-map(紙に印刷されたもの)をスキャンした画像
  2. 国土地理院の航空写真(歪みを補正したオルソ画像)

それぞれ256×256のカラー画像です。この2つのデータを横に並べたものをひとつのデータセットとします。このデータセットを56枚作り、ランダムにテスト用10枚、訓練用46枚に分割しました。データセットの数が少ないですが、とりあえずやってみます。pix2pixのデータセット数の理想は500枚くらいです。

ひとつののデータセット(左が航空写真、右がO-map)

実験

モデル構造は、Tensorflowのチュートリアルをそのまま流用しました(チュートリアルはコチラ)。データセットは先ほど説明したものを利用し、エポック数は30で実験を行いました。

結果

このような出力になりました。

各行、左から、入力画像(航空写真)、正解画像(O-map)、出力画像(航空画像からO-mapを予測した画像)

テストデータ10枚のうち、3枚のデータの画像です。全体的な雰囲気はつかめていますが、全体的にボケていて、等高線や道路など、色々うまく反映できていません。

2.基盤地図情報からO-mapを予測

データセットの作成

データセットを作成します。使用するデータは以下の2種類です。

  1. O-map(紙に印刷されたもの)をスキャンした画像
  2. 国土地理院の基盤地図情報の画像

それぞれ256×256のカラー画像です。この2つのデータを横に並べたものをひとつのデータセットとします。このデータセットを56枚作り、ランダムにテスト用10枚、訓練用46枚に分割しました。O-mapは前回と同じ範囲のものを使用しています。

ひとつののデータセット(左が基盤地図情報、右がO-map)

実験

モデル構造は、Tensorflowのチュートリアルをそのまま流用しました(チュートリアルはコチラ)。データセットは先ほど説明したものを利用し、エポック数は100で実験を行いました。

結果

このような出力になりました。

各行、左から、入力画像(基盤地図情報)、正解画像(O-map)、出力画像(基盤地図情報からO-mapを予測)

テストデータ10枚のうち、3枚のデータの画像です。等高線や道路は改善はしましたが、まだ厳しいものがあります。今後の研究として、入力に航空写真と基盤地図情報の両方を使ってみるとか、もう少し精度の高い等高線データを使うであるとか、様々なチャレンジができそうです。

最後に

いかがだったでしょうか。現状でも、国土地理院が公開している情報やGoogleのストリートビュー、時にはレーザー測量データなどを駆使すれば、現地に行かずともある程度地図が作れると思いますが、今回は無理やり機械学習を使って、少ない情報から学習させてみました。

今後数年で自動運転やドローン関連の研究が進み、簡単に3Dマップが作れるようになれば、もしかすると地図作成も簡単化されるかもしれません。ただ、もし仮にある程度自動で作れるようになったとしても、人工特徴物や岩などの点状特徴物は自動判別は難しいのではないかと思っています。

今回はこのあたりで終わります。最後までお読みいただきありがとうございました!