Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[FOSS4G 2017 Hokkaido] CS立体図とディープラーニングによる崩落地形予想...

[FOSS4G 2017 Hokkaido] CS立体図とディープラーニングによる崩落地形予想について

★ この資料は FOSS4G 2017 Hokkaido の登壇発表資料です ★

CS立体図と地質図、航空写真と深層学習アーキテクチャ「Pix2pix」を使って、雨量による土砂崩落予測ができるのか調べてみました。

発表者:小林 知愛(株式会社ノーザンシステムサービス 研究開発部)

More Decks by ノーザンシステムサービス | Northern System Services

Other Decks in Technology

Transcript

  1. 自己紹介 2 • 氏名:小林 知愛(こばやし ちあき) • 会社:(株)ノーザンシステムサービス(入社2年目) • 部署:研究開発部所属

    • 主にDeep Learning系の業務を担当 • 日々学習がうまくいくようにニューラルネットのご機嫌取り をしたり、神に祈ったりしています 普段の勤務状況のイメージ図
  2. 原因を考察 13 • 地すべりの検出には微細地形の特徴が必要? • 人の目によるCS立体図からの地形判読では1mメッシュを使って判定 • 戸田堅一郎, “CS立体図を用いた地形判読について”, 第125回日本森林学会大会,

    2014.7.16. • メッシュの細かい地形データがないか? • USGC(アメリカ地質調査所)やNOAA(アメリカ海洋大気庁)で公開されているDEMは あったが対応する崩落地形データがない 地理院標高タイルの10mメッシュでは解像度が足りない?
  3. CS立体図+地質図 18 • CS立体図のRGB+地質図のRGBで、合計6チャンネルの入力データで学習 • データセットの範囲は東北~関東くらいまで • 結果: • pix2pixはデータセットのドメインに特化する傾向がある

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

    台風が通った期間の合計雨量 出典:国土地理院(http://maps.gsi.go.jp/development/ichiran.html),標高タイルを加工して作成
  5. 雨量タイルの作成手順 28 • PythonでnetCDFファイルを読み込んで3日間の合計雨量を計算、netCDFファ イルに出力 • netCDFファイルからタイルを作成するプログラム(Python)を作成して実行 • GMTに渡す1タイルの範囲の経緯度を計算 •

    GMTのgrdimageで合計雨量のnetCDFファイルから計算した経緯度の範囲のカラー図 を作成、ps2rasterで画像化(GMTコマンドはPythonから実行) • Pythonの画像ライブラリPillowを使ってカラー図画像を256x256にリサイズ • 以上の処理を指定したタイルの分だけ繰り返す
  6. GEOJSON-VT 33 • GeoJSONからタイルを作成してくれる JavaScriptのライブラリ (https://github.com/mapbox/geojson-vt) 「FOSS4G 2016 Hokkaido Cesiumマニアックス」でも紹介

    • 藤村さんのQiitaから発見 • geojson-vtはキャンバスに表示するだけで 画像にはしてくれないので、端末上で JavaScriptを実行するNode.jsを使ってタイ ルを出力
  7. 作成手順 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); タイル座標を指定するだけで取得可能
  8. 作成手順 35 • タイルをcanvasに描画 var Canvas = require('canvas’); canvas =

    new Canvas(256, 256), ctx = canvas.getContext('2d'), ・・・ Node.jsではcanvasモジュールによって canvas要素を扱える canvasへの描画を行なうコンテキスト これと取得したタイル情報を用いてタイルを canvasに描画 geojson-vtのデモを参考にするとわかりやすい
  9. 作成手順 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)
  10. 精度を上げるためさらに学習を進めると・・・ 42 • 結果:むしろ検出されなくなる • おそらく過学習が原因 • pix2pixではほどほどの学習回数でとどめたほうが良い 入力 出力

    教師 出典:国土地理院(http://maps.gsi.go.jp/development/ichiran.html),標高タイルを加工して作成 国土地理院(http://www.gsi.go.jp/BOUSAI/H28.taihuu10gou.html),土砂崩壊・堆積地等分布図を加工して作成
  11. 俺 た ち の デ ィ ー プ ラ ー

    ニ ン グ は こ れ か ら だ ! 46 完ってなってるけど、もうちょっとだけ続くんじゃ
  12. DEEP LEARNINGの今後の展望 47 • Deep Learningは内容がブラックボックス化してしまっているため、どのよう な処理をしているかわからない • AI業界では黒魔術と呼ばれることも •

    NHK解説アーカイブス 「人工知能と黒魔術」(http://www.nhk.or.jp/kaisetsu- blog/400/273618.html) • ちょっと前にTwitterでトレンドになってました 帰納的に説明ができない黒魔術も 使い方によっては情報の解析に使える可能性がある
  13. DNNが抽出している特徴を見る 49 • 中間層の出力を可視化 • 災害予測のpix2pixの1層目の出力を可視化 • CS立体図の特徴がよく表れている気がする ⇒予測の精度に寄与しているのでは? •

    専門家がみれば何かわかる特徴が表れ ている・・・かも? 中間層 入力 出力 教師 出典:国土地理院(http://maps.gsi.go.jp/development/ichiran.html),標高タイルを加工して作成 国土地理院(http://www.gsi.go.jp/BOUSAI/H28.taihuu10gou.html),土砂崩壊・堆積地等分布図を加工して作成