Slide 1

Slide 1 text

CS立体図とディープラーニングに よる崩落地形予想について 株式会社ノーザンシステムサービス 小林 知愛 FOSS4G 2017 Hokkaido

Slide 2

Slide 2 text

自己紹介 2 • 氏名:小林 知愛(こばやし ちあき) • 会社:(株)ノーザンシステムサービス(入社2年目) • 部署:研究開発部所属 • 主にDeep Learning系の業務を担当 • 日々学習がうまくいくようにニューラルネットのご機嫌取り をしたり、神に祈ったりしています 普段の勤務状況のイメージ図

Slide 3

Slide 3 text

AGENDA 1. これまでのCS立体図×Deep Learning 2. Deep Learningで災害予測 3

Slide 4

Slide 4 text

1.これまでのCS立体図×DEEP LEARNING 4

Slide 5

Slide 5 text

事の発端 5 • pix2pixの検証 • pix2pix - 変換前後の画像を学習させることでDCGANにより画像変換を行なう (https://phillipi.github.io/pix2pix/) • 対の画像さえ用意すれば何でも学習できるのが特徴

Slide 6

Slide 6 text

DEEP LEARNING(PIX2PIX)と 地図タイルは相性が良い! 6 地図タイル形式で様々な 大量のデータが公開 例:国土地理院 地理院タイル タイル座標さえあれば同一地点の 異なるデータを取得可能 地図 航空写真 土地利用図 標高図 出典:国土地理院(http://maps.gsi.go.jp/development/ichiran.html)

Slide 7

Slide 7 text

様々な地図タイルを使ってPIX2PIXを検証 7 航空写真⇒地図 標高タイル⇒陰影図 入力 出力 正解 出典:国土地理院(http://maps.gsi.go.jp/development/ichiran.html),一部標高タイルを加工して作成 シームレス標高サービス(https://gsj-seamless.jp/labs/elev/),OpenStreetMap(http://www.openstreetmap.org/copyright) © OpenStreetMap contributors

Slide 8

Slide 8 text

PIX2PIXに学習させるネタを探してると・・・ 8 • 「FOSS4G Advent Calendar 2016 地理院標高タイルと Leaflet でつく るCS立体図」 (http://qiita.com/frogcat/items/b9 aaa3df866a89d46ef5)

Slide 9

Slide 9 text

PIX2PIXで標高マップからCS立体図に変換 9 標高タイル⇒CS立体図 入力 出力 正解 出典:国土地理院(http://maps.gsi.go.jp/development/ichiran.html),標高タイルを加工して作成 シームレス標高サービス(https://gsj-seamless.jp/labs/elev/)

Slide 10

Slide 10 text

某I氏からの入れ知恵 10 某農研機構I氏

Slide 11

Slide 11 text

崩壊地形って公開されてるの? 11 • J-SHIS(地震ハザードステーション)で地すべり地形分布図を公開 (http://www.j-shis.bosai.go.jp/) CS立体図から地すべり検出をしてみよう!

Slide 12

Slide 12 text

とりあえず学習させてみる 12 • CS立体図を入力、地すべり地形分布図を教師データとしてpix2pixで学習 • CS立体図は地理院標高タイルから作成 • 結果:何かが出てるけど場所がだいぶ違う 入力 出力 教師 出典:国土地理院(http://maps.gsi.go.jp/development/ichiran.html),標高タイルを加工して作成

Slide 13

Slide 13 text

原因を考察 13 • 地すべりの検出には微細地形の特徴が必要? • 人の目によるCS立体図からの地形判読では1mメッシュを使って判定 • 戸田堅一郎, “CS立体図を用いた地形判読について”, 第125回日本森林学会大会, 2014.7.16. • メッシュの細かい地形データがないか? • USGC(アメリカ地質調査所)やNOAA(アメリカ海洋大気庁)で公開されているDEMは あったが対応する崩落地形データがない 地理院標高タイルの10mメッシュでは解像度が足りない?

Slide 14

Slide 14 text

日本国内でデータを探していると・・・ 14 • 「FOSS4G Advent Calendar 2016 地理院標高タイルと Leaflet でつくるCS立 体図」に の記述

Slide 15

Slide 15 text

静岡県CS立体図 15 • 1mメッシュの標高データから作成されたCS立体図をgeotiffで公開 • G空間情報センター(https://www.geospatial.jp/ckan/dataset/shizuokakencsmap2)

Slide 16

Slide 16 text

静岡県CS立体図で学習 16 • 結果: • 入力と教師データを比べると崩落と関係なさそうなところにシェープがある ⇒参照系がずれてる? • その後10mメッシュに戻して学習しても精度は向上せず・・・ CS立体図(地形の情報)のみでは情報が不十分? 入力 出力 教師 出典:静岡県CS立体図(https://www.geospatial.jp/ckan/dataset/shizuokakencsmap2)

Slide 17

Slide 17 text

入力する情報を追加してみる 17 • シームレス地質図 • 産業技術総合研究所が公開している日 本全国の地質図 • 産総研地質調査総合センター,20万分の1日 本シームレス地質図(詳細版,データ更新 日:2015年5月29日), https://gbank.gsj.jp/seamless/ • タイルやWMSなどの形式で取得可能 地質から崩落のしやすさなどがわかるのでは?

Slide 18

Slide 18 text

CS立体図+地質図 18 • CS立体図のRGB+地質図のRGBで、合計6チャンネルの入力データで学習 • データセットの範囲は東北~関東くらいまで • 結果: • pix2pixはデータセットのドメインに特化する傾向がある 入力 出力 教師 広範囲のデータセットでは拡散? 入力 出力 教師 出典:国土地理院(http://maps.gsi.go.jp/development/ichiran.html),標高タイルを加工して作成

Slide 19

Slide 19 text

CS立体図+地質図 19 • データセットの範囲を秋田付近に変更 • 結果: 入力 出力 教師 出典:国土地理院(http://maps.gsi.go.jp/development/ichiran.html),標高タイルを加工して作成

Slide 20

Slide 20 text

ここまでのまとめ 20 • 当初は入力データをCS立体図(地形情報)のみで学習 • 入力データのチャンネルを増やしてCS立体図と地質図で学習 検出できず 精度が向上! CS立体図からの地すべり検出をやってみた

Slide 21

Slide 21 text

2. DEEP LEARNINGで災害予測 21

Slide 22

Slide 22 text

近年異常気象による災害が増加傾向 22 • 2016年8月末 台風10号 • 岩手県岩泉町、久慈市、宮古市などの沿岸地域、北海道でも大きな被害 • 想定以上の雨量による土砂崩れや土石流 出典:岩手県, http://www.pref.iwate.jp/kasensabou/sabou/050721.html

Slide 23

Slide 23 text

異常気象による災害の予測は難しい 23 • 突発的な災害も多く予測が困難 • これまで観測されたことのない雨量 • 対処が遅れたり適切な処置ができなかったり 従来の防災計画の想定外 Deep Learningで予測できないか?

Slide 24

Slide 24 text

DEEP LEARNINGで災害予測 24 • CS立体図から地すべりの検出はある程度できるようになった • これまではすでに起こった地すべりの跡を検出 • 地質などの情報をチャンネルに加えることで精度が向上 地形や地質、植生など土地の情報と雨量を学習 その土地の限界雨量による崩壊予測ができるのでは?

Slide 25

Slide 25 text

PIX2PIXによる崩落予測 25 • 雨量などの情報を入力し豪雨による崩落を予測する • 国土地理院が台風10号のデータを公開 • 専門家が判別した崩落箇所のシェープデータも公開 教師データとして使用 出典:国土地理院(http://www.gsi.go.jp/BOUSAI/H28.taihuu10gou.html)

Slide 26

Slide 26 text

データセットの作成 26 • 入力データ 雨量 CS立体図+地質図 航空写真 森の有無や木の種類などが限界雨量に影響? 災害前の画像を国土地理院から取得 雨量 台風が通った期間の合計雨量 出典:国土地理院(http://maps.gsi.go.jp/development/ichiran.html),標高タイルを加工して作成

Slide 27

Slide 27 text

データセットの作成~雨量編~ 27 • 気象庁のデータをもとに作成されたNetCDF形式のデータを使用 • 京都大学生存圏研究所 生存圏データベースから取得 (http://database.rish.kyoto-u.ac.jp/arch/jmadata/gpv-netcdf.html) • 台風が通過したあたりの8/28~8/30の期間の合計雨量を計算 • GMTを用いて画像化しタイルを作成

Slide 28

Slide 28 text

雨量タイルの作成手順 28 • PythonでnetCDFファイルを読み込んで3日間の合計雨量を計算、netCDFファ イルに出力 • netCDFファイルからタイルを作成するプログラム(Python)を作成して実行 • GMTに渡す1タイルの範囲の経緯度を計算 • GMTのgrdimageで合計雨量のnetCDFファイルから計算した経緯度の範囲のカラー図 を作成、ps2rasterで画像化(GMTコマンドはPythonから実行) • Pythonの画像ライブラリPillowを使ってカラー図画像を256x256にリサイズ • 以上の処理を指定したタイルの分だけ繰り返す

Slide 29

Slide 29 text

雨量タイルを作成した結果 29 • ドットどころの話じゃない解像度 • このタイルはズームレベル14

Slide 30

Slide 30 text

より細かいメッシュデータで作成することに 30 • 雨量データを気象業務支援センター(http://www.jmbsc.or.jp/jp/)から購入 • 前のデータが約5kmメッシュに対して、こちらのデータは1kmメッシュ • 雨量データはGrib2形式なので変換ツールwgrib2でNetCDFに変換 • 後は同様にGMTを使用してタイル作成

Slide 31

Slide 31 text

細かいメッシュでタイルを作成した結果 31 • さっきよりはまだまし?

Slide 32

Slide 32 text

データセットの作成~教師データ編~ 32 • 教師データは台風10号の岩泉地域の 崩落箇所 • 国土地理院が公開 • GeoJSON形式のみ取得可能 タイル化する必要がある 出典:国土地理院(http://www.gsi.go.jp/BOUSAI/H28.taihuu10gou.html),加工して作成

Slide 33

Slide 33 text

GEOJSON-VT 33 • GeoJSONからタイルを作成してくれる JavaScriptのライブラリ (https://github.com/mapbox/geojson-vt) 「FOSS4G 2016 Hokkaido Cesiumマニアックス」でも紹介 • 藤村さんのQiitaから発見 • geojson-vtはキャンバスに表示するだけで 画像にはしてくれないので、端末上で JavaScriptを実行するNode.jsを使ってタイ ルを出力

Slide 34

Slide 34 text

作成手順 34 • geojson-vtでGeoJSONを読み込み • タイルを取得 var gvt = require('./geojson-vt/geojson-vt-dev’); fs.readFile(file, 'utf8', function (err, text) { var data = JSON.parse(text); var tileIndex = gvt(data, options); geojson-vtのモジュールを読み込み ・・・ GeoJSONを読み込み 最大ズームレベルなどはoptionsで設定 var tile = tileIndex.getTile(z, x, y); タイル座標を指定するだけで取得可能

Slide 35

Slide 35 text

作成手順 35 • タイルをcanvasに描画 var Canvas = require('canvas’); canvas = new Canvas(256, 256), ctx = canvas.getContext('2d'), ・・・ Node.jsではcanvasモジュールによって canvas要素を扱える canvasへの描画を行なうコンテキスト これと取得したタイル情報を用いてタイルを canvasに描画 geojson-vtのデモを参考にするとわかりやすい

Slide 36

Slide 36 text

作成手順 36 • canvasを画像として出力 var canvas_saver = require('./canvas_saver.js’); canvas_saver.save(canvas, filepath, function(){ console.log("tile save."); }); ・・・ Node.jsでのcanvasの画像保存を行なうモ ジュールのコードが公開されていたので そちらを使わせていただきました 「Node.jsでCanvas(ImageData)を使った簡単な 画像処理」 (http://qiita.com/EafT/items/d5afef6508 1b7fdf60cc)

Slide 37

Slide 37 text

タイル化した画像がこちら 37 • 描画時の設定をいじれば色や塗りつぶしなども自由に設定可能 • 今回はわかりやすいように中を不透明で塗りつぶすように設定 出典:国土地理院(http://www.gsi.go.jp/BOUSAI/H28.taihuu10gou.html),土砂崩壊・堆積地等分布図を加工して作成

Slide 38

Slide 38 text

学習して検出してみると・・・ 38 • 結果: 入力 出力 教師 出典:国土地理院(http://maps.gsi.go.jp/development/ichiran.html),標高タイルを加工して作成 国土地理院(http://www.gsi.go.jp/BOUSAI/H28.taihuu10gou.html),土砂崩壊・堆積地等分布図を加工して作成

Slide 39

Slide 39 text

原因を考察① 39 • 雨量の解像度がまだ低すぎる? • GMTのsurfaceを使ってメッシュを補間し解像度を高くする 補間前(メッシュ幅1km) 補間後(メッシュ幅0.25km)

Slide 40

Slide 40 text

原因を考察② 40 • 教師データの崩落箇所の色分けで混乱する? • 青:土砂崩落・堆積地、赤:道路・建物に影響のある土砂崩壊・堆積地 ⇒雨量による直接的な被害 • 緑:道路損壊⇒雨量による間接的な被害(今回検出するのは難しい?) 青と赤の土砂崩落・堆積地はまとめて同じ色(青)で描画 緑の道路損壊は除外 出典:国土地理院(http://www.gsi.go.jp/BOUSAI/H28.taihuu10gou.html),土砂崩壊・堆積地等分布図を加工して作成

Slide 41

Slide 41 text

再度学習して検出してみる 41 • 結果: 最初の真っ白からは大きな進歩 入力 出力 教師 出典:国土地理院(http://maps.gsi.go.jp/development/ichiran.html),標高タイルを加工して作成 国土地理院(http://www.gsi.go.jp/BOUSAI/H28.taihuu10gou.html),土砂崩壊・堆積地等分布図を加工して作成

Slide 42

Slide 42 text

精度を上げるためさらに学習を進めると・・・ 42 • 結果:むしろ検出されなくなる • おそらく過学習が原因 • pix2pixではほどほどの学習回数でとどめたほうが良い 入力 出力 教師 出典:国土地理院(http://maps.gsi.go.jp/development/ichiran.html),標高タイルを加工して作成 国土地理院(http://www.gsi.go.jp/BOUSAI/H28.taihuu10gou.html),土砂崩壊・堆積地等分布図を加工して作成

Slide 43

Slide 43 text

精度を向上させるには?① 43 • データセット数を増やす • 今回の学習データ数は150程度と非常に少ない • 広域の様々なデータでの学習が必要 • pix2pixに新しい技術を取り入れる • BEGAN、Fisher GANなど pix2pix+BEGAN(https://github.com/taey16/pix2pixBEGAN.pytorch)

Slide 44

Slide 44 text

精度を向上させるには?② 44 • pix2pixではない専門のディープニューラルネットワーク(DNN)で学習する • pix2pixは汎用性は高いが専門のドメインに特化したDNNには劣ってしまう • pix2pixはデータセット数、学習回数が少なくてもそこそこ結果が出せるのが利点 専門のDNNでの大規模な学習をする前に、 pix2pixの小規模な学習で検証を行なう手法 じゃあpix2pixはあまり使えないの?

Slide 45

Slide 45 text

感想 45 • 結果として、なんとなくそれっぽいのは出たが、どういったデータや手法が 寄与したのかはよくわからない • こういった研究はデータの粒度、精度、数が大切 • データの収集や計算資源、マンパワーなどの問題で一社で研究するのは 限界がある 満足なデータがない現状では精度の向上は難しい

Slide 46

Slide 46 text

俺 た ち の デ ィ ー プ ラ ー ニ ン グ は こ れ か ら だ ! 46 完ってなってるけど、もうちょっとだけ続くんじゃ

Slide 47

Slide 47 text

DEEP LEARNINGの今後の展望 47 • Deep Learningは内容がブラックボックス化してしまっているため、どのよう な処理をしているかわからない • AI業界では黒魔術と呼ばれることも • NHK解説アーカイブス 「人工知能と黒魔術」(http://www.nhk.or.jp/kaisetsu- blog/400/273618.html) • ちょっと前にTwitterでトレンドになってました 帰納的に説明ができない黒魔術も 使い方によっては情報の解析に使える可能性がある

Slide 48

Slide 48 text

与える情報(チャンネル)と結果から 重要な情報か推測 48 入力 出力 適切な結果 入力 出力 不適切な結果 の情報が無いと適切な結果が得られない 重要な情報である可能性

Slide 49

Slide 49 text

DNNが抽出している特徴を見る 49 • 中間層の出力を可視化 • 災害予測のpix2pixの1層目の出力を可視化 • CS立体図の特徴がよく表れている気がする ⇒予測の精度に寄与しているのでは? • 専門家がみれば何かわかる特徴が表れ ている・・・かも? 中間層 入力 出力 教師 出典:国土地理院(http://maps.gsi.go.jp/development/ichiran.html),標高タイルを加工して作成 国土地理院(http://www.gsi.go.jp/BOUSAI/H28.taihuu10gou.html),土砂崩壊・堆積地等分布図を加工して作成

Slide 50

Slide 50 text

でも正直何がなんだかわからない 50

Slide 51

Slide 51 text

DEEP LEARNINGが何に注目しているのかを 顕著性マップとして出力する研究 51 • SMOOTHGRAD(https://tensorflow.github.io/saliency/)

Slide 52

Slide 52 text

重要な情報の顕著性を見ることで・・・ 52 重要な情報を推測 重要な情報を扱うニューロンの 顕著性マップを確認 ブラックボックスからの逆アセンブルによって 重要な情報の中でも 特に注目すべき 特徴を検出! まさに黒魔術からの錬金術

Slide 53

Slide 53 text

53 地図×Deep Learning という での情報解析 =

Slide 54

Slide 54 text

54 ご清聴ありがとうございました