【連載】

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

27 動く人・物を追跡する(1) - OpenCVによるトラッキング

27/36

本連載の第13回から16回にわたって機械学習による顔・人・物体の検出、識別についてご紹介しました。1枚の画像から顔・人・物体を検出するだけでなく、動画像の連続するフレームから検出する場合は、トラッキング処理が必要となります。トラッキング処理を用いた場合、一度物体を見つけた後はその周辺のみを探索すれば良いので、誤検出や未検出を抑制することができます。さらに、フレーム間の物体の対応関係から動きの軌跡を求めることができます(動画1)。

<動画1 Multi-Target Trakingの一例>

オープンソースライブラリ OpenCVによるトラッキング

OpenCV 3.0以降では、エクストラモジュール(opnecv_contrib)を追加することで、さまざまな機能を使うことができます。そのエクストラモジュールにはトラッキングが含まれているので、OpenCVを使って人や物体の追跡をすごく簡単に実装できます。ただ、エクストラモジュールを使用するためには、cmakeでopencv_contribを有効にしてコンパイルする必要があります。コンパイルの方法は、Googleで検索すればいろいろと見つかりますので、そちらを参考にしてください。

OpenCVのトラッキングのコードはすごくシンプルです。

  1. Trackerインスタンスの生成: cv::Tracker::create("アルゴリズム名")
  2. 初期化: cv::Tracker::init(トラッキングを開始する画像, 対象物の外接矩形)
  3. 更新: cv::Tracker::update(最新の画像, 対象物の外接矩形)

の3ステップのみです。ループ処理で動画の画像を読み込み、3.のTrackerの更新を繰り返すだけです。

複数物体用のAPIも用意されています。複数物体用のMultiTrackerも先ほどと同様に、

  1. Trackerインスタンスの生成: cv::MultiTracker::create("アルゴリズム名")
  2. 初期化:cv::MultiTracker::add(トラッキングを開始する画像, 対象物の外接矩形)
  3. 更新:cv::MultiTracker::update(最新の画像, 対象物の外接矩形)

の3ステップのみです。

トラッキングアルゴリズムは、

  • Boosting
  • MIL
  • TLD
  • MedianFlow
  • KCF

があります。どの方向から見ても見え方に変化のない単一色の球体か、剛体であっても角度により見え方が異なる物体か、人のように姿勢が変化する非剛体か、などトラッキング対象によってトラッキング精度が異なるので、すべてのアルゴリズムを比較してみることをおすすめします。すでに、トラッキング精度を比較した結果も多数公開されていますので、動画検索もしてみてください(動画2)。

<動画2 OpenCVのTraking APIによる物体追跡結果>

トラッキングは、自動車やロボットの衝突防止、店舗内の顧客の動線解析、スポーツ映像の選手・ボールの動き解析、スマートフォンカメラアプリの高機能化など、応用範囲が多岐にわたる重要な技術です。興味のある方はまずはOpenCVを使ってトラッキングを実装してみてください。

著者プロフィール

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

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

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

27/36

インデックス

連載目次
第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回 普及期に入ったコンピュータビジョン

もっと見る

関連キーワード


人気記事

一覧

イチオシ記事

新着記事