画像処理とか機械学習とか

画像処理や機械学習関連の事について気まぐれで書いていきます。歩行者検出関係が多いと思います。ハリネズミもたまに出現します。

Caltech Pedestrian Dataset の使い方

 コンピュータービジョンの分野における近年の歩行者検出は、Deep Learningを用いる手法が主流となってきている。それに伴って、非常に多くの学習画像が必要となっています。Caltech Pedestrian Dataset は近年の歩行者検出で用いられる学習データの中でも非常に多くのデータとannotation(ラベル付け)がされており、近年の研究では特に利用されているデータセットです。

 

Caltech Pedestrian Datasetは、圧縮された動画ファイルとアノテーションファイル、そして大きな学会で発表された歩行者検出の結果をDETカーブで表示するための実験結果・グラフ化のソースコードまで付属しています。

また、動画にアノテーションを付ける為のソフトも一緒についており、学習データを自作することも可能です。

つまり、Caltechのデータセットを使うと、学習データが簡単に作成出来るだけではなく、現在の先進的な研究との性能を簡単に比較することが出来ます。

 

 

  • ダウンロード方法

 以下のリンク先からダウンロードすることが出来ます。

Index of /Image_Datasets/CaltechPedestrians/datasets/USA

 

f:id:hiro2o2:20160204134925p:plain

リンクを開くと上の様な画面が開きます。

set00.tar ~set10.tarが圧縮された動画のデータになります。

開くにはMatlab用のソースコードが必要です。

Matlab用のソースコードは、以下のリンクの下で示した画像の部分でダウンロードできます。

 

www.vision.caltech.edu

 

f:id:hiro2o2:20160204135333p:plain

 

また、Matlabソースコードを使用するために、Piotr's Matlab Toolboxというものもダウンロードする必要があります。これは以下のリンクよりダウンロードします。

Piotr's Matlab Toolbox

 

設定の仕方は、ダウンロード後解凍し

>> addpath(genpath('toolboxまでのパス')); savepath;

>> toolboxCompile;

と実行すればokです。

 

データセットMatlabコードのダウンロードが終了後、Matlabのコードのディレクトリの方へデータセットを移す必要が有ります。

ディレクトリは以下の画像のように配置して下さい。

 

matlabコードのディレクトリでdata-USAを作成

f:id:hiro2o2:20160204140512p:plain

 

data-USA内は以下のようになります。

annotationsはダウンロードしてきたものをそのまま入れます。

imagesは、matlabコードのdbExtractを実行すると自動的に作成されます。

 

新しく作成するのは、resとvideosです。

resの中には実験結果のデータがannotationsと同様にダウンロードできるので、解凍したものをそのまま入れます。

また、videosには、ダウンロードしてきたset00~set10までを解凍したフォルダごと入れて下さい。

f:id:hiro2o2:20160204140514p:plain

 

ここまで終わると、準備完了です。

dbEvalを実行すると、以下の様なDETカーブが表示されるはずです。

f:id:hiro2o2:20160204141003p:plain

 

次回はその他のMatlabコードの使い方を説明したいと思います。

 

そもそもDeep Learningって何なの?っていう方へ

  • Deep Learning(深層学習)とは

学習を行うニューラルネットワークの層が何層にも重なった多段構造を持つ機構を用いた学習の事でその仲間には以下のように様々なものがある。

f:id:hiro2o2:20160203214254p:plain

 

  • 学習?なにそれ?

簡単に言うとコンピュータに何かを教えることです。

例えば、車載動画から歩行者を自動で見つけたいときは、コンピュータに歩行者の画像をたくさん使って学習させます。

今までの学習では、データや外界のどこに注目し、特徴量(特徴を数値に変換した物)で表すかは研究者に任されていました。そして、研究者によって設計された特徴量を識別器という学習器に突っ込むことで、歩行者とそれ以外の特徴を学習させ、歩行者かそれ以外かを識別させていました。

しかし、Deep Learningでは、深層にすることで内部表現(何を特徴量にするかを学習する事が可能になりました。

つまり、Deep Learningは学習から識別までをこなしてくれるすごい存在なのです。

f:id:hiro2o2:20160203214851p:plain

 

・階層型ニューラルネットワーク数理モデル

いやいや、ネットワークって何なの?

丸がいっぱい並んでて線がいっぱい書いてあってよく分からない・・・

と思う方もいっぱいいるでしょう。

そもそも、Deep Learningとは人間の脳神経系のニューロン数理モデル化したものです。

コンピュータに人間のような学習をさせよう!という考えから生まれました。

f:id:hiro2o2:20160203215646p:plain

人間のニューロンとはこんな感じです。

そして、これを数理モデル化したものがこのようになります。

f:id:hiro2o2:20160203215759p:plain

f:id:hiro2o2:20160203220113p:plain

ニューロンは、多入力1出力の非線形素子のノードとして数理モデル化できます。

出力yは重み付き入力の線形結合を活性化関数aを通した結果が返ってきます。活性化関数は、一定以上の値で1、それ以外で0を返すような関数が単純なネットワークでは使われてきました。

なぜこのような活性化関数というものを定義するかと言うと、ここでも実際のニューロンを参考にしています。

そして、このニューロンを多数結合させたものがDeep Learningになります。

 

 

f:id:hiro2o2:20160203221133p:plain

入力がそのまま入力されているものを入力層

中間の層を中間層(または隠れ層)と言い、

出力の層を出力層と言います。

このようなネットワークを多層ニューラルネットワーク、もしくは多層パーセプトロンと呼んだりします。

つまり全部Deep Learningの仲間です。