最新エッジAI技術のトレンド
エッジAIとは、クラウドではなく現場で使用される「エッジデバイス」上で「AIモデル」を動かすことです。近年、エッジAIが注目され、そのユースケースが増えています。当社でも、お客様からのエッジAIのコンサルティング・実装依頼のご相談が増えています。
当社でのエッジAI開発・実装の実務経験をもとに、本記事を含む2部構成で、エッジAI技術のトレンドと実装時に考慮すべきポイントをお伝えいたします。
・(1)エッジAI技術のトレンド(本記事)
・(2)エッジAIの実装時に考慮すべき5つのポイント
1. エッジAI技術のトレンド
エッジデバイスでAIを実行するケースとしては、例えば、自動車の自動運転、ドローンの自動航行、建設機械の自動操縦、等の自動運転システムや、監視カメラによる異常検知、カメラによる計器の自動読み取り、といった画像解析システムが挙げられます。
また、消費者向けエッジデバイスとして、AIのスマホアプリ、スマートスピーカー、スマートウォッチへの実装、さらにWEBブラウザ上でのディープラーニングモデルの実行、といった事例も見受けられるようになってきました。
本記事では、エッジAIの実装において利用される技術やハードウェアをご紹介し、その中でハードウェアのトレンドや性能について解説します。また、活用事例についても紹介します。
2. エッジデバイスにAIモデルを実装するための技術・ハードウェア
エッジAIのニーズ向上に伴い、エッジデバイスにAIモデルを実装するための様々な技術やハードウェアが開発されています。ここでは大きく分けて3つを挙げます。
1つ目はモデル軽量化技術です。これは、エッジデバイスへの搭載前に要求仕様や制約を満たすように、AIモデルを軽量化する技術です。
2つ目はコンパイラです。コンパイラは、軽量化したAIモデルをエッジデバイス上で最適に動作させるために必要になります。
3つ目は、量子化や枝刈りなどの特殊な軽量化を行ったAIモデルをサポートするような、様々なハードウェアです。ハードウェアは非常に重要なため、より詳細に解説します。
エッジAIを実現するハードウェアとして、近年、GPU、AIアクセラレータ等を用いることが多くなってきています。
GPU
GPUには、いわゆるサーバー向け(ワークステーション)と、組み込み向けのものの2種類があります。エッジAIでは組み込み向けGPUのことを指し、サーバー向けのものと比較して性能は若干低くなりますが、消費電力がより小さいメリットがあります。
組み込み向けGPUとして、NVIDIA社のJetsonシリーズがあり、性能によっていくつかのグレードに分類されています(※1)。Nanoは最も廉価版のスペックで、一方、TX2、AGX Xavierなどは性能が高くサーバーとほぼ同等のレベルになっています。主な用途としては、Nanoが監視カメラ等への組み込み、AGX Xavierなどは自動運転等のより複雑なアプリケーションが想定されています。
※1: https://www.nvidia.com/ja-jp/autonomous-machines/embedded-systems/
AIアクセラレータ
AIアプリケーション高速化のためのアクセラレータには様々な種類がありますが、本記事では3種類を紹介します。
1つ目は、Intel社のNeural Compute Stick 2であり、これには同社のMyriadチップが搭載されています(※2)。
2つ目は、Google社のCoral(Edge TPU)アクセラレータ(※3)です。
そして3つ目はFPGA(Field Programmable Gate Array)で、Xilinx社のものが多く使われています。
Neural Compute Stick 2やCoralなどは極めて小型で、それぞれ価格も比較的安価に設定されています。
※2: https://ark.intel.com/content/www/jp/ja/ark/products/140109/intel-neural-compute-stick-2.html
※3: https://coral.ai/products/
その他AIチップ・エッジAIデバイス
特定産業向けに特化したハードウェアも多岐にわたり展開されています。
例えば、自動車機能安全規格であるISO 26262 ASIL B/Dに準拠したルネサスエレクトロニクス社のR-Carシリーズ、Hailo社のAIプロセッサ、Ambarella社のエッジAI映像処理SoCと関連プラットフォーム、Blaize社のエッジAI向けGSP(グラフ・ストリーミング・プロセッサ)などが挙げられます。
いずれも、エッジデバイスでのパフォーマンス、システム効率、消費電力におけるメリットが注目されています。また、スマートフォンやタブレットなどのモバイルデバイスでは、ニューラルネットワーク処理用のプロセッサ(SoC)が搭載されてきており、デバイス単価、デバイスサイズ、消費電力といった点が重視されています。
3. エッジAIを実現するハードウェアの性能
GPUはCPUの約20倍以上の速度で推論を実施
2017年のNVIDIA社開発者ブログに、GPUとCPUのイメージ処理数に関する比較データが掲載されています。バッチサイズによって異なりますが、1秒あたりのイメージ処理数において、同社GPU(Tesla P100)を用いた場合は、CPUのみの場合と比較して最大20倍以上の速度で推論が可能という結果が示されました(※4)。
また、P100と同様のPascalアーキテクチャーベースのGPUを搭載するJetson TX2は、1秒あたりのイメージ処理数において、サーバークラスのCPUと同程度の推論能力を極めて低電力で達成することも示されています(※5)。
※4: https://developer.nvidia.com/blog/deploying-deep-learning-nvidia-tensorrt/
※5: https://developer.nvidia.com/blog/jetson-tx2-delivers-twice-intelligence-edge/
AIアクセラレータによってCPUの約30倍以上の速度で推論が可能に
また、Coralアクセラレータを活用した事例として、組み込みCPU(Arm Cortex)と、Coralアクセラレータのモデル推論速度の比較データも示されています(※6)。AIモデルによる違いはありますが、アクセラレータを用いた場合は、CPUを用いた場合と比較して最大30倍以上の速度で推論が可能となり、推論時間が大幅に短縮されることが示されています。
※6: https://solution.murata.com/ja-jp/technology/coral
実際に弊社で実施したデモにおいて、Raspberry PiにCoralを取付けて人間の骨格推定(Pose Estimation)を行った場合、Raspberry Piに搭載されているCPU(Arm Cortex)によるフレームレートは、0.1~0.2 FPS(5~6秒位に約1枚の画像処理に該当)と低い値でした。一方、Coralアクセラレータを用いた場合は、フレームレートが約10 FPS以上となり、組み込み系においてAIアクセラレータを用いることで処理速度が大幅に向上することが分かりました。
各ハードウェアの演算性能
ここで、各GPU、AIアクセラレータの性能を簡単にご紹介します。以下の図にそれぞれのハードウェアの演算性能を示しています。コンピュータの処理性能を表す基準として、FLOPSやTOPSがよく用いられます。FLOPSはFP32やFP16といった浮動小数点の積和演算を1秒間に何回行うかを表し、TOPSは演算器の理想の型での積和演算を1秒間に何回行うかを表します。
性能データ出典:https://www.nvidia.com/ja-jp/autonomous-machines/embedded-systems/
https://ark.intel.com/content/www/jp/ja/ark/products/140109/intel-neural-compute-stick-2.html
https://coral.ai/products/
また、int8演算に対応したハードウェアも多く出ています。一般的に、ニューラルネットワークの推論はFP32/FP16で実施される場合が多いですが、量子化を適切に行うことによって、int8で推論を行っても精度的に要件を満たすレベルとして問題のないことが知られています。
実際に、Coralではint8で演算が実施され、性能は4TOPSとされています。4TOPSの演算性能を持つCoralは、物体検出タスクにおいて1秒間に70枚の速度(70 FPS)で画像を処理することが可能となります(MobileNet V2 SSD on Coral Dev Board、※7)。複数のアクセラレータを用いることで、ホストCPUへの負荷を上げずに、複数タスクをパラレルに実行することも可能となります。
※7: https://coral.ai/docs/edgetpu/benchmarks/
4. 幅広い産業分野におけるエッジAIの活用事例
ここで、エッジAIの活用事例をいくつかご紹介します。(活用事例1~3は当社の事例ではありません。)
活用事例1:くら寿司の皿カウントシステム
Raspberry Pi + Coralを用いた画像認識技術を活用し、顧客が選択した皿の種類や選択のタイミング等のデータに基づいて、顧客ニーズの把握に活用するシステムが開発されています。従来のIR-RFID(赤外線と無線ICタグ)システムによる管理に比べ、信頼性の向上が報告されています(※8)。
※8: https://coral.ai/news/kura-sushi
活用事例2:Farmwave社の農作物の収穫ロス削減
カメラ付き農作物収穫機にRaspberry Pi とCoralが搭載されたデバイスを取付け、農作物の収穫状態をリアルタイムにモニタリングするシステムが用いられています。収穫量が少ない場合は、機械のパラメータ(収穫用ローター・ふるい開口部の角度や速度など)をリアルタイムに調整して、収穫量を最大化することができます(※9)。
※9: https://coral.ai/news/farmwave
活用事例3:コマツ(小松製作所)移動式クレーンの周辺監視
NVIDIA社のGPU(Jetson TX2)を用いて、2.9t移動式クレーンの全周に取付けたカメラ画像を処理し、リアルタイムで周囲の人物を検知して警告を発するシステムが製作されています(※10)。本システムにより、現場作業における安全性の向上が期待されます。
※10: https://car.watch.impress.co.jp/docs/news/1143321.html
活用事例4:監視カメラを用いた人流解析(アラヤの事例)
Raspberry PiとCoralを用いて、監視カメラの映像からリアルタイムで人を追跡し、二次元でマッピングするシステムを開発しています。高解像度のFull HD画像に対する処理においてEdge TPUを使用し、約2 FPSでの推論を実現しています。人が通常歩行する速度に対してほぼ十分な性能を発揮し、入退店・交通量カウント、混雑・利用状況の監視、人物の属性分析、行動検知といったシーンへの活用が可能です。
※より詳細な情報はこちら:複数台カメラと画像認識AIを活用した人流解析ソリューション
活用事例5:蒸留を用いた軽量モデルの学習
お客様の工場の異常検知AIモデルに対し、深層学習モデルの汎化性能の向上と知識転移の技術として、手法の一つである蒸留によるモデル圧縮を検討しました。エッジ化の実現に向けて精度が良い小型な軽量モデルが必要な場合などに効果的なアプローチであると考えて研究開発を進め、エッジAI実装にみられる以下の問題を解決することを目的に蒸留※によるモデル小型化行いました。
【エッジAI実装の問題】
モデル圧縮などのエッジAI関連技術は、圧縮により必ずしも高速化されない、または圧縮により精度が大幅に下がる場合があり、適切な方法を見極めることが必要になります。エッジ化を推進するためにより軽量で精度の優れたモデルの開発を目指しました。
※蒸留とは、一度学習したモデルの知識(予測結果)を別の小さいモデルに継承する手法。これにより、大きいモデルに匹敵する精度を持つ小さいモデルを作ることが期待できる。教師モデル(大きいモデル)の持つ知識を生徒モデル(小さいモデル、軽量であっても良い)に転移させ、転移先モデルの精度上昇、学習高速化を行うことを指す。
異常検知のモデルに、製品部品の画像を正常ラベルと異常ラベルに分類するモデルがあります。
そのモデルに対して、蒸留を用いて生徒モデルの精度を教師モデルの精度に近づけることと、プログラムを作成して蒸留をする、という一連の流れを先方がノウハウとして得ることを目的に軽量モデルにタスクを学習をさせ、以下の実現を目指しました。
・実装可能なモデル数を増やし、使用デバイス数を低減
・異常検知を行うための処理速度向上
教師モデルの推論結果だけでなく、モデル中間層の出力分布も学習に使用することで、教師モデルに近い性能の小型な生徒モデルを実現しました。
蒸留なしでの学習に対し、蒸留を用いた軽量モデルへの学習の方が誤検出率を約40%低下させることができました。
近年のエッジ化の普及に伴い、小型モデルで精度を出したいという需要はますます高まっています。
蒸留という技術はその需要にフィットしており、蒸留技術の知見や実装経験がないというお客様の開発をご支援いたします。
活用事例6:量子化/TensorRT化によるモデルの高速化
お客様の小売向けアプリケーションで利用されている商品検出モデルは大量の画像処理を行うために処理時間が問題となっていました。
この処理時間を高速化をするために量子化を行いました。
結果として精度劣化をすることなく処理速度の向上を実現することができ、モデルエッジ化で高い精度を維持しつつ高速化をされたい場合に有用です。
エッジAIでは端末側に搭載したAIが高速に処理を行うことができなければ実用化ができないケースもあります。
量子化(Int8化)/FP16化とTensorRT化を並行して実施することで、精度はほぼ劣化なく、処理速度の向上を実現しました。
顧客モデルに対して量子化(Int8化)/FP16化とTensorRT化を並行して実施することで、精度はほぼ劣化なく、処理速度の向上を実現しました。
・処理速度
TensorRT化(Darknet→TensorRTに変換して、速度と精度の評価を実施し、最大2倍近くの推論処理速度向上を実現しました。
・精度
精度はほぼ劣化なく、処理速度は向上することができました。
検証としては品切れチェックを実施し、FP16化での精度結果は従来の精度と変わらない結果を実現しました。
モデルの高速化のために以下の最適化を実施しました。
・量子化(Int8化)/FP16化
・TensorRT化
量子化とは、重みなどのパラメタをより小さいビットで表現することで、モデルの軽量化を図る手法です。
信号の大きさを離散的な値で近似的に表示します。2bitで量子化する場合、min/maxを設定しその範囲を4分割、量子化前の値を量子化後の近い値に割り当てます。
※量子化とは信号の大きさを離散的な値で近似的に表すことである。例えば2bitで量子化する場合、図のようにmin, maxを設定して範囲を4分割し、量子化前の値を量子化後の近い値に割り当てる。必ずしも、min, maxは0で対称である必要はない。範囲を均等に分割しない場合もある。量子化による精度低下を補う手法に、QAT(量子化時の再学習)がある。
TensorRTでの量子化では、min, maxが0で対称、かつ、min, maxの範囲を均等に分割する必要がある。
※TensorRTとは、NVIDIA製の高性能ディープラーニング推論最適化・実行ライブラリ。TensorRTを用いることでネットワークが最適化され、低レイテンシ・高スループットの推論を実現することが可能。
【TensorRTの最適化】
・ネットワーク構造ファイル(.cfg)をパースしてonnxモデルを構成するプログラムを使用
Yolo layer※1はonnxにないためYolo layerを除いてonnxモデルに変換
・TensorRTライブラリを用いてonnxモデルから変換、
cudaで実装されたYolo layerをcustom layerとして追加
推論時のNMS処理は、Darknetで実装されているNMSを使用
エッジAI実装では、端末側で高い精度だけでなく、実用化するためには短時間で処理をする必要があります。この処理時間を高速化をするために量子化を行いました。業務効率化でエッジAIを用いた解決方法を検討される際に、高い精度を維持しつつ高速処理をされたいという幅広い業界のお客様の問題解決に活用することが可能です。
■続きはこちら
・(1)エッジAI技術のトレンド(本記事)
・(2)エッジAIの実装時に考慮すべき5つのポイント