現在,私は大きく分けて,並列プログラミング言語Elixirに関する研究と,宇宙利用・宇宙開発におけるコンピュータの研究を行っています.この2つは,まるで関連がないように思うかもしれませんが,私はこの2つの研究を,一貫性を持って研究しているつもりでいます.この記事は「Elixirと宇宙の話でもしますか〜Elixirと宇宙利用の関係」の続きを書きます.
なお,この記事は,A-STEPトライアウト「SAR衛星観測データ解析・伝送・共有による費用対効果の高い土砂災害検出システムの実現可能性検証」と,北九州産業学術推進機構(FAIS)の旭興産グループ研究支援プログラム「ARM CPUとApple Silicon向け機械学習・画像処理の高速化・並列化・コード最適化とプログラムコードに含まれる不具合・脆弱性の検出と排除に関する研究開発」をつなぐ導線の紹介でもあります.
また科研費基盤C「MPSoCとSAR衛星によるリアルタイム土砂災害情報提供システムの実現可能性検証」の一環でもあります.
前回のおさらい
前回の記事では,衛星データはとてつもない量にのぼる可能性があり,処理するのも通信するのも保存するのも大変であることを示しました.その上で,Elixirの並列処理がしやすいという特性により,処理と通信を抜本的に改善できるのではないかという期待があること,巨大な画像を扱った画像処理や機械学習は実行に長時間かかることがあり,この処理が途中で異常終了してしまうと困るので,ElixirのもつSupervisorに期待していることを紹介しました.
その方向性で,次のような研究開発をしてきたことを紹介しました.
この研究開発を共同で行なった企業の1つである株式会社オーイーシーの @RyoWakabayashi さんが次のようなQiita記事に仕上げてくださいました.
Elixirで衛星画像処理を行う基盤について
Pythonでは,NumPyとOpenCVによって画像処理を行うスクリプトを,Jupyter Notebook上で途中経過や結果を見ながら編集するというのが一般的だと思います.さらに様々な機械学習やディープラーニングのライブラリを使って解析していくものと思います.Pandasでデータ分析をしていくことでしょう.
現在では同様のことをElixirで行うことができます.Nx(エヌエックス)は,NumPyやTensorFlowに相当することができます.Evision(イー・ヴィジョン)はOpenCVをElixirから使うためのライブラリです.Axon(アクソン)で機械学習やディープラーニングを扱えます.LivebookではJupyter Notebook相当のことをElixirで行えます.Explorer(エクスプローラー)はPandas相当のデータ分析を行えます.
Pythonで行う場合に比べて,Elixirでこれらを行うことで,分散並列処理を容易に行えます.また,Supervisorの活用で異常終了することなく最後まで確実に処理することもできるでしょう.
衛星データ活用のヒントとなる記事
@RyoWakabayashi さんがElixirでの衛星データ活用のヒントとなる記事を精力的に執筆しています.
環境構築
画像処理
機械学習
データ分析
オープンデータの利用応用事例
地域経済分析システムRESAS
衛星データプラットフォームTellus
慣れてきたら宙畑の事例をElixirでやってみよう
宙畑にはたくさんの衛星データ利用の事例が載っています.
例えば2022年12月に公開になったばかりの記事として次の記事があります.
この事例はPythonを使っていると思いますが,同じことをElixirでやってみてはいかがでしょうか? 良い練習題材になると思います.
他にもいろいろ事例がありますよ.
基盤となるNxを高速化するために
基盤となるNxを高速化するために現在進めているのが,Pelemay Backend(ペレメイ・バックエンド)の研究開発です.Nxを分散並列に処理し,かつ確実に行えるようにするものです.