前回で「コンピュータビジョンを用いた画像・映像編集技術シリーズ」を終了しましたが、新シリーズ突入する前に中休みとして、今回は次に示す話題に関連した取材に行ってまいりました。その話題とは、先日あったとあるニュースに関連する、「組み込み向けのコンピュータビジョン推進の動向」という話題です。その話題というのがこれ「コンピュータビジョンをビジネスにどう活かすのか – EVAが取り組みを公開」です。
これは、組み込み機器におけるコンピュータビジョン技術の活用の促進をはかる業界団体「Embedded Vision Alliance(EVA)」が、2013年6月に日本企業の参画を促す目的で、説明会を日本で開催したというニュースです。本連載ではComputer Vision技術の応用を幅広く紹介していることもあり、今回はこのEVAのメンバーでもある東京エレクトロン デバイス(TED)に協力してもらって、コンピュータビジョンを組み込み開発で実際に用いる評価ボード上で動いている様子を見せてもらいました。
組み込みにおける画像処理・コンピュータビジョン
コンピュータビジョン技術が、FA応用や医療画像応用などのいわゆる「マシンビジョン」での応用として昔から盛んであることを御存知の方も多いと思います。そういう場面では各社独自の機械に組み込みボードを埋め込んだ形で設置がしやすいことを理由に、組み込み用のOS上で画像処理プログラムを動作させることが多くありました。
最近はiOSやAndroidなどに代表されるスマートフォンやタブレットというプラットフォームが(カメラも組み込まれた形で)普及しているわけですが、これらは、組み込みOSが担当するような機械のリアルタイム制御や、DSPやFPGAを用いた高速計算などに必ずしも向いているわけではありません。またスマートフォンやタブレットはインタフェースの数やバンド幅も限られているので、カメラや他の機器を複数台つなげて制御したい場合には向きません。そうした際には、組み込みボード上で動くOSにおいて、アプリケーションを構築することになります。加えて、産業用の機械では、汎用のPCやスマートフォン・タブレットではオーバースペックであり余剰な機能も多いので、必要な機能だけをそれ相応の価格のボードで実現させたいというのも、組み込みボードを使用する大きな目的と言えます。
OpenCVの処理をハードウェア側に手軽に移行できる環境も提供
先述もしましたが今回は、各種組み込みボードなどの販売を手掛けているTEDの協力の下、2013年5月にリリースされたXilinx製のAll Programmable SoC「Zynq7000シリーズ」を用いた組み込み用プラットフォーム「Zynq-7000 AP SoC」のデモなどに触れてみました。
Zynq-7000 AP SoCは、ソフトウェアによる処理(ARM)と、ハードウェアによる高速処理(FPGA)が1つのボード内で完結している組み込み用のボードです。このボード上で使用されているZynq-7000シリーズ向けには、開発ソフトウェアの1種として高位合成ツール「Vivado HLS」が提供されており、これを用いる事でC/C++/ SystemCをハードウェア部分で動くRTL(レジスタトランスファーレベル)に変換することができます。
加えて、Vivado HLSに付属のビデオライブラリを用いる事で、デスクトップ向けのOpenCVのコード(主にcv::Matの処理)を、ライブラリで用意されているHLS向けの同等の表現のコード(hls::Matなど)に書き換えることで、Zynq-7000上で実行できるという機能が提供されています。この機能により、OpenCVのコーディングができるソフトウェアエンジニアが、hlsの表現にコードを少し書き換えるだけで、OpenCVの処理をハードウェア側に移行して高速に動かすことができるようになります。
今回の取材時は、最初期リリース版であったので、HLSへの変換は、まだcv::Matの基本的な処理と、フィルタ処理などの低レベルの処理しかサポートされていないという話でしたが、基本的な処理であればこの変換により簡単にハードウェア高速化できると思います。詳細は以下のURLのドキュメントが公開されているのでそちらをご覧ください。
この中で、1番目の「VivadoHLSビデオ ライブラリを使用してZynqでOpenCV アプリケーションを高速化」というドキュメントに、実際にどのようにOpenCVのコードをZynq向けに書き換えるかの手順が紹介されています。
後編となる次回は、実際にZynq-7000 AP SoCを用いると、どんなことが手軽にできるようになるのかを紹介したいと思います。