Weitere ähnliche Inhalte
Ähnlich wie CS立体図とディープラーニングによる崩落地形予想について (20)
Mehr von Ryousuke Wayama (8)
Kürzlich hochgeladen (11)
CS立体図とディープラーニングによる崩落地形予想について
- 2. 自己紹介
2
• 氏名:小林 知愛(こばやし ちあき)
• 会社:(株)ノーザンシステムサービス(入社2年目)
• 部署:研究開発部所属
• 主にDeep Learning系の業務を担当
• 日々学習がうまくいくようにニューラルネットのご機嫌取り
をしたり、神に祈ったりしています
普段の勤務状況のイメージ図
- 34. 作成手順
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); タイル座標を指定するだけで取得可能
- 35. 作成手順
35
• タイルをcanvasに描画
var Canvas = require('canvas’);
canvas = new Canvas(256, 256),
ctx = canvas.getContext('2d'),
・・・
Node.jsではcanvasモジュールによって
canvas要素を扱える
canvasへの描画を行なうコンテキスト
これと取得したタイル情報を用いてタイルを
canvasに描画
geojson-vtのデモを参考にするとわかりやすい
- 36. 作成手順
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)
- 38. 学習して検出してみると・・・
38
• 結果:
入力 出力 教師
出典:国土地理院(http://maps.gsi.go.jp/development/ichiran.html),標高タイルを加工して作成
国土地理院(http://www.gsi.go.jp/BOUSAI/H28.taihuu10gou.html),土砂崩壊・堆積地等分布図を加工して作成
- 47. DEEP LEARNINGの今後の展望
47
• Deep Learningは内容がブラックボックス化してしまっているため、どのよう
な処理をしているかわからない
• AI業界では黒魔術と呼ばれることも
• NHK解説アーカイブス 「人工知能と黒魔術」(http://www.nhk.or.jp/kaisetsu-
blog/400/273618.html)
• ちょっと前にTwitterでトレンドになってました
帰納的に説明ができない黒魔術も
使い方によっては情報の解析に使える可能性がある
Hinweis der Redaktion
- CS立体図とディープラーニングによる崩落地形予想についてと題しまして、
ノーザンシステムサービスの小林が発表させていただきます。
- まず自己紹介ですが、名前が小林知愛と申します。
岩手県の盛岡市にあるノーザンシステムサービスという会社に去年入社しまして、今年2年目になります。
研究開発部という部署で主にDeep Learning系の業務を担当させていただいておりまして、学習がうまくいくようにニューラルネットのご機嫌取りをしたり神に祈ったりしつつ仕事をしています。
- 今回の内容ですが、弊社の研究開発部では去年あたりからAI技術の一つであるDeep Learningに力を入れて取り組んでおり、その中で先ほど発表がありましたCS立体図を使った取り組みも行なっておりました。
そこで、まずこれまでのDeepLearningとcs立体図を用いた取り組みを説明し、次に今回行なった災害予測について話させていただきたいと思います。
- ではまずこれまでに弊社が行なってきたCS立体図とDeepLearningを用いた取り組みについて説明します。
- まず、取り組み始めた発端ですが、当時、画像変換を行なうDeepLearning技術であるpix2pixの検証を行なっていました。
このpix2pixは対の画像さえあればなんでも学習可能である特徴を持っています。
- そのような特徴をもつpix2pixは、データ量が豊富で様々なデータの取得が容易であるという利点をもつ地図タイルと非常に相性が良いことから、
- 以下のように様々な地図タイルでpix2pixの検証を行なっていました。
- そんななか、pix2pixに学習させるネタを探しているところに、去年のFOSS4G Advent Calendar でCS立体図を取り上げた記事が公開されているのを発見しました。
- 面白そうだからとりあえず使ってみようということでpix2pixで標高タイルからCS立体図へ変換を行なったところ、このようにほぼ完璧に再現できました。
ここで割りと満足していたのですが、
- 某農研機構のI氏から崩壊地形の抽出という入れ知恵をいただきました。
- じゃあ、崩壊地形って何かデータがあるのかというところで探してみると、地震ハザードステーションで地すべりのデータが公開されておりました。
そこで、このデータを使ってCS立体図からの地滑り検出に取り組み始めました。
- で、とりあえずpix2pixに学習させてみたところ、何か出てはいるけれど場所がだいぶ異なる結果となりました。
- 原因として、微細地形の特徴が必要であり、CS立体図の作成に使用した地理院標高タイルの10mメッシュでは解像度が足りないのではと考え、メッシュの細かいデータをさがしました。
アメリカで公開されているデータもありましたが対応する崩壊地形のデータがないということで、
- 日本国内のデータを探していると、CS立体図を知った先ほどのAdvent Calendar の記事で静岡県CS立体図なるものを発見しました。
- こちらの静岡県CS立体図は静岡県の1mメッシュの標高データから作成したCS立体図を公開しており、使うしかないということで
- 学習させてみたところ、ご覧の通り驚きの白さという結果になりました。
CS立体図と地すべり分布図を見比べると関係なさそうなところにシェープがあるのでもしかしたら参照系がずれてるのかもと思い、
10mメッシュのほうに戻して学習しても精度は向上しませんでした。
ここでCS立体図という地形の情報のみでは情報が不十分ではないかと考えました。
- そこで、地質から崩落のしやすさがわかるのではとこちらの産総研が公開している地質図を入力する情報に加えて学習してみました。
- データセットの範囲は東北から関東までで学習させてみたのですが、いまいち検出されていません。
Pix2pixはデータセットのドメインに特化する傾向があるのでこういった広範囲のデータセットでは拡散してしまうのではと考え、
- 次はデータセットの範囲を秋田付近と狭めて学習してみたところ、見事正解に近い領域の検出ができました。
- このように、地形情報のみでは地すべりの検出ができませんでしたが、地質という情報を入力に加えることで精度を向上させることができました。
このことから適切な情報を追加することで精度の向上が見込めるのではないかという知見をこれまでの取り組みで得ることができました。
- そして、ここまでの経験を踏まえて、今回DeepLearningでの災害予測に取り組みました。
- 近年異常気象による災害が増加傾向にあり、昨年も台風10号により、弊社がある岩手県も含めた様々な地域で想定以上の雨量による大きな被害がありました。
- こういった異常気象による災害の予測は突発的なものが多く、予測が困難であり、結果として従来の防災計画の想定外となってしまい適切な対処ができないという問題が予想されます。
そこでDeepLearningでこのように人間では難しい災害の予測をできないかと考えました。
- CS立体図からの地すべり検出での複数の情報を加えることで精度が向上するという知見から、地形や地質、植生などの土地の情報と雨量を入力として学習することでその土地の限界雨量による崩壊予測ができるのではと今回取り組みを行ないました。
- 今回もpix2pixを使い、雨量などの情報から豪雨による崩落予測を行ないました。
国土地理院が公開している台風10号のデータでは専門家が判別した崩落箇所のデータがあるということで、こちらを教師データに使用しました。
- 実際にデータセットに使用したデータですが、CS立体図と地質図に加えて、森の有無などが限界雨量に影響するのではと考え、災害前の航空写真、また、台風が通った期間の合計雨量を入力データとしました。
- 雨量のデータについては気象庁のデータを基に作成されたNetCDF形式のデータが公開されているので、そのデータから台風が通過した8/28~8/30の合計雨量を計算し、GMTを用いてタイルを作成しました。
- 作成手順についてはざっくりとこちらにまとめてみたので気になる方は後で参照していただければと思います。
- そうやって作成したズームレベル14のタイルがこちらになりますが、ご覧の通りドットどころの話じゃない解像度です。
- さすがに解像度が低すぎるので、より細かいメッシュデータを気象業務支援センターから購入しました。
こちらのデータはGrib2形式だったのでwgrib2という変換ツールでNetCDFに変換し、後は同様の手順でタイルを作成しました。
- そのタイルがこちらになりますが、まあ、さっきよりはまだましかなという感じですね。
- 次に教師データですが、国土地理院が公開している台風10号の岩泉地域の崩落箇所のシェイプデータを使用しました。
このデータですがGeoJSON形式しか見つけられなかったので、こちらをこれまでのデータに合わせてタイル化する必要があります。
今日はベクトルタイルに関する発表が幾つかありましたが、こちらはベクトルからラスタタイルを作成する作業になります。
- そこで使用したのが去年のFOSS4G Cesiumマニアックスで弊社の中洞が紹介したgeojson-vtという、GeoJSONからタイルを作成してくれるJavascriptのライブラリです。
Geojson-vtは作成したタイルをキャンバスへ表示できるのですが画像化まではできないので、端末上でJavascriptを実行するNode.jsを使用してタイルを出力しました。
- 作成手順はざっくりですがこちらにまとめたので気になる方は後で見ていただければと思います。
- そしてタイル化した画像がこちらになります。
描画時に色や塗りつぶしの設定が可能なので、今回はわかりやすいようにシェイプの中を塗りつぶすように設定しました。
- そしてこれらのデータを学習して検出した結果が、こちらになります。
また、驚きの白さですね。
- そこで原因を考察し、データセットの改善を行ないました。
まず、雨量の解像度が低すぎるのではないかということで、GMTのsurfaceを使用してメッシュを補完しこのように解像度を上げました。
- また、教師データの崩落箇所の色分けで混乱しているのではないかと考えました。
このデータでは青と赤が土砂崩壊・堆積地ということで雨量による直接的な被害なのに対し、緑の道路損壊はどちらかというと間接的な被害で今回検出するのは難しいと考え、
緑のデータは除外し、赤と青のデータもまとめて同じ青色で描画することにしました。
- 改善したデータセットで再度学習し検出したところ、左上にそれらしいのがうっすら検出されるようになりました。
うっすらではありますが最初の真っ白な結果からは大きな進歩です。
- ここから精度を上げるために学習を進めたところ、むしろ検出されなくなりました。
おそらく過学習が原因と考えられ、pix2pixだと同様のことがこれまでにもあったので、pix2pixではほどほどの学習回数でとどめるのが良いと思われます。
- ではここから精度を向上させるにはどうすればよいかですが、
まず、今回の学習データは150程度と非常に少なかったので広域の様々なデータを増やして学習する必要があると思われます。
また、BEGANやFsherGANなどの新しい技術も発表されているのでそれらを取り入れることで精度が向上する可能性があります。
- また、そもそもpix2pixではなく専門のDNNを作成して学習する方法もあります。
というのも、pix2pixは汎用性は高いのですが専門のドメインに特化したDNNにはどうしても性能が劣ってしまうためです。
じゃあpix2pixでやる意味なんてないんじゃないかと思うかもしれませんが、pix2pixはデータセット数、学習回数が少なくてもそこそこ結果を出せるという利点があります。
そこで、専門のDNNでの大規模な学習をする前に、pix2pixで小規模な学習を行いデータセットの作成手法が適切であるかなどの検証を行なうといった手法に使えるのではと考えております。
- 今回の災害予測に取り組んでみての感想です。
結果としては贔屓目に見てなんとなーくそれっぽいのが出ましたが、どういったデータや手法が寄与したのかは具体的にはわかりませんでした。
また、こういった研究はデータの粒度や精度、数が大切になってくるため、満足なデータがそろえられない現状ではこれ以上の精度の向上は難しく感じます。
こういったデータの収集や計算資源、マンパワーなどの問題で弊社だけで研究を行なっていくのは限界があります。
そのため、弊社では一緒に研究していただける企業や機関を随時募集しておりますので、興味をもたれましたらお気軽にご連絡していただけたらと思います。
結果としてはあまり精度は良くありませんでしたが、
- 「俺たちのディープラーニングはこれからだ!」ということで、ノーザンシステムサービスの次回作にご期待していただけたらと思います。
なお、完って書いていますがもうちょっとだけ続きます。
- ここからはDeepLearningの今後の展望について述べさせていただきたいと思います。
DeepLearningは内容がブラックボックス化してしまっているため中でどのような処理をしているのかわからないことが欠点であり、この欠点をAI業界では黒魔術と呼ぶこともあるそうです。
このブラックボックス化についてNHKが記事を公開していまして、真面目な内容で面白いんですがタイトルの「人工知能と黒魔術」という厨二病感あふれるパワーワードでちょっとまえにTwitterで話題になっていました。
このようにDeepLearningは帰納的に説明ができない黒魔術ではありますが、この黒魔術も使い方によっては情報の解析ができるのではと考えております。
- まずは与える情報と結果から重要な情報を推測するということです。
上の図のように3つの情報をDNNに入力し適切な結果が得られたのに対して、下の図のように1つの情報を抜いて2つの情報をDNNに入力すると適切な結果が得られなかった場合、
抜いた情報が重要な情報ではないかという推測ができるのではと考えています。
- また、DNNが抽出している特徴を見るという手法もあります。
一般的な手法ではDNNの中間層を可視化して特徴を見てみるというものがあります。
今回の災害予測のpix2pixの1層目の出力を可視化したものが右の図になります。
これを見ることでなんとなく入力されたCS立体図の特徴が表れていることから、CS立体図が予測の精度に寄与しているのではといった仮説を立てることができます。
これだけ見ても素人にはよくわかりませんが、専門家の方であれば何か重要な特徴を見つけることができるかもしれません。
- でも、正直こんなの見ても何がなんだかわからないのが本音です。
もっと人間が見てわかりやすく可視化したいです。
- ということでDNNが何に注目しているのかを顕著性マップとして出力する研究が行なわれています。
例えばこの犬が映った画像について、右の顕著性マップを見ると犬の部分が白くなっており、DNNがちゃんと犬の映っている箇所に注目しているということがわかります。
- そして、この顕著性マップを推測した重要な情報に照らし合わせてみることで、重要な情報の中でも特に注目すべき特徴が検出できる可能性があります。
このようにブラックボックスからの逆アセンブルによって今まで人間が知らなかった特徴を検出できるかもしれません。
- 以上のようにDeepLearningとGISの組み合わせによって、これまでにはなかった新しい視点での情報解析が可能となります。
これは今回のテーマであるReprojectionといえるのではないでしょうか。
そしてこのReprojectionによって今後、GISとDeepLearning双方の分野が発展していくことを期待しております。
- 以上で発表を終わらせていただきます。
ご清聴ありがとうございました。