狠狠撸

狠狠撸Share a Scribd company logo
株式会社ノーザンシステムサービス
中洞 友希
Deep Learning with FOSS4G
FOSS4G 2016 Tokyo
自己紹介
氏名:中洞 友希
会社:(株)ノーザンシステムサービス
入社4年目
地図やドローンを使ったりした
可視化の研究開発をしています。
色々面白いものを置いてあるので、
興味がある方は是非当社まで
お越しください!
アーカイブ=
これまでを振り返り,
そしてこれからに伝えていく
今回のテーマ
弊社でのDeep Learning×GISの開発事例
古地図の自動分類
?古地図の地図記号から識別し、土
地利用の領域ごとに色分けして分類
するニューラルネットワークの生成
?古地図と現在の地図を重ねること
で、液状化などのリスクがある地域
がわかるかもしれない
農研機構の某I氏とのご縁により一緒にお仕事さ
せて頂いています。
古地図の自動分類
?畳み込みニューラルネットワーク
(CNN)で実装
? Googleの機械学習ライブラリ
TensorFlowを使用
?ハイパースペクトルの航空写真か
ら土地を分類するプログラムをもと
に作成
(https://github.com/KGPML/Hyperspectral)
水田や市街地といった特徴がわかりやすい
ところは精度が良さそう。
畑又は空地といったほぼ空白の部分は難しそう。
当初の予想
水田
市街地
畑又は空地
古地図の自動分類
水田
市街地
針葉樹林
入力画像 正解画像 分類結果
結果
ほぼ予想通り。
空白部分が多く、地図記号が均一ではない針葉
樹林なども精度が悪い
畑又は空地
古地図の自動分類
なかなか精度が上がらない!
畳み込みニューラルネットワークのパラメータや構成を
変えながら試行錯誤
フィルターの大きさを変えたり、各層のニューロンの数を
増やしたり、学習回数を増やしたり、etc…
精度を上げるのは簡単じゃないか?
しかし???
試行錯誤していく中で???
広域の特徴を捉えるために全てのタイルを繋げて一枚の
地図で学習
タイル単位で学習を繰り返し行いモデルを成長させてい
く方法に変更
古地図の自動分類
?畳み込みニューラルネットワークの構成や設定をクラ
ス化して設定ファイルに記述し、簡単に変更できるよう
に改良
?畳み込み層と全結合層の層の数を増加
?全結合層の各層のニューロンの数を増加
?パッチサイズを大きく変更(15x15→37x37)
畳み込みニューラルネットワークの構成の変更もやってみた
精度が向上!
古地図の自動分類
入力画像 正解画像 分類結果
7~8割くらいの
精度になった!!
改良後の結果
古地図の自動分類
畳み込みニューラルネットワークの構成
出力サイズ 層 ニューロン数 フィルターサイズ
37x37x3 入力
37x37x500 畳み込み層 500 5x5
19x19x500 プーリング層 2x2
19x19x300 畳み込み層 300 5x5
10x10x300 プーリング層 2x2
10x10x100 畳み込み層 100 3x3
4096 全結合層 4096
2048 全結合層 2048
1024 全結合層 1024
Softmax層
古地図の自動分類
TensorFlowを使用しての感想
?環境設定がちょっと面倒
*OSはUbuntu14.04推奨
*GPUを使う場合はCUDAとCuDNNが必要
?バージョンアップが早いのでキャッチアップが大変
?マルチGPUで動くようにしたけどむしろ遅くなった
?可視化ツールTensorBoardは便利
*ニューラルネットの構成を図示したり、
パラメータや誤差、精度などをグラフ表示したりしてくれる
Deep Learning×GISで???
学習データを使えば人手でやっていた労
力のかかる分類作業を自動化できる
他に何か応用事例はないだろうか?
色々調べてみた。
太陽フレアを事前に予知する「宇宙天気予報」
LSTMを用いて太陽フレアの発生を
数日くらい前に予測
飛行機の遅延が数日前に分か
ったり、計画停電に備えるこ
とができるかもしれない
(http://qiita.com/nushio/items/a8e9aabc3bd7fdf1b33e)
「宇宙天気予報」では太陽光の波形データからX線フラッ
クスの予測を行っていた
過去の地震波のデータを使用すれば
人間が分からないような地震の兆候をDeep Learningが
抽出してくれるかもしれない
?南海トラフや首都直下型地震が懸念されている
?地震の予知ができれば心構えや準備が出来るため、減災に
つながる
そもそもなぜ地震なのか?
じゃあ時系列予測に何を使うか?
「宇宙天気予報」ではLSTMを使用していた。
時系列データの予測にはLSTMやHTMやRNNなど
色々なニューラルネットワークがあるっぽい。
今回は全脳アーキテクチャ勉強会で話題に
なっているDeepPredNetを使用することに
した。
一瞬先の未来を予測する「Deep PredNet」
車載カメラの映像から次に来るフレームの画像を予測し
生成する。
(http://qiita.com/nushio/items/a8e9aabc3bd7fdf1b33e)
?大脳新皮質の構造に似ている
?教師なし学習
さっそく
Deep PredNetを使って実験してみよう!
PredNetのソースを応用して使用するために
地震波形データを画像にする必要があった。
さらに、マルチモーダルに対応するため、
地震波形データだけでなく
?マグニチュード
?震源の深さ
も一緒に画像にしてみた。
データの取得先
地震波形データ
?IRIS
(http://service.iris.edu/irisws/timeseries/1/)
地震データ
?IRIS
(http://service.iris.edu/fdsnws/event/1/)
?IRISは全世界のデータを無料で提供している。
?APIで簡単に取得できる。
?ただし日本のデータは少ない。
?360 × 180pxの画像を作成し、世界地図に見立てる
?観測点(ステーション)の緯度経度の小数点を切り捨てて
画像のX,Yに1pxとしてプロット
?各地点のカラーは以下のようにする
R: 地震波のデータ(0~255)
G: マグニチュード(0~255)
B: 震源の深さ(0~255)
?地震波形のデータは1秒間に数件あったため、平均して1
秒当たりの値を算出
?カラーはそれぞれのデータの最小値と最大値から等間隔
に256分割して0~255の輝度値として使用
手法
こんな感じの画像
360px
180px
ここにある
とりあえずランダムに10個の観測点のデータを使って
やってみた
なにも出力されない??
結果
OUTPUTINPUT
拡大
観測点の数が少ないから失敗したのか?
失敗原因を考えてみる
じゃあ全世界の観測点のデータを使ったらどうだろう?
データサイズがでかすぎて3日経ってもデータの取得が終
わらない!
じゃあ日本に限定してみるか
日本に限定した結果
日本のデータは予想以上に少なかった。
結果はやっぱり変わらない??
INPUT OUTPUT
拡大
もう一度 失敗原因を考えてみる
?畳み込みニューラルネットの特性上、周りのpxを畳み込
むため、1px単位のデータだと意味をなさないのかもしれ
ない。
?スパースなデータは畳み込みニューラルネットワークと
相性が悪いのかも。
やはり1px単位ではなく、補間したほうが良いのでは。
何かいいアイディアはないか????
GMTが適しているのではないか?
地球科学者が多く利用しているGMT。
スパースな欠損データを補間するために様々な
補間手法が実装されている。
?地震波系のデータをXYZファイルにする
?前処理としてblockmedianでエイリアスの除去する
?surfaceで補間を行いXYZデータをグリッド化する
?grdimageでグリッドデータからカラーの図を作成し、
ps2rasterで画像にする
?地震波形のデータは1秒間に数件あったため、平均して1
秒当たりの値を算出
?カラーはそれぞれのデータの最小値と最大値から等間隔
に256分割して0~255の輝度値として使用
GMTを使う手法
?日本の観測地点のデータが少ないため、非常にスパース
なデータになってしまった
?特定の地域が異常値になっており全体の階調値がおかし
くなってしまった
データを見直す必要がありそう
GMTを使った結果
地震波形データ
?防災科学技術研究所 (Hi-net)
(https://hinetwww11.bosai.go.jp/auth/?LANG=ja)
地震波形データの取得先を変更する
?データのダウンロードにはユーザー登録が必要
?データはフォームに入力してダウンロード
?長期間のデータが取得できない。
?学習用に東日本大震災のデータ、検証用に熊本地震
のデータをそれぞれ50分ずつ取得した
これでデータの準備は整った。
東日本大震災のデータで学習を行い、
熊本地震を予想できるのか試してみた!
実装中にはまったところ 1/3
同じ観測点で複数の地震波形データがある??
地震波形データはNS(北-南)?EW(東-西)?UD(上-下)の3
成分がある。3つのデータを1つにする必要があった。
3成分からベクトルの長さ
(ノルム)を算出して
波形データとして使用
http://www.data.jma.go.jp/svd/eqev/data/kyoshin/jishin
/kaisetsu.htm
実装中にはまったところ 2/3
GMTで震源地点に円を表示したい!
マグニチュードによってサイズが
異なる円をPSXYで描いてみた
GMTはオプションが多く、GMT初心者の私には難
しかった。
重ね書きのルール(>,>>,-K,-O)に気づかず数時間はまった???
実装中にはまったところ 3/3
地震波の階調値がおかしい
地震波のデータを画像にしてみると
全部真っ黒。
特定の値に集中しているようだ。
等間隔で256分割していたため、値に偏りがあり全体の
階調がおかしくなっていた。
256分位にするようにしたところ、均等に数が分布され
て自然になった!
工夫したところ
地震発生個所のデータを特徴として捉える
地震のデータ(マグニチュード)は1秒のみであるため、
ニューラルネットで特徴として捉えるために5分間残
すようにした。
また、5分後には収束するようにサイズとカラーを変
更するようにしてみた。
地震発生 地震発生から5分後
最終結果???の前に
こんな結果がほしい!
t t+1
地震波の動きから地震の発生を予想できたらいいな
最終結果
実際は????
PredNetの予想正解
考察
?データの数が圧倒的に足りない。
*日本ではなく世界規模が必要
*長期間(10年単位とか)のデータが必要
?豊富な計算資源が必要。
*GPUを使って計算したが50分間のデータを
60回学習するのに8時間かかった。
まとめ
?精度が高くなれば地震予想ができるかもしれない。正確
性が多少低くても1つの防災の指針になるのではないか?
? Deep Learningは応用範囲は広いが、まだノウハウが
なく、なぜ失敗するのか、なぜこんな計算結果になるのか
等が分からず苦労した。
?ブラックボックス化した計算内容を人間に理解できるよ
うに解析するDeep Learningが登場するのを期待!
?一社だけだと計算資源やマンパワーが圧倒的に足りない
ご興味のある方は一緒に研究してみませんか?
ご清聴ありがとうございました。

More Related Content

Deep Learning with FOSS4G