【連載】

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

16 コンピュータビジョン分野における機械学習(4) - Deep Learning

16/35

今回は、大流行中のDeep Learningについてです。コンピュータビジョン分野では、Deep Convolutional Neural Network(以下、CNN)がよく用いられます。

Neural Networkとは?

Neural Network(ニューラルネットワーク)は、脳を模倣した機械学習です。ニューラルネットワークは長年のあいだ、入力層、中間層(隠れ層)、出力層のシンプルな構造が主でした(図1)。手書き数字の認識を例に説明すると、入力層(x1, x2, ……, xn)には各ピクセルの輝度値を入力します。縦10画素×横10画素の画像であれば、nは100となります。そして、出力層(y1, y2, ……, ym)は、手書き数字が、0から9のいずれなのかを出力することになるので、mは10です。

学習フェーズで、各ノード間の重みを求めておくと、未知の画像が入ってきたときに書かれている数字が0から9のいずれなのかを識別できるわけです。

図1 ニューラルネットワークの例

Deep Learningとは?

長年の間、ニューラルネットワークは図1のようなシンプルな構造でした。ニューラルネットワークのブームが去った後、ニューラルネットワークに代わる機械学習手法として、前回ご紹介したSVMやRandom Forestなどの研究が進められてきました。そしてここ数年で、中間層を何層も重ねたDeep Neural Networkにより、高い識別性能を得ることに成功し、ニューラルネットワークのブームが再びやってきたわけです。学習技術の進歩、大量の学習データ、PCの性能向上により、深い構造を持つニューラルネットワークを利用できるようになったのです。

コンピュータビジョン分野では、主にCNNが用いられます。2次元配列の構造を持つ画像と、二次元配列のフィルタによる畳み込み処理の相性が良いことが、CNNが用いられる理由だと思います。

CNNの概要

CNNの概要は、図2のとおりです。入力画像がRGBのカラー画像であれば、入力は3チャンネルとなります。その入力画像にフィルタをかけ、足し合わせることでひとつのマップを生成します。そしてPooling処理でマップのサイズを縮小し、最後はニューラルネットワークの入力層にマップの値を入力する構造です。Poolingは一般的にはMax PoolingかSum Poolingを用います。Max Poolingは、たとえば2×2の小領域の中から最大の値のみを取り出します。Sum Poolingは、小領域中の値の合計値を求めます。

学習フェーズでは、ニューラルネットワークのノード間の重みに加え、フィルタの係数を求めることになります。フィルタを複数種類用いて、複数のマップを作成することもできます。さらに、フィルタを用いた畳み込み処理、Pooling処理を何層にも重ねることもできます。

図2 CNNの概要

CNNでは、前回までに解説した顔検出、人検出技術のように、Haar-likeやHoGといった特徴量を設計する必要がありません。フィルタのパラメータを学習フェーズで求め、そのフィルタが特徴抽出器となります。つまり、特徴量の設計まで自動でやってくれる優れものです。

Caffe、Chainer、TensorFlowといったDeep Learningのフレームワークを用いることで比較的容易にコーディングできます。機械学習分野では避けて通れない技術ですので、興味のある方はぜひ挑戦してみてください!

著者プロフィール

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

現在は、日立製作所を退職し、東京大学大学院博士課程に在学中。一人称視点映像(First-person vision, Egocentric vision)の解析に関する研究を行っている。具体的には、頭部に装着したカメラで撮影した一人称視点映像を用いて、人と人のインタラクション時の非言語コミュニケーション(うなずき等)を観測し、機械学習の枠組みでカメラ装着者がどのような人物かを推定する技術の研究に取り組んでいる。また、大学院での研究の傍ら、フリーランスとしてコンピュータビジョン技術の研究開発に従事している。

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

16/35

インデックス

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

もっと見る

関連キーワード


人気記事

一覧

イチオシ記事

新着記事