はじめに
エンドポイントAIに関して、
「コンセプトは把握できたが、検討するにあたってどれくらい工数が必要なのか?」
といった方向けに、本記事では下記の2点に関して説明をしていきます。
1.小型FPGA上でAI推論を可能にするための開発フロー
2.簡単に評価開始できる方法
エンドポイントAIのコンセプトや事例に関しては、過去の記事で紹介をしていますので、先にこちらをご覧ください。
1.小型FPGA上でAI推論を可能にするための開発フロー
まず、0からFPGA上にAI処理を組み込む場合、下記のようなフローを踏む必要があります。

下記より、それぞれのフローに関して説明していきます。
① ニューラルネットワークモデルの開発
クラウドAI/エッジAI/エンドポイントAI全てに共通することですが、ディープラーニングの仕組みを使うAI処理をおこなうためには、ニューラルネットワークモデルが必要となります。
このニューラルネットワークモデルは、ディープラーニングフレームワークと呼ばれる、AI開発をおこなうためのソフトウェアライブラリーを使って、定義・生成します。
これに対して大量の学習用データセットを利用してトレーニング(学習処理)を行うことで精度を向上させることができる仕組みになっています。

エンドポイントAIの一例であるLattice FPGAの場合も、他のAI開発と同様に、ディープラーニングフレームワーク上でニューラルネットワークモデルを生成しています。
② モデルデータをFPGAが読み取れる形式に変換
生成したニューラルネットワークモデルをFPGA上に実装します。
Lattice社のFPGAを使用する場合、Lattice社が提供している専用のコンパイラーツールを使用して、ニューラルネットワークモデルデータをバイナリーデータへ変換します。
これをハードウェア上のRAM領域等へ格納しておき、FPGAがデータを読み取れる状態にします。

③ IPコア(推論エンジン)をFPGA上へ実装
実際に推論動作をおこなうためには、FPGA上で動作する推論エンジンが必要です。
Latticeの場合、推論エンジンとしてCNN Accelerator IPコアというものが提供されています。
これを、設計ツールにて実装することでFPGA上でIPコアが動作し、ニューラルネットワークモデルを変換して生成したバイナリーデータを参照できるようになります。

※Lattice FPGA上でAI推論動作を行う場合、CPUコアによる制御は不要で、全てハードウェア処理でAI推論動作をおこなっています。
CPUによるソフト処理は柔軟性には優れますが、ある程度処理時間が必要で、それをカバーするためにはより高性能なコアを使用する必要が出てきます。
一方、ハードウェア処理の場合、使用できるモデルに制限が出てきますが、処理時間は似たような規模のCPUに比べると速くなります。
④ IPコア周辺のFPGA回路設計
推論動作をおこなうためには、IPコアへの推論用データの入力とIPコアから出力された推論結果を、後段回路やシステムを考慮して適切な形に前処理・後処理することが必要です。これら前処理と後処理にはFPGAハードウェア設計が必要となります。
下記はCMOSセンサーで取得した画像の中に人が検出されればLEDが点灯される例を示しています。

具体的には、CMOSセンサーからの入力をダウンスケーリングしてIPコアへ入力する前処理と、IPコアから出力される推論結果を判定してLED ON/OFFを制御する後処理が必要になります。このような回路をFPGA内部に作成する必要があります。
2.簡単にエンドポイントAIの評価を始める方法とは?
小型FPGA上にAI処理を0から組み込むためには、以上のような開発フローを辿る必要があります。
「ニューラルネットワークモデル開発もFPGA設計も必要で大変そう…」
「うちにはそんな開発リソースはない…」
と思われた方も多いのではないでしょうか。
小型FPGAにAI処理を組み込むためには、ニューラルネットワークモデル開発から、FPGA設計までが必要になりますが、いきなりすべての開発リソースを注げられるケースはごく稀です。
「まずは自社アプリケーションで求める性能が出そうか目星をつけてから本格開発するか判断したい」というのが本音だと思います。
そのために「実装したいニューラルネットワークモデルをLattice FPGA上で動作させた場合にどれくらいのパフォーマンスが出るのか?」について早めに把握する必要があります。
これに関して、下記のようにフローを短縮して、最低限の工数で検討開始することが可能です。

開発支援ツール"smAILE Express"とLattice FPGA評価ボードを用意する
マクニカではLattice向けAI開発支援ツールである「smAILE Express」というものを用意しています。
Windows PCにこちらをインストールし、評価ボードとUSBケーブルで接続することで、簡単にニューラルネットワークモデルの評価環境を構築することが可能です。

FPGA内をブロック図にすると次のようになります。
IPコアやニューラルネットワークモデルデータからツールからFPGAへ展開されます。
また、IPコアの前後で必要な前処理と後処理は、ツール内で実施させることができます。
これにより、煩雑なFPGA設計をすることなく、評価を開始することができます。

任意の画像に対する推論結果を確認する
smAILE Expressを使用して、推論結果のパフォーマンスを確認します。
下記は、実際に手書きの数字認識を実施した際のツールGUIです。
推論に使用したデータに対して、結果が定量的に示されており、具体的な精度を確認することが可能です。
また、実際に推論に要した時間も確認することができ、エンドポイントでのAIパフォーマンスを評価することができます。

この評価をsmAILE Expressで行うために必要なのは下記の3種類のファイルのみです。

① Latticeコンパイラーツールが出力したモデルデータ
これは、Latticeが提供しているリファレンスデザインをそのまま使用してもよいですし、既にお持ちのニューラルネットワークがあればコンパイルしてバイナリーデータに変換することで使用可能です。
② 推論に使用するイメージデータ
任意のイメージデータを選択して、推論対象にすることが可能です。
また、PCに接続されたUSBカメラなどを用いて、特定の環境下で取得した画像などを推論に使用することも可能です。
③ 後処理用ファイル(オプション)
推論結果をツール上で表示させる形式に応じて、後処理用のファイルを使用することができます。
上図では、分類項目が記載された*.txtファイルのイメージで記載していますが、Pythonコードを使用して自由に後処理をさせることも可能です。
実際にエンドポイントAIの評価を始めてみませんか?
smAILE Expressには、Latticeが提供している人数カウントのリファレンスデザインをベースにしたサンプルプロジェクトや、数値文字認識のサンプルプロジェクトなど、ツールの使い方を理解するためのExampleプロジェクトが多数付属しています。
これらを有効活用し、独自のニューラルネットワークモデルの実装を加速することができます。
AI開発支援ツールsmAILE Expressに関しては、現在無償でお貸出し中です。
詳細はメールでの案内とさせていただきますので、ご興味のある方は下記よりお問い合わせください。
smAILE Expressや評価ボードによる検討開始から、Latticeリファレンスデザインの使用方法、お客様の開発課題に合わせた3rdベンダー様ご紹介やその他検討方法ご提案も含めて弊社FAEからサポートいたします。
smAILE Expressに関するさらに詳しい情報に関しては、下記からマニュアルをダウンロードいただけますのでぜひご確認ください。
また、smAILE Expressの実際の操作感に関しては下記動画を参照ください。