NVIDIA Jetson画像解析アプリの実装とデプロイメント 実践向けのQ&Aが公開中

このエントリーをはてなブックマークに追加

半導体からAI(人工知能)に至るまで、幅広く手掛ける株式会社マクニカ。そのマクニカでは、オンラインセミナー「物体検出を応用した忘れ物検知システムを作ってみよう ~アルゴリズム選定編、Jetson実装編、デプロイメント編~」を開催した。

マクニカではNVIDIA社の「Jetson」を取り扱っており、このセミナーはJetsonを使い「忘れ物検知システム」を完成させるまでのつまずきやすいポイントやエンジニア本人が苦労した内容も語られている。この忘れ物検知システムは、物体・人を検知できるYOLOv4と距離計算ができるOpenCVを組み合わせ、MQTTで情報を転送し、Node-LED上で忘れ物の検知結果を表示させる、というアプリケーションだ。

このセミナーの模様は、オンデマンド動画として配信されているため、いまからでも視聴可能だ。動画を公開するマクニカ自身も「“とにかく泥臭い”現場エンジニア目線のセミナーを目指して」としており、“現場の担当者”が作るAI画像解析ということに重きを置いたセミナーとなっている。

Jetsonの基本的な動作から、DockerやCUDAを用いた開発に着手するなかでの困りごと

先日お伝えしたとおり、マクニカでは上記のセミナーを開催し、このセミナー中に寄せられた質問に対して、Q&A集を公開している。セミナー中には合計で71もの質問があったそうで、マクニカのサイト上ではそのなかから厳選した一部の質問についてQ&Aとしてまとめている。

たいへん興味深い内容だったため、Ledge.aiでも一部内容を転載させていただき、公開する。これだけ質問が寄せられたセミナーは、3回の講座となっており、アルゴリズム選定編、Jetson実装編、デプロイメント編の構成にし、開発フロー全体を習得できる内容だ。

Q&A集だけでなく、セミナー本編も合わせてチェックしてみてほしい。

Q.奥行方向の距離を測るための方法は具体的にあるのでしょうか?どのような方法でどの程度の精度がだせるのでしょうか?

A.ステレオカメラを用いてステレオの画像から奥行きを推定したり、ミリ波レーダーなどの距離を測定できるセンサーの情報とカメラ画像を組み合わせたりすることは可能ではないかと考えます。

ただし、ご使用になるカメラやセンサー、測定する物体までの距離などによって精度なども変わりますので、PoCを通じた検証などが必要です。

Q.TensorRTに変換した場合と、しない場合では、処理速度はどのぐらい違うのでしょうか?

A.今回の忘れ物検知システムでは、TensorRT形式に変換したもののみを使用しており、恐れ入りますが変換しない場合の動作確認はおこなっておりませんでした。

参考情報としましては、このリンク先の表に単純なPyTorchとTensorRTの比較がありますのでご参照いただけますでしょうか。

Q.GPU等で学習したモデルを利用してJetsonで推論するかと思いますが、x86とARMの違いで動作しないといった難しさはありますか?

A.特に問題ないと考えています。TensorRTのAPIのところでx86とJetsonで違いがないためです。

ただし、パフォーマンス不足などの要因で動作しないケースも考えられますので、動作確認を十分に実施して頂く必要があると考えます。

Nanoなどのメモリーが少ない環境でも使用できますか?Dockerによってメモリーが使用されてしまいモデルを動かせなくなることはないでしょうか。

A.Jetson Nanoでも動作します。Jetson Nanoを推奨プラットフォームとするJetson AI基礎コース Section 1 – NVIDIA Deep Learning Institute’s Getting Started with AI on Jetson Nano course
もDockerを利用して、教材の環境をセットアップします。ぜひお試しください。

公開されている多数のイメージの中から、自分がやりたいことに適したイメージを見つける方法・コツはありますか?

A.まずは、NVIDIA NGCのカタログからお探しください。Jetson向けのDockerイメージは、キーワード「L4T」で検索すると見つかります。

データベース、ウェブサーバー、各種ミドルウェアは、Docker Hubで多数公開されています。ダウンロード数やスター数の多いものが人気の高いものです。人気の高いものが、インターネット上に使い方の情報が多く、使いやすいと思います。

アルゴリズム選定、Jetson実装、デプロイメントまでを網羅

3日間の講座では、アルゴリズム選定編、Jetson実装編、デプロイメント編の構成にし、開発フロー全体を習得できる内容になっている。

これまでマクニカでは開発の一部分を開設する記事やセミナーを実施してきたものの、「システム開発の全体像が知りたい」といった声も寄せられたため、今回の形式でのセミナーを開催したそうだ。そこでマクニカでは、エンジニアチームが結集し、エッジコンピュータ開発における導入から実装、デプロイメントまで全体を習得できる構成を実現したという。

各日の内容は以下だ。それぞれ1時間程度の内容となっている。各ポイントはマクニカのサイトより転載している。

Day1:アルゴリズム選定編
●IVAに向けたNVIDIA最新プラットフォーム
●論文から学ぶ 物体検出を応用した忘れ物検知
・忘れ物検知の仕組みとは?
・忘れ物検知でAIが重要な理由とは?
・論文から紐解く3つの事例
●NVIDIA JetsonがAI開発に必要とされる理由
<ポイント>
物体検知YOLOに関する情報はインターネット上でも溢れていますが、論文からどう学びどう選定するのか。詳しく解説するのはマクニカ AI Research & Innovation HubのAldrinです。これまで監視カメラで手動管理していた忘れ物検知を完全自動化するには、誤検知を減らすことがカギとなる。背景引き算法などのこれまでのアプローチにAIを導入しその他コンピュータビジョン技術(YOLO+OpenCV)を活用する例をご紹介しました。

Day2:Jetson実装編
●Day1のおさらい
●OSS開発におけるシステム、アーキテクト紹介
●Jetson Xavier NXへの実装
・選定したアルゴリズムの動作確認
・エッジコンピューティングJetson Xavier NXへのポーティング作業
・実装の際に苦労した点やコーディングの勘所など
●動作結果の表示
<ポイント>
本セミナーシリーズの核とも言える、システム開発からJetson Xavier NXでの動作確認までを解説するのは、実際にシステム開発にチャレンジしたエンジニアです。冒頭に完成形の忘れ物検知システムのデモンストレーションをして、鞄と携帯電話を忘れたときのシチュエーションで検知できている様子をご覧いただきました。「Day2で習得できることは、
・忘れ物検知システムの Jetson 実装方法
・OSS (忘れ物検知)開発に必要な環境情報
・MQTT と Node RED を用いたデータ処理方法
です!」と熱いプレゼンテーションが始まり、277名もの参加者が最後まで聴講してくださいました。

Day3:デプロイメント編
●Day2のおさらい・アプリケーション・デプロイメントの課題
●Dockerでコンテナ化
●アプリケーション
●イメージの作成
●複数のサービスから構成されるアプリケーションのデプロイメント
<ポイント>
開発したアプリケーションをインストールする大変さを冒頭に語るのは、ベテランエンジニアの古瀬です。オープンソース・ライブラリを利用するアプリケーションの場合、非常に多くのライブラリとの依存関係を考慮する必要があり、手作業で行うとミスが発生しやすいという課題があります。そこでDockerでコンテナ化をして、複雑なインストール作業やモデル変換なども自動化できるように、とても詳細な手順に落とし込み順に説明をしました。