【連載】

機械の目が見たセカイ -コンピュータビジョンがつくるミライ

40 ハードウェアの基礎知識(4) - GPGPU

  • >
  • >>

40/40

今回もハード寄りの話をしたいと思います。前回、前々回は撮像素子とレンズについてでした。今回は、GPGPUについてです。

GPUとは?

GPU(Graphics processing unit:グラフィックス・プロセシング・ユニット)は、描画処理のための専用プロセッサです。コンピュータの通常使用時(文書作成や表計算など)の画面描画処理に加え、動画再生処理、3Dゲームや3D CGなどの3Dグラフィックス処理を行うためのものです。

GPUで行える処理は、汎用的な計算を行うために設計されているCPUで処理することも可能ですが、グラフィックス処理をGPUにまかせることでCPUの負荷を軽減することができます。また、3Dグラフィクスのように計算量の多い処理では、CPUの演算速度が追いつかずコマ落ちが生じる可能性があるため、そのような用途ではGPUが必要となります。

GPGPUってなに?

3Dゲームや3D CG作成用途でもない限り、通常のコンピュータの使い方(文書の作成、プレゼン資料の作成、インターネットでの検索など)では3Dグラフィックスの処理が必要なケースはほとんどありません。つまり、3Dゲームや3D CG作成用途以外では、GPUの本来の処理能力の極一部しか使っていません。3Dゲームや3D CG作成などのグラフィクス用途以外でも、GPUを活用しようというのがGPGPU(General purpose computing on graphics processing units)のコンセプトです。コンピュータビジョンの入力となる画像は、2次元配列のデータであり、並列計算、行列演算が得意なGPUが大いに役立ちます(処理内容によりますが)。

GPGPUに対応しているGPUとしては、NVIDIA製が最も有名で、GeForceシリーズ、Quadroシリーズ、Teslaシリーズがあります。GeForceシリーズは、3Dグラフィックスや動画編集向け、Quadroシリーズは、3D CGやCADなどのデザイン、医療用グラフィックス向け、Teslaシリーズは、GPGPU専用です。

GPU以外に必要なものは?

GPUは、本来グラフィックス処理を行うためのものなので、マザーボードにGPUを刺しただけでは、グラフィックス系の処理しかしてくれません。つまり、CPUで処理することを前提に作られたソフトウェアは、GPUでは処理することができません。そこで必要になるのがCUDA(Compute Unified Device Architecture)です。

CUDAは、NVIDIAのGPUでグラフィックス以外の汎用的な処理を行うプログラムを開発する際に用いる統合環境環境です。GPUで汎用的な処理を実行するためのコンパイラ(nvcc)やライブラリなどから構成されています。NVIDIA製のGPUを購入しただけではGPGPU用途では使えません。CUDAをインストールするようにしましょう。

GPGPUでできること

GPGPUは、汎用的な処理をGPUで行うためのものと説明しましたが、どんな処理でもGPUにやらせれば良いというわけではありません。GPUは、もともとグラフィックス処理のために開発されたプロセッサであり、並列計算、行列演算を得意としています。

GPGPUが得意としている分野として、シミュレーション(物理シミュレーション、流体計算・気候シミュレーション、天体シミュレーションなど)があります。また、暗号解読、音声処理もGPGPUが得意とする分野と言われています。

コンピュータビジョン分野におけるGPGPU

コンピュータビジョンのライブラリのデファクトスタンダードであるOpenCVは、GPGPUに対応しています。GPUの機能を有効にしたい場合は、CUDAを使用するフラグをオンにしてコンパイルする必要がありますが、コンパイル方法はネットですぐに見つかりますので是非試して見てください。処理内容にもよりますが、動画1のようにすべてをCPUで処理する場合と比較して、高速に歩行者検出処理を実行できます。

動画1 CPUとGPUの比較結果

歩行者検出以外では、Viola-Jonesの顔検出、2台のカメラで3次元計測を行うステレオカメラ、フィルタ処理などの基本的な画像処理、キーポイント検出などGPGPUに対応しています(図1)。使用するGPU、処理内容にもよりますが最大で30倍もの速度を実現していることが見て取れます。

