衛星データ×機械学習!「Tellus Satellite Boot Camp」イベントレポート
2月9日、2月10日で行われた「Tellus Satellite Boot Camp(東京会場)」は募集50名に対して約700名の応募と倍率約13.8倍……! その模様をダイジェストで紹介します。
本記事は「機械学習ベンチャーに勤めながら、衛星データについてはこれから学んでいきたい!」と最近宙畑にジョインしたライターが、2月9日~10日に開催された「Tellus Satellite Boot Camp 」というハンズオン形式のイベントに参加したときのレポートです。
内容盛りだくさんな2日間のダイジェスト版として、現場の高揚感が伝わるようなレポートをお送りしていきます!
(1)大盛況! Tellus Satellite Boot Campとは?
さくらインターネット株式会社により全国的に開催されている、衛星データを活用する技術者(衛星データサイエンティスト)の養成講座。実際に衛星データを使ってディープラーニングのモデルを構築して画像解析してみようという実践的なイベントになっています。
今回、東京会場の応募者は募集人数50名に対してなんと691名、13.8倍の倍率でした。以下で紹介するようなボリューミーな内容が無料で学べるということもあってか、応募の段階から大盛況でした。
(2)2日間、何をするの?
本イベントのゴールは「衛星データを使って画像解析をし、土砂崩れ領域を含むかどうかを判定するモデルの作成・精度検証まで行う」です。
「衛星データを画像解析する」と聞くと、「参加してみたいけど敷居が高いな…」「私にできるのかな..」 と不安に思われがちかもしれませんが、大丈夫。
講座受講前に、環境構築したり、課題を解いてみたりなど、e-Learning動画の講座もあり、講座の予習を行うことができます。
いきなり実践というわけでもなく、1日目はセミナー形式で座学として衛星データの知識や機械学習,ディープラーニングの知識を学び、2日目に、1日目の知識を生かして、実際に自分で手を動かして実践し理解を更に深めるというようなスケジュールで進んでいきます。
【1日目】
トレーニング目的、Tellus紹介
リモートセンシング概論
データサイエンス/AI概論
衛星データの機械学習用データ整備について
衛星データ解析ツール演習
衛星データの機械学習用データ整備演習
Tellus相談会
【2日目】
Pythonによる実データ解析演習
衛星データを対象とした深層学習演習
では早速、本題の講座の中身に迫っていきたいと思います。
(3)1日目:衛星データ / AIの基礎と教師データ作成実践
①Tellusの紹介
まず、宙畑では何度も登場している「Tellus」。商用利用可能かつ無料で公開されている日本初の衛星データプラットフォームとして、衛星データを使いやすいものに変えていくとともに、本イベントをはじめとして衛星データに興味を持ってもらい、活用する人を増やすための取り組みまで幅広く行っています。
2月末にはVer 1.0がリリースされるとのことで、特に機械学習系の会社にいる方や衛星データを活用して分析したい方は要チェックです。
②リモートセンシング概論
RESTECの小田川氏による、「リモートセンシングによって得られる衛星データ」についての講義。
リモートセンシングというのは、物に触れずに見ただけで判断する調査方法の手段のこと。衛星に搭載されているセンサを利用して地表を判断するのもその1つです。
衛星データって地図みたいな航空写真みたいなあれだよね……という印象があるかもしれませんが、それは半分正解、半分間違い。
「航空写真みたいなあれ」を具体的に言うと、「高いところから高解像度のカメラで撮影した写真」になるのですが、衛星データは解像度こそ航空写真に及ばないものの、分かることにいくつか種類があるのです……!
今回主に習ったのはこの2つによるデータ。
- ●光学センサ:色(RGB)で対象物を判断
- ●SARセンサ:電波の跳ね返りを画像に起こし、形で対象物を判断
データから何を知りたいのかによってセンサの波長帯域や電波の周波数(バンド)を変える必要があります。
例えば、雲がかかっているとき光学だと雲の様子を捉えてしまって、雲の下の地上の様子を見ることはできないですが、SARだと、電波の周波数を変化させることで、雲を通り抜けて地表の形状を捉えることができ、地上の様子を確認できます。
この講義では、衛星データでどういったものを見ることが可能なのか、自分が取得したいデータはどうやったら取り出せるのかといった部分を知ることができました。
筆者は、普段機械学習系の会社にいるので、衛星データの話を聞くことも調べることもあまり機会がないため、驚きと発見が1番大きかったです。
③データサイエンス/AI概論
次は、株式会社SIGNATEの高田氏による、「AI入門講座」についての講義。
事前学習動画での講師もやっている高田氏、生の高田さんに会えました!とよく言われるそうですが、私もつい、動画の先生だ!!と反応してしまいました。
まずは、画像解析の前にAIに関する知識を整えようということで、そもそも人工知能(AI)とは?という話からAIでは何ができるのかといった基礎から教わりました。
AI活用における3つの必要条件として、計算資源・データサイエンティスト・データが挙げられます。
中でも、質の良い学習データが大変重要で、AIに学習させるためのデータを収集する際にどのような点を考慮すべきなのかという話に繋がっていきます。
④衛星データの機械学習用データ整備について
基本的には、回帰や分類といった過去の実績や付与されたラベルを元に予測をする「教師あり学習」をメインに今回は話を進めていきます。
教師あり学習では、やりたいタスクに応じて正解ラベルつきの教師データが必要です。
タスクに応じてとはどういうことかというと、画像認識における一般的なタスクとしては、以下の3つが挙げられます。
- ●分類(Classification)
- ●検出(Detection)
- ●セグメンテーション(Segmentation)
この各タスクによって与えるべき正解ラベルの付け方が異なるため、教師データを作成する前に、どういった目的のタスクを機械学習にやらせたいかから考える必要があるということです。このとき、精度にも直結するため、データの量と質についても考慮する必要があります。
学習時の教師データ作成を実際に挑戦してみようということで、具体的にどのように教師データを作成すればいいのか、といったテクニックの話を次の講義では行っていきます。
⑤衛星データ解析ツール演習
衛星データにおける課題として、以下のような問題がありますが、Tellusのようなプラットフォームによる一括改善が期待を集めています。
- ●データセットを入手・ダウンロードするまでに時間と工夫を要する
- ●観測データ/解析結果の多種多様化により、形式が異なる場合があり、それに伴って解析手順も異なってくる場合がある
- ●解析した結果を周囲に共有したりフィードバックしたりする際にも時間を要する
「データセット準備済」「前処理・解析手順の統一」により、簡単に誰でも衛星データを利活用できるという点を実感し、どうやって衛星データを加工することができるかを簡単に学ぶために、この講義では、Google Earth Engineを使って衛星データを見ていきました。
私はただの地図表示しか見たことがなかったのですが、Google Earth Engine上で想像よりも簡単に衛星データを使えることに驚きました。
例えば、バンド変更、データセット選択をして、どこに植物が多いかを表示、自分が見たいものをここで絞り込み、どこで地滑りが起こっているかなどを検出して自分でマーカーでピンを立てたるといったことから、教師データ作成まで。さらには、作ったものをURLで簡単に共有できるなどなど、様々な利用方法を知ることができました。
⑥衛星データの機械学習用データ整備演習
この講義では、機械学習で衛星データを使いたいときには、どのようなデータ加工をさらに加える必要があるのかといったところをやっていきます。
ここで、「衛星データを使って土砂崩れ領域を含むかどうかを判定するモデルの作成・精度検証まで行う」という今回のゴールを思い出してください。
100m×100mの画像上に土砂崩れがあるかないかを識別するための教師データ作成を行い、データ作成のプロセスを理解できます。
そして何よりもこの講義は、実際にデータ作成の大変さを体感できます…!!
具体的には、ツールを使ってサイズの大きいデータを一括でクロップしてタイル画像を作成したり、元のデータにグリッドを表示させて目視で土砂崩れの有無を判断してラベルをつけたりする作業を行いました。
ただ、今回はこの目視で土砂崩れの有無を判断してラベルをつける作業は膨大な時間を要するため、2日目で行う実習では事前にSIGNATEさんによって用意していただいた教師データを利用して学習モデルを構築していきます。
⑦1日目のまとめ
(4)2日目:画像処理と衛星データを活用したDeep Learningでの解析演習
2日目は、ちょっとした座学もありますが、実際に手を動かしていきますので、かなり本格的な実習でした。
①Pythonによる実データ解析演習
a.画像処理入門
この講義では、どうやって画像の特徴を目立たせるか、どうやって画像のバラエティを増やすか(データオーグメンテーション)といった機械学習における画像処理とは一体どういうことなのかを学びます。
実際には、NumpyとScikit-imageというライブラリを活用してPythonにおける基本的な画像処理を行いました。
例えば、画像のクロッピング・回転・反転・グレースケール変換などです。
機械学習、特にDeep Learningでは、データ量(多様性)が精度に影響するため、データオーグメンテーションなどの過程を踏むことで、精度が急激に上がる場合もあります。
本イベントで度々登場する、そのDeep Learningとは一体何なのかという基礎を次の講義では行います。
b.Deep Learning入門
Deep Learning(深層学習)とは、ニューラルネットワークと呼ばれる機械学習の手法の発展形です。
この講義では、ニューラルネットワークの仕組みや精度に関係してくる活性化関数・オプティマイザー・学習率などについて学び、画像認識時によく使われる有名なネットワークである、Convolutional Neural Network(CNN)について学びます。
チュートリアルとして実際にKerasを使ってMNISTのデータセットをもとに簡単な2値分類モデルを構築し、精度評価してみるところまで行いました。
②衛星データを対象とした深層学習演習
このパートは、完全に演習の時間ということで、チュートリアルで作成したモデルの学習率や活性化関数を変えたり多層化したりして学習曲線を描いて変更前後で比較を行います。
その後、本イベントの醍醐味である「衛星データを使って土砂崩れ領域を含むかどうかを判定するモデルの作成・精度検証まで行う」というところを行いました。
また、日本版Kaggleとも呼ばれるSIGNATEに実際に投稿して、時間内で誰が1番精度評価が高いか、リアルタイムのランキングを見ながら会場で競いました。
参加者の皆さんは、VGGNetを摸倣したり多層化して活性化関数をReLUにしてみたり、左右反転させてデータオーグメンテーションかけてみたりなど様々な工夫を凝らして精度をあげていました。
衛星データはデータサイズが大きいので一定のサイズにクロップする必要があるのですが、私はクロップすると大量のデータを一気に取得できるので、左右反転させてみるなどデータオーグメンテーションをかける必要はないのかなと思っていました。
しかし、SARデータのように解像度が荒いものだと人目で分類するのも難しいなどタスク自体が難しいため、結局もっと枚数が必要になってデータオーグメンテーションをかけたほうが精度があがるなど、衛星データに限らずですが、実際にデータを触ってみないとわからないことも多いという学びと、データを実際に扱ってみての新たな発見をここで得られました。
自分でデータを作成するのは、大量の時間を要するのですが、今回のようにすでに正解ラベル付きのデータを用意してもらえるとすぐにトレーニングを回して試してみることができるため、Deep Learning自体を勉強したい人にとっても、衛星データを使ってみたい人にとっても良い演習時間になるのではないかと思います。
③2日目のまとめ
(5)Tellus Satellite Boot Campのポイントとまとめ
最後にこの全体のイベントの講座を通して、「Tellus Satellite Boot Camp」とあらためて思ったポイントは以下の4つです!
最初は、衛星データ?波長?というレベルだったので、ついていけるかどうか心配だったのですが、かなり丁寧に教えていただき最後まで辿り着くことができました。
参加する前は、衛星データって何かに使えそうというふんわりした捉え方だったのでした。
終わってみると、最近見かける衛星データを画像解析して森林管理などが行われているニュースについて、バンドを切り替えて植物を捉えることができるからなのかと理解が深まったり、衛星データを使ってこんなこともできるのではないかといったアイディアが浮かぶようになったりと具体的に考えることができるようになりました。
このイベント、無料でいいの!?と心配になるくらい内容盛り沢山で、レポートに書ききれないほどでしたが、宇宙系のバックグラウンドの方はディープラーニングを簡単に扱ってみることができ、機械学習系のバックグラウンドの方は実際の衛星画像を使ってみることができるというどんなバックグラウンドの方でも学びある楽しい時間でした。