コンテンツに移動
デベロッパー

People and planet AI: 海での漁業活動を分類する時系列モデルの構築方法

2021年10月18日
https://storage.googleapis.com/gweb-cloudblog-publish/images/pandp2_rev2_thumb.max-1300x1300.jpeg
Google Cloud Japan Team

※この投稿は米国時間 2021 年 10 月 1 日に、Google Cloud blog に投稿されたものの抄訳です。

今日では、機械学習を活用したテクノロジーにより、船舶の活動を追跡し、IUU(違法、無報告、無規制)漁業活動への対処に役立つパターン推定を行うことができるようになっています。こんなことが可能になると誰が予想できたでしょうか。さらに特筆すべきなのは、今や公平で持続可能な海洋の利用のためにこうした情報を一般に公開できるだけの演算能力が利用可能だということです。

素晴らしいメンバーが集結した非営利団体 Global Fishing Watch は、この膨大な量のビッグデータを扱う挑戦を受けて立ち、成功を収めました。その成果である動的マップには、Global Fishing Watch のウェブサイト globalfishingwatch.org/map から直接アクセスできます。このマップは、世界中で漁業活動の透明性を高めており、海洋保護区の設立と管理に役立っています。

https://storage.googleapis.com/gweb-cloudblog-publish/original_images/europe_centred_dark_vYqOPBm.gif
機械学習を活用した Global Fishing Watch の世界の漁業マップのタイムラプス

People and Planet AI シリーズの 2 つ目のエピソードは、この課題に対する機械学習ソリューションからインスピレーションを得ています。短い動画を作成し、Google Cloud でシンプルな時系列分類モデルを構築しインタラクティブな地図で視覚化するために必要なすべての関連するコードのサンプルを公開しています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Classification_visual_.max-1600x1600.png
このモデルは、船舶が漁を行っているかどうかを予測しています。

アーキテクチャ

これらは、このサンプルのモデルを構築する際に使用するコンポーネントです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Architecture_Global_Fishing_Watch.max-1800x1800.png
時系列分類モデルの作成のためのアーキテクチャ図
  • Global Fishing Watch GitHub: データの取得元

  • Apache Beam: Dataflow上で実行する(オープンソース ライブラリ)。

  • Dataflow: 一方はモデルをトレーニングし、もう一方は結果を評価する 2 つのデータセットを作成する(Google のデータ処理サービス)。

  • TensorflowKeras: 機械学習モデルの定義に使用する(高レベル API ライブラリ)。モデルはその後、Vertex AI でトレーニングする。

Vertex AI: モデルをトレーニングし、出力する(機械学習モデルを構築、デプロイ、スケーリングするプラットフォーム)。
https://storage.googleapis.com/gweb-cloudblog-publish/images/cost_of_model_.max-1600x1600.png
この時系列分類モデルの構築費用は、コンピューティング リソースで $5 を下回ります。

料金と手順

このソリューションを実行するための総費用は $5 を下回りました。

こちらは実際に行った 7 つの手順と、おおよその時間と費用です。
https://storage.googleapis.com/gweb-cloudblog-publish/images/Table__part_1_of_2.max-1100x1100.png
https://storage.googleapis.com/gweb-cloudblog-publish/images/Table_part_2_of_2.max-1100x1100.png

時系列分類モデルを使用する理由

海洋上の船舶は常に動いており、航空写真で表示すると特徴的なパターンを作り出しています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Prediction_of_fishing_types.max-1200x1200.png
船舶は漁具により固有の空間パターンで移動しており、規制や環境への影響にも違いが出ます。

 船舶の軌跡の形を認識するようにモデルをトレーニングできます。大型の船舶は、自動船舶識別装置(AIS)の使用が必要です。この GPS のようなトランスポンダは、船舶の海上移動業務識別コード(MMSI)や、その他の重要な情報を近くの船だけではなく、地上や衛星の受信機に定期的に送信しています。AIS は衝突防止と海上での全般的な安全の強化を目的として設計されていますが、船舶のモニタリングや不審な漁業行為の発見を世界規模で行ううえでも欠かせないシステムとなっています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/AIS_device_for_fishing_vessels.max-1100x1100.png