図1 OpenCVの各処理の処理速度比較結果(CUP vs GPU) (出典:http://opencv.org/platforms/cuda.html)

大量の画像を学習させる際に膨大な時間を要するDeep Learning(ディープラーニング)でもGPUは効果を発揮します。Tensor Flow、Caffe、Chainerなどのフレームワークは、GPGPUに対応してますので、比較的簡単にGPUを活用することができます。

何十万、何百万画素という画像を処理するコンピュータビジョン分野では、1枚の画像を処理するのに数秒、数分かかることも珍しくありません。処理時間を少しでも短くしたい場合は、GPUの活用を検討して見てください! 今回紹介したNVIDIA以外にもAMD、Intel、ARMの製品もGPGPUに対応しています。CUDAは基本的にはNVIDIAのGPU用ですが、「混種混在環境での並列プログラミングのオープンな標準規格」であるOpenCLというものもありますので、興味のある方は試して見てください!

著者プロフィール

樋口未来(ひぐち・みらい)
日立製作所 日立研究所に入社後、自動車向けステレオカメラ、監視カメラの研究開発に従事。2011年から1年間、米国カーネギーメロン大学にて客員研究員としてカメラキャリブレーション技術の研究に携わる。

日立製作所を退職後、2016年6月にグローバルウォーカーズ株式会社を設立し、CTOとして画像/映像コンテンツ×テクノロジーをテーマにコンピュータビジョン、機械学習の研究開発に従事している。また、東京大学大学院博士課程に在学し、一人称視点映像(First-person vision, Egocentric vision)の解析に関する研究を行っている。具体的には、頭部に装着したカメラで撮影した一人称視点映像を用いて、人と人のインタラクション時の非言語コミュニケーション(うなずき等)を観測し、機械学習の枠組みでカメラ装着者がどのような人物かを推定する技術の研究に取り組んでいる。

専門:コンピュータビジョン、機械学習

  • >
  • >>

40/40

インデックス

連載目次
第40回 ハードウェアの基礎知識(4) - GPGPU
第39回 ハードウェアの基礎知識(3) - レンズ
第38回 ハードウェアの基礎知識 (2) - 電子シャッター
第37回 コンピュータビジョン分野で活躍する企業・フリーランサー インタビュー(3)
第36回 領域分割(3) - CRFを用いたSemantic Image Segmentation
第35回 領域分割(2) - Mean Shift法を用いたImage Segmentation
第34回 領域分割(1) - 概要編
第33回 見えないものを観る(3) - 目に見えない光「赤外線」を観る
第32回 見えないものを観る(2) - 絵画の下書きを観る
第31回 見えないものを観る(1) - 映像から音を復元する
第30回 動く人・物を追跡する(4) - OpenCVのトラッキング手法(後編)
第29回 動く人・物を追跡する(3) - OpenCVのトラッキング手法(中編)
第28回 動く人・物を追跡する(2) - OpenCVのトラッキング手法(前編)
第27回 動く人・物を追跡する(1) - OpenCVによるトラッキング
第26回 インターネット上の画像群からTime-lapse映像を自動生成する手法の概要
第25回 一人称視点(3) - Social Saliency
第24回 一人称視点(2) - Social Interaction
第23回 一人称視点(1) - 概要
第22回 行動認識(3) - Two-stream ConvNets
第21回 行動認識(2) - 動きの特徴量(HOF、MBH)
第20回 行動認識(1) - Dense Trajectories
第19回 視線計測(3) - カメラのみを用いた視線計測
第18回 視線計測(2) - 近赤外の点光源を用いた視線計測
第17回 視線計測(1) - 導入編
第16回 コンピュータビジョン分野における機械学習(4) - Deep Learning
第15回 コンピュータビジョン分野における機械学習(3) - 識別器
第14回 コンピュータビジョン分野における機械学習(2) - 顔検出・人検出
第13回 コンピュータビジョン分野における機械学習(1) - 導入編
第12回 コンピュータビジョン分野の市場分析(1) - 自動車編
第11回 コンピュータビジョン分野で活躍する企業・フリーランサー インタビュー(2)
第10回 カメラを用いた3次元計測(4) - Structure from Motion
第9回 カメラを用いた3次元計測(3) - サブピクセル推定
第8回 カメラを用いた3次元計測(2) - ステレオカメラ
第7回 コンピュータビジョン分野で活躍する企業・フリーランサー インタビュー(1)
第6回 カメラを用いた3次元計測(1)
第5回 意外と知らないカメラキャリブレーション
第4回 ハードウェアの基礎知識
第3回 コンピュータビジョンの要素技術と応用範囲(後編)
第2回 コンピュータビジョンの要素技術と応用範囲(前編)
第1回 普及期に入ったコンピュータビジョン

もっと見る

関連キーワード


人気記事

一覧

イチオシ記事

新着記事