Drass、海洋環境におけるリアルタイムのオブジェクト検出のためのディープラーニング システムを開発

「データの注釈付けからディープラーニング モデルの選択、学習、テスト、微調整に至るまで、MATLAB には当社が必要とするすべてのツールが用意されていました。また、GPU の使用経験は限られていましたが、GPU Coder を使用することで NVIDIA GPU にすばやく展開できました。」

課題

船舶オペレーターの海洋環境監視時にオブジェクト、障害物、および他船舶の検知をサポート

ソリューション

船舶に展開してリアルタイムで実行するオブジェクト検出用ディープラーニング モデルの作成

結果

  • データラベル付けの自動化
  • 開発期間の短縮
  • 柔軟性および再現性の高いフレームワークの確立
機器を使用したオブジェクト検出テストを行いながら、港湾部を監視する Drass チームの 2 人のメンバー。

光エレクトロニクス システムのプロトタイプを使用したオブジェクト検出テストの初日。

安全な航路を確保するために、船舶オペレーターは航行中にオブジェクト、障害物、および他船舶を追跡する必要があります。しかし、海上におけるオブジェクト検出は、波の動きによって背景が常に変化することや、外洋で基準点が少ないことにより、困難を伴います。

こうした課題に対処するため、海事技術企業である Drass は、海上でリアルタイムにオブジェクトを検出するディープラーニング モデルを開発しました。これは、チームにとって初のディープラーニング アプリケーションであったにもかかわらず、MATLAB® を使用することで、納期よりも 2 か月早く YOLOv2 モデルの学習と検証を行い、その後、そのモデルを船舶で実行する C++ アプリケーションと統合できました。

「プロトタイピングから統合まで、MATLAB はプロジェクトのすべての手順を簡単に実行できるツールを備えていました」と、Drass のコンピューター ビジョン エンジニアである Valerio Imbriolo 氏は語っています。「7 か月でオブジェクト検出アプリケーションを完成させ、10 か月でテストを行う準備まですすめることができました。残りの 2 か月では追加機能を開発しました。」

課題

海洋環境用の事前学習済みオブジェクト検出モデルは存在しないため、Drass チームは独自のディープラーニング ネットワークをゼロから開発し、学習を行う必要がありました。従来のオブジェクト検出システムでは、単一の視覚的入力ソースを使用していました。一方、Drass チームのディープラーニング モデルでは、ネットワーク アーキテクチャおよびデータの前処理パイプラインに追加の調整が必要となる、昼光カメラやサーマルカメラなどの複数のソースからの入力を統合する必要がありました。

Drass では、複数の物体に対するオブジェクト検出モデルをテストする必要があったため、チームは独自のデータセットを作成し、前処理を行い、ラベル付けするという手間も時間もかかる作業をこなさなければなりませんでした。

チームでは、船舶で使用される C++ で書かれたメインのオブジェクト検出アプリケーションに統合できるように、独自のモデルを開発する必要がありました。このような特殊な性質を持つアプリケーションの場合、最適なモデル コンフィギュレーションを導き出すには、膨大な計算量を要するテストと調整が必要になります。

12 か月以内にすべてのタスクを完了させる必要があり、初のディープラーニング プロジェクトであることを考慮すると、厳しい納期でした。

ソリューション

Drass チームは、Deep Learning Toolbox™ を使用してニューラル ネットワークのプロトタイプの作成および学習を行い、GPU Coder™ を使用して C++ アプリケーションに統合しました。

チームでは、海で撮影したラベル付けされていない生の映像 5,000 フレームをデータセットとして用意することから始めました。Image Processing Toolbox™ を使用し、画像のノイズやレンズ歪みなどを除去する前処理を行いました。Wavelet Toolbox™ は、昼光カメラとサーマルカメラのデータを単一データソースに統合する上で役立ちました。

チームは、ビデオラベラーアプリを使用して、データセットのごく一部にラベル付けしました。Deep Learning Toolbox で YOLOv2 オブジェクト検出モデルを作成し、ラベル付きデータのサブセットで学習を行いました。一部学習済みのモデルは、ビデオラベラーで残りのデータセットに注釈付けを行うプロセスの自動化に役立ちました。その後、学習例をコピーし、ノイズを加えたり、画像を反転させたり、色合いを変えたりして、データセットを拡張しました。

ターゲット アプリケーション用のネットワークを構成するプロセスを高速化するため、Drass チームは Parallel Computing Toolbox™ を使用して、大容量の CPU クラスターおよび GPU クラスター上で学習と最適化のプロセスを複数のインスタンスで実行しました。

GPU Coder で、このプロトタイプモデルを、船舶で使用されている NVIDIA® GPU 用の CUDA® コードに変換しました。C++ で書かれたコードは、プログラミングチームに引き継がれ、船上アプリケーションに統合されました。

結果

  • データラベル付けの自動化。Imbriolo 氏は次のように語っています。「手動でラベル付けを行うと、1 フレームあたり 3 分、データセット全体では 249 時間かかってしまいます。ビデオラベラーの自動ラベル付けプロセスを使用することで、1 フレームあたり 0.3 秒まで短縮できました。42 時間で 5,000 フレームのラベル付けと検証を行うことができました。」
  • 開発期間の短縮。Imbriolo 氏は次のように語っています。「チームは 10 か月でプロジェクトを終え、納期までの残り 2 か月で顧客のための追加機能を実装しました。MATLAB と GPU Coder がなければ、ゼロからモデルを開発してテストを行うのに、C++ エンジニアのチーム全員が週 40 時間働いて 18 か月かかったと思います。」
  • 柔軟性および再現性の高いフレームワークの確立。Imbriolo 氏は次のように語っています。「将来的には、MATLAB フレームワークを使用して、最小限の労力でモデルの変更、更新、再学習、およびアプリケーションへの再統合を行うことができるようになるでしょう。たとえば、YOLOv2 の代わりに YOLOv3 モデルを導入するよう依頼されたら、3 日ほどで結果を提示できると思います。」