エッジデバイス実装

EDGE DEVICE
SERVICE
SERVICE
学習済みのアルゴリズムからターゲットHWに最適な処理アーキテクチャを設計し、エッジデバイスでの高速実行を実現。
お客様が開発されたアルゴリズムをご提供いただくだけで、当社でその内容を読解し、アルゴリズムに適したアーキテクチャを考案します。Caffe・Keras・TensorFlow・PyTorchなど各種のフレームワークに対応します。 これまで数十年にわたって培ってきたデジタル回路設計・組込みソフトウェア開発の経験から、お客様の手を煩わせることなく、最適なソリューションを実現します。INDEX
エッジデバイス実装サービス
エッジ環境におけるFPGAやGPUといったデバイスにアルゴリズムを実装するためには、ターゲットデバイスの特徴やリソースを熟知した上で、アーキテクチャ設計や場合によってはネットワークの軽量化が必要になります。
当社では FPGA をはじめ、AIチップとして注目されているTPU(Google TPU)、VPU(Intel Movidius Myriad X VPU)への実装経験を生かし、デバイス選定から実装までお客様のニーズにお応えします。
当社では FPGA をはじめ、AIチップとして注目されているTPU(Google TPU)、VPU(Intel Movidius Myriad X VPU)への実装経験を生かし、デバイス選定から実装までお客様のニーズにお応えします。
デモ:FPGA(Zynq UltraScale+)でセマンティックセグメンテーションの高速実行
当社ではFPGAにセマンティックセグメンテーションのアルゴリズムを実装し、処理時間40fpsの高速化を達成しました。

- モニターに表示したドライブレコーダーの映像をUSBカメラで取り込む
- Zynq内のARMを介してUSBカメラからの画像に対して、 FPGAでセグメンテーションの推論を行う
- FPGA ⇒ ARMへ推論結果を転送し、入力画像と共にモニターへ出力する
実装したアルゴリズムとターゲットデバイス | アルゴリズム:PixelNet(http://www.cs.cmu.edu/~aayushb/pixelNet/) ターゲットボード:ZCU102(Xilinx Zynq UltraScale+ ZU9EG 搭載) ※当社で、上記アルゴリズムを元に FPGA向けにネットワーク構成を変更し、再学習 |
---|---|
処理時間 | 40fps |
クラス数 | 22クラス(道路、白線、自動車、歩行者など) |
デモ動画
実際にUSBカメラを入力にリアルタイムでセマンティックセグメンテーションを実行している様子を紹介します。

クラス一覧
エッジデバイスでの高速実行に向けた実装のポイント
当社では、お客様のご要望はもちろん、ターゲットとするデバイスやアルゴリズムに合わせて高速実行を実現する最適なアーキテクチャ設計を行います。そのポイントとして、「パイプラインによるスループットの向上」と「各処理層の出力CH方向に並列化」等が挙げられます。
以下では、「パイプラインによるスループットの向上」をご紹介します。
例えば、下図のような Conv(3×3)→ Conv(3×3)→ MaxPooling(2×2)という CNN で考えると、
以下では、「パイプラインによるスループットの向上」をご紹介します。
例えば、下図のような Conv(3×3)→ Conv(3×3)→ MaxPooling(2×2)という CNN で考えると、
- 前段のConv1_1から3行分の特徴量が出力されたら、次段の Conv1_2 の処理を開始する
- MaxPoolingでも同様にConv1_2 から2行分の特徴量が入力されたら処理を開始する

開発実績

姿勢推定
顧客開発のアルゴリズムをZynqへ実装し、エンドユーザー様向けのデモシステムを開発。
汎用物体検出
SDSoC(Xilinx製 高位合成ツール)での実装環境の開発および Zynqへ初期実装。
車載向け領域分割
セグメンテーションを行うアルゴリズムを FPGA、TPU、VPUをターゲットにデプロイ検討。開発フロー
-
STEP01
学習済みアルゴリズム
(お客様ご提供) -
STEP02
デバイス選定 -
STEP03
アーキテクチャ設計 -
STEP04
コード作成・検証 -
STEP05
実機にて動作確認
(処理時間など)
STEP01
学習済みアルゴリズム(お客様ご提供)
アルゴリズム開発は、当社でも設計サービスを行っています。 お客様が抱えている課題・ご要望に応じて、アルゴリズムの検討・設計から対応することも可能です。
STEP02
デバイス選定
コスト、消費電力などお客様のご要望に応じて、最適なデバイスをご提案します。
STEP03
アーキテクチャ設計
デバイスの特徴を理解し、ロジックリソースなどを概算しながら、所望の処理時間となるようアーキテクチャを設計します。場合により、デバイス実装に向けたネットワークの軽量化検討も行います。
例)ボトルネックとなる処理の抽出など
例)ボトルネックとなる処理の抽出など
STEP04
コード作成・検証
検討したアーキテクチャとなるようコードを作成し、作成後はツール上でロジックリソース使用率や処理時間の概算および等価性検証(期待値比較)を実施します。 アーキテクチャの再検討 ⇔ コード修正・検証 のイタレーションを行いながら、ターゲットデバイスへの実装を目指します。
STEP05
実機にて動作確認(処理時間など)
ツールでビルドしたコードを実機に実装し、実機での処理時間や精度を評価します。