この記事は、インテル® デベロッパー・ゾーンに公開されている「Intel® Computer Vision SDK – A Brief Overview」(https://software.intel.com/en-us/blogs/2017/08/31/cv-sdk-a-brief-overview) の日本語参考訳です。
インテル® コンピューター・ビジョン SDK Beta がリリースされました。この SDK は、コンピューター・ビジョン・アプリケーションを正確かつ高速に作成できるように開発者を支援します。私は Tudor Panu から、インテル® コンピューター・ビジョン SDK とは何か聞き、いくつかの機能のデモを見せてもらい、開発者がコンピューター・ビジョン・プロジェクトを活用する方法を聞く機会がありました。その様子は https://www.facebook.com/IntelDeveloperZone/videos/10154895430807338/ (英語) からご覧いただけます。
このブログでは、インテル® コンピューター・ビジョン SDK について私が学んだことと、コンピューター・ビジョン・アプリケーションの開発に役立ついくつかのリソースを皆さんと共有したいと思います。
インテル® コンピューター・ビジョン SDK とは?
インテル® コンピューター・ビジョン SDK は、ビデオ処理、コンピューター・ビジョン、マシンラーニング、およびパイプラインの最適化を 1 つのパッケージにまとめた役立つツール群です。特に、さまざまなプロセッサーから成るヘテロジニアス・システムの能力を引き出すことを目的としています。ヘテロジニアス・システムの一例として、コンピューター・ビジョン・パイプラインでインテル® Core™ i7-6700 プロセッサー、インテル® Iris® グラフィックス、FPGA をすべて利用するシステムが挙げられます。
インテル® コンピューター・ビジョン SDK には、次のツールが含まれます: OpenCV、OpenVX*、畳み込みニューラル・ネットワーク IP カーネル、ビジョン・アルゴリズム・デザイナー、インテル® ディープラーニング・デプロイメント・ツール・キット、インテル® Media SDK。インテル® コンピューター・ビジョン SDK は、これらのツールの一部またはすべてを 1 つのパイプラインに簡単に統合して、統一 API からアクセスできるようにします。
ツールボックス
それぞれのツールについて簡単に説明します。
OpenCV: 標準のオープンソース・コンピューター・ビジョン・ライブラリー。イメージフィルター、エッジ検出、オブジェクト検出などの高水準のコンピューター・ビジョン関数を提供します。OpenCV はおそらく、作成するコンピューター・ビジョン・データ・パイプラインのベースとなるでしょう。
OpenVX*: コンピューター・ビジョン・アプリケーションの製品レベルの展開と最適化向けの新しい標準 API。OpenVX* は、2 つの方法でアプリケーションを最適化できます。1 つ目の方法は、並列に実行可能なタスクを特定し、それを異なるプロセッサーに分散して、結果を再結合します。2 つ目の方法は、それぞれのタスクに最適なプロセッサーを特定し (エンコード/デコードは CPU、レンダリングは GPU、カスタム・アルゴリズムは FPGA)、ヘテロジニアス・システムの能力を引き出します。
畳み込みニューラル・ネットワーク IP カーネル: オブジェクト検出に利用可能な訓練済みニューラル・ネットワーク・モデルを提供する OpenVX* の拡張。精度の高い検出アルゴリズムを作成するため、Tensorflow* または Caffe* で訓練されたモデルを使用できます。
ビジョン・アルゴリズム・デザイナー: OpenVX* と連携してコンピューター・ビジョン・パイプラインを視覚化し、設計するためのツール。OpenVX* は、グラフの概念 (コンピューター・ビジョン・パイプライン上のタスクのフロー) を使用してアプリケーションを最適化します。ビジョン・アルゴリズム・デザイナーは、このグラフを設計し、アプリケーション・プロセスのトレース、デバッグ、パフォーマンスのプロファイルを行うためのグラフィカル・インターフェイスを提供します。
インテル® ディープラーニング・デプロイメント・ツール・キット: Tensorflow* および Caffe* と連携してディープラーニング・モデルを訓練するためのフレームワークと API。このツールを使用してモデルを訓練し、畳み込みニューラル・ネットワークで利用できます。
インテル® Media SDK: ビデオストリームを迅速にエンコード/デコードするためインテルにより開発されたフレームワーク。このフレームワークをコンピューター・ビジョン・パイプラインに統合することで、処理する各フレームのデコードと表示する各フレームのエンコードにかかる時間を節約できます。
関連情報と要件
素晴らしいでしょう? インテル® コンピューター・ビジョン SDK は、https://software.intel.com/en-us/computer-vision-sdk/details から入手できます。このページには、ソフトウェアのダウンロード・リンク、チュートリアル、すべてのツールのドキュメントがあります。
インテル® コンピューター・ビジョン SDK は、第 6 世代インテル® プロセッサー向けに最適化されており、現在 Ubuntu* 16.04、CentOS* 7.2、Windows® 10 で最適に動作します。インテル® コンピューター・ビジョン SDK はベータ版であり、ほとんどのサンプルは Windows* 未対応のため、現時点では Ubuntu* 16.04 を使用することを推奨します。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。