LoginSignup
0
0

More than 5 years have passed since last update.

TokyoTechFes2015の使い方

Last updated at Posted at 2016-09-30

はじめに

TokyoTechFes2015の使用方法の説明をします。
デモの実践やスクリプトの改良参考になれば幸いです。

環境

  • Mac OS 10.11.6 (El Capitan)
  • Python 2.7.10

何をするスクリプトなのか

機械学習で顔画像カテゴリ判別を行います。
datasetフォルダ以下を変更して学習することで、任意の顔画像カテゴリ判別ができるようにしてあります。

導入

まずgitからcloneしておきます。

git clone https://github.com/Arudori5001/TokyoTechFes2015.git
cd TokyoTechFes2015
pip install cv2==1.0
pip install pillow==2.9.7
pip install chainer==1.3.2
pip install matplotlib==1.4.3

次にdataset.zipの解凍を行っておけば準備は完了です。

unzip dataset.zip

解凍してできるdatasetフォルダのディレクトリ構成は以下のようになっています(フォルダのみ表示)。

$ tree dataset -d
dataset
├── Baysters
├── Buffealoes
├── Carp
├── Dragons
├── Eagles
├── Fighters
├── Giants
├── Hawks
├── Lions
├── Marines
├── Swallows
└── Tigers

野球12球団の名前が並んでいると思います。各フォルダの中には、それぞれの球団の選手の顔画像が入っています。
デフォルトのまま予測を行うと、「与えられた画像の中にある顔は、12球団のどのチームの選手の顔に近いか」を予測するようになっています。
何を予測するかは、datasetフォルダ以下を変更すれば変えることができるようになっています(後述)。

予測

1.まずImageMagickで顔写真を撮り、できた画像を適当なパスへ移動します。
2.以下のコマンドを入力します。

python bbteam_pred.py (予測したい画像のパス)

3.撮った画像が画面に現れます。顔認識できれば顔の周りに枠が表示されます。できなかった場合は、cannot detect!と表示されてスクリプトは終了します。
4.顔認識できた場合、表示された枠の画像を左上の×ボタンで閉じると、画面が2つ新たに現れます。一方は撮った画像の顔の上に「You belong to (カテゴリ)!」という文字列が書かれている画像、もう1つは棒グラフの画像が現れます。これら前者はどのカテゴリに予測されたのかを、後者は各カテゴリの確信度(事後確率)を出力しています。

ここでは例として、sampleフォルダに既に入っているeagles_koyama.jpgという画像が手順1.で撮影した画像だと仮定し、予測したいとします。
eagles_koyama.jpg
ちなみにこの人はファイル名の通り楽天イーグルスの小山です。

2.以下のコマンドを入力します。

python bbteam_pred.py sample/eagles_koyama.jpg

3.撮った画像が画面に現れます。顔の周りに枠が付いています。
detected.jpg

4.表示された枠の画像を左上の×ボタンで閉じると、画面が2つ新たに現れます(一方が他方のウィンドウに隠れていることがあります)。
msg.jpg
figure_1.png

上の画像から、小山が正しくイーグルスの選手の顔に近いと予測されていて、確信度が95%であると分かります。
下の画像にはイーグルス以外のチームに対する確信度も表示されています。イーグルスが95%である以外に、カープが5%程度の確信度であるようです。

ちなみに同様の出力がコンソールにもされるようになっています。

predicted categoriy : Eagles
certainty factor of predicted categoriy : 0.954637289047
certainty factors of each categories : 
Baysters :
     0.00%
Buffealoes :
     0.00%
Carp :
     4.51%
Dragons :
     0.00%
Eagles :
    95.46%
Fighters :
     0.00%
Giants :
     0.00%
Hawks :
     0.02%
Lions :
     0.00%
Marines :
     0.00%
Swallows :
     0.00%
Tigers :
     0.00%

学習

データセットの変更

何を予測するかを変更したい等といった場合は、データセットを変更した上で、学習を行う必要があります。
データセットはdatasetフォルダ内にある決められたディレクトリ構成のファイルを学習・テストに用いるようになっています。
デフォルトの場合、先述したように、以下のようなディレクトリ構成になっています。

$ tree dataset -d
dataset
├── Baysters
├── Buffealoes
├── Carp
├── Dragons
├── Eagles
├── Fighters
├── Giants
├── Hawks
├── Lions
├── Marines
├── Swallows
└── Tigers

datasetフォルダ直下の各ディレクトリの名前(Baysters, Buffealoes, ...)はカテゴリ名を表しています。デフォルトの場合は、Baystersならベイスターズが1つのカテゴリになっています。

Baysters等のフォルダ直下には画像が並んでいます。

$ tree dataset/Baysters 
dataset/Baysters
├── 1000003_ss.jpg
├── 1000007_ss.jpg
├── 1000117_ss.jpg
├── 1000118_ss.jpg
├── 1000119_ss.jpg
...

これらの画像は、それぞれのカテゴリに属する顔画像です。
Baystersにはベイスターズの選手の顔画像が並んでいます。以上のことを参考にディレクトリ構成を変更して下さい。

例えば男か女かを判定したい場合は以下のようにします。Femaleには女性の顔画像を、Maleには男性の顔画像を保存します。

$ tree dataset -d
dataset
├── Female
└── Male

学習スクリプトの実行

以下のコマンドで学習が行われます。

python Learning.py (学習に使うデータ数) (テストに使うデータ数)

デフォルトの場合、データセットの画像は680枚あります。学習用に520枚、テスト用に120枚使用したい時は、以下のようにします。

python Learning.py 520 130
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0