資料1

果物識別
補足資料1
やりたい事

入力された画像内に映っている果物が何かを自動判別
するプログラムを組むこと
識別器
りんご です
簡単化の為の制約



テストで送られてくる画像には果物は1つしかない
果物画像の背景は単純背景
果物は{りんご, レモン, バナナ}と定義する
学習・識別器作成までの流れ
学習用画像
・・・・
学習器
各果物毎の
特徴
・・・・
テスト用画像
識別器
りんご です
学習器作成
画像読み込み
学習器
画像から特徴量取得
得た特徴を何らかの変数に保存
YES
未学習の画像はあるか?
NO
学習した果物クラスの平均ベクトルと
分散共分散行列を求め外部ファイルに保存
特徴ベクトル
特徴ベクトル : (赤み, 円形度)

赤み

h
360  h 
r  max 1 
, 1

 180
180 
円形度
テスト
画像
1.0
Q0  h  360
りんご
レモン

バナナ


円形度
0
赤み
1.0
円形度=(4π*(面積))/(周囲長*周囲長)
vectorの使い方
#include<iostream>
#include<vector>
int main{
格納する要素の型を指定
vector<int> v;
v.push_back(1);
格納する要素
v.push_back(2);
for(int i = 0 ; i < v.size() ; i++){
格納されている要素の個数
std::cout << v[i] << “ ”;
格納されている要素にアクセス
}
return 0;
}
出力結果
12
果物識別
補足資料2
識別
未学習の画像はあるか?
NO
学習した果物クラスの平均ベクトルと
分散共分散行列を求め外部ファイルに保存

入力したテスト画像と各クラス
タとの距離で、入力された画
像がどのクラスタに分類され
るかを判定する。
円形度
テスト画像
1.0
りんご
レモン
バナナ
0
赤み
1.0
識別作業のイメージ
平均ベクトルと分散共分散行列を求める

なぜ求めるのか?

テスト画像がどのクラス(りんご, レモン, バナナ)に最も近いか
を判断するためにマハラノビス距離を用いる。
マハラノビス距離の算出式は以下のとおりである。
テスト画像の
特徴量空間での座標
  Tx   Avex  

dis ( x)      

 Ty
Ave
y 
  
マハラノビス距離
対象クラスの分散共分散行列
の逆行列
T
 C xx

C
 yx
C xy 

C yy 
対象クラスの平均ベクトル
1
  Tx   Avex  
   

  Ty   Avey  

  
平均ベクトルと分散共分散行列を求める


前提
nは画像の番号
n
n
学習で入力されたデータ: pn  ( px , p y ) xは赤み, yは円形度
平均ベクトル
 Avex  1
 Ave  
N
y


 p xn 
n1  p n 
 y
N
分散共分散行列(Covariance Matrix)
1 N

N n 1
1 N
C xy  n 1
N
1 N
C yx  n 1
N
1 N
C yy  n 1
N
C xx 
C xx
CM  
C yx
C xy 
C yy 
p
n
x
 Avex p xn  Avex


p
n
x
 Avex p yn  Avey


p
n
y
 Avey p xn  Avex


p
n
y
 Avey p yn  Avey


クラス辞書作成例(数値はテキトーです) 1/3
学習したりんごのデータ:(赤み,円形度) , N = 3
平均ベクトル=(0.8 , 0.8)
(0.9 , 0.7) , (0.7 , 0.8) , (0.8 , 0.9)


1
0.9  0.82  0.7  0.82  (0.8  0.8) 2  0.02
3
3
1
 0.01
C xy  0.9  0.80.7  0.8  0.7  0.80.8  0.8  0.8  0.80.9  0.8 
3
3
以下めんどくさいので 途中式省略
 0.01
C yx 
1  2  1
3
 CM apple 
 1 2 
0.02
300
C yy 


3
C xx 
CM
1
apple
2 1 
 100

1
2


クラス辞書作成例(数値はテキトーです) 2/3
学習したレモンのデータ:(赤み,円形度) , N = 3
平均ベクトル=(0.6 , 0.4)
(0.6 , 0.5) , (0.7 , 0.4) , (0.5 , 0.3)
C xx 

CM
1
lemon

1
0.6  0.62  0.7  0.62  (0.5  0.6) 2  0.02
3
3
1
0.01
C xy  0.6  0.6 0.5  0.4   0.7  0.6 0.4  0.4   0.5  0.6 0.3  0.4  
3
3
以下めんどくさいので 途中式省略
0.01
C yx 
1 2 1 
3
 CM lemon 
1 2
0.02
300
C yy 


3
 2  1
 100 


1
2


クラス辞書作成例(数値はテキトーです) 3/3
平均ベクトル
りんご
(0.8 , 0.8)
レモン
(0.6 , 0.4)
分散共分散行列の逆行列
CM
CM
1
apple
1
lemon
2 1 
 100

1 2 
 2  1
 100 

 1 2 
識別器のアルゴリズム
テスト画像読み込み
識別器
テスト画像から特徴量抽出
抽出した特徴と各クラスとの
マハラノビス距離を計算
距離最小のクラスを探す
結果を表示
識別例(数値はテキトーです) 1/1

テスト画像xの特徴 (0.7, 0.9)
りんごとの距離
2 1 0.7  0.8
dis apple ( x)  0.7  0.8 0.9  0.8100


1 2 0.9  0.8
dis apple ( x)  6
レモンとの距離
 2  1 0.7  0.6
dislemon ( x)  0.7  0.6 0.9  0.4100


 1 2  0.9  0.4
dislemon ( x)  42
 dis apple ( x)  dislemon ( x)
なので、テスト画像xはりんごであると推測できる