船舶の位置を発信する自動船舶識別装置と呼ばれる GPS のようなデバイス。

厄介なのは、MMSI のデータ所在地のシグナル(タイムスタンプ、緯度、経度、港からの距離などの情報を含む)が、決まった間隔で発せられていないという点です。AIS の送信頻度は船舶のスピードによって変化します(速度が上がると回数も増加)。また、地上の受信機には見通し線が必要で、衛星は頭上になければならず、船舶が過密しているとシグナルの干渉が起こり得るため、すべての送信された AIS のメッセージが受信されているわけではありません。たとえば、出港した船舶が近海で操業している場合は AIS のメッセージは頻繁に受信される可能性が高いですが、沖合に移動した場合は衛星の受信状況が改善するまでは受信の頻度は下がります。これは機械学習モデルが解釈を行ううえでの能力が試される問題です。データに欠落部がありすぎるために、予想が難しくなっています。

これを解決するのが、データの正規化と固定サイズの時間単位ウィンドウの生成です。これにより、時間ごとに船舶が操業しているかどうかのモデルによる予測が可能となります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/time_normalization_for_fishing_prediction..max-1000x1000.png
2 つに分かれたパネル。左側は収集された不規則な GPS シグナル。右側はデータの時間単位ウィンドウへの望ましい正規化の方法。

現在の位置、スピード、進行方向を見ただけでは、船が漁をしているのかどうか判断するのが難しいこともあります。そこで、過去のデータも確認します。リアルタイム予測をする必要がないのであれば、未来の分を確認するという選択肢もあります。このサンプルの場合は、過去 24 時間を確認したうえでの予測が妥当だと考えられます。つまり、1 時間の予測のために少なくとも 25 時間のデータが必要ということになります(過去 24 時間と現在の 1 時間)。また、より長い時系列での予測も可能です。一般的には、時間ごとの予測のためには、(n+24)時間のデータが必要です。

デプロイとモデルへのアクセスのオプション

このサンプルの場合は、ウェブアプリでのモデルのホストに Cloud Run を使用しています。そうすることで、その他のアプリで呼び出して、継続的に予測を行うことができます。長期間にわたってインターネットからモデルにアクセスする必要がある場合もあるため、その点では料金面で満足のいくものになっています(リクエスト単位の課金)。また、モデルのトレーニングとビルドを行う Vertex から直接、ホストすることも可能ですが、アイドル状態であっても時間単位で VM の使用量が発生する点に注意してください。インターネットを通してモデルにアクセスする必要がない場合は、ローカルでの予測または IoT センサー戦略がある場合にはマイクロコントローラへのモデルのダウンロードも可能です。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Hosting_options_for_global_fishing_watch_s.max-1000x1000.png
モデルをホストするための 3 つのオプション

詳しく知りたい場合

このプロジェクトに関心がおありで、このソリューションのステップごとの思考プロセスや、ご自分のプロジェクト(またはテスト プロジェクト)でコードを実行するための詳細を詳しくお知りになりたい場合は、無料の Jupyter ノートブック Colabホストされている対話型サンプルをぜひご覧ください。このガイドの役割を果たすノートブックには、サンプルを実行するための手順が記載されています。サンプルには、Folium というオープンソースの Python ライブラリを使用した動的なマップ上での予測の可視化も含まれています。

未経験の方でもお使いいただけます。GitHub 下部のリンク、「open in Colab」をクリックするだけです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/open_colab_in_github_.max-800x800.max-800x800.png

Google Cloud Platform プロジェクトを準備する必要があります。Google Cloud プロジェクトがない場合は、$300 分の無料の Google Cloud クレジットで作成いただけます。必要なのは、お支払い情報の設定と、目的のサンプルをテストした後でのプロジェクトの削除だけです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Screen_Shot_2021-09-29_at_2.53.56_PM_Gnvpynt.max-600x600_zRREVB2.png
Colab ノートブック内のインタラクティブ ノートブックのスクリーンショット

??? この記事が、お客様が素晴らしい気候関連ソリューションを新たに構築するためのきっかけになれば幸いです。

- Cloud デベロッパー アドボケイト Alexandrina Garcia-Verdin

投稿先