2015/8/8 MPS第32回ミーティング
Python で画像処理をしてみよう!

第3回 - 画像認識 -
金子純也
(Morning Project Samurai 代表)
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
目次
• Morning Project Samurai (MPS) とは
• 前回までの復習
• 認識の基礎
• テンプレートマッチング
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
Morning Project Samurai (MPS)
• Morning

- 土曜の朝を有意義に
• Project

- プロジェクト指向
• Samurai

- 謙虚に学習

- プロジェクトをバッサバッサ

と斬りまくる
プロジェクト
リーダー
シップ
メンバー
シップ
成果
人脈
UP!
UP!
UP!
キャリア
知識・技術
UP!
UP!
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
これまでに行った活動
• 勉強会 (プレゼン)

- Webアプリの安全性について(XSS実習)

- コンピュータが動くメカニズム(論理回路基礎)

- プログラムテストについて

- JavaScript 入門 (実習)

- Python を用いた Youtube 動画リストの作成

(プログラム基礎、オブジェクト指向、サーバーからのデータ取得、

 ドキュメントの検索と読み方、UML基礎)

- Python で OAuth を使ってみよう!
• プロジェクト

- MPS HP

- ぶらさぼり(東京メトロオープンデータ活用コンテスト)

- 企業内研修講師

- 世田谷まちづくりファンド (MPS Setagaya 設立)

- エジソンカー作成
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
ぶらサボり
(東京メトロオプンデータコンテスト出展作品)
Python + Django で開発第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
社内研修
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
肖像権保護のため削除
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
肖像権保護のため削除
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
MPS Setagaya 設立!
次回: 2015/8/23 (日)
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
肖像権保護のため削除
Be Active, Be Creative!!
MPS
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
目次
• Morning Project Samurai (MPS) とは
• 前回までの復習
• 認識の基礎
• テンプレートマッチング
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
目標
画像認識 (+α) を用いて

ミニチュア(半)自立走行車を作る!
(MPS Setagaya のイベントでの発表を目標)
+
KDDI 無限ラボになんか提出
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
画像認識 (Image Recognition)
Recognition:

The act of accepting that something is true or
important or that it exists
(出典: http://www.merriam-webster.com/)




物事の真偽や重要性、またはその存在を認める行動


Image Recognition:
画像や画像中にあるものが
一体何を意味しているかを理解する第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
画像認識の流れ
サンプリング 前処理 認識
濃度調整
ひずみ補正
雑音除去
etc.
特徴

抽出
エッジ検出
線分検出
領域分割
etc.
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
ディジタル画像
ピクセル

(r, g, b) = (255, 0, 0)
ピクセルの集合で表現される画像
- ピクセルは離散点
- 各ピクセルにおけるカラーや濃淡の情報も離散値
ピクセル

(r, g, b) = (255, 255, 255)
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
配列による画像の表現
多くの場合、画像は配列で表現される
例: 2D画像の2次元配列表現
(0, 0) (12, 0)
(12, 12)
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
RGB カラーモデルの原理
• 適切な3色を選べば、その混色で任意の色が表現
可能であることに基づく
• S = RR0 + GG0 + BB0



S: 任意の色

R0, G0, B0: 原刺激

R, G, B: 重み
• 色空間: (R, G, B) の組みで表される3次元空間
(出典: https://msdn.microsoft.com/)
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
使用レンジの拡大による
コントラスト強調
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
RGBの画像は情報が沢山
• Pixel 数: 640 * 360 = 230400
• 各ピクセルにRGBの情報: 230400 * 3 = 691200
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
少ない情報量で画像認識したい
• Python は遅い
• Edison のリソースの有効活用
自立走行するためには画像認識以外にも
いろいろすることあるケロ!!
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
グレースケール (Grayscale)
• グレーを使って画像を表現

• ピクセルに格納される情報は一次元
• 一般に次式で RGB から変換

Y = 0.299 * R + 0.587 * G + 0.114 * B
• Y は輝度 (光の強さを表す)
(出典: Wikipedia)
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
画像認識の流れ
サンプリング 前処理 認識
濃度調整
ひずみ補正
雑音除去
etc.
特徴

抽出
エッジ検出
線分検出
領域分割
etc.
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
画像の差分
2つの画像のピクセル毎の輝度差情報を持った画像
なにかいるケロ!!
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
画像認識の流れ
サンプリング 前処理 認識
濃度調整
ひずみ補正
雑音除去
etc.
特徴

抽出
エッジ検出
線分検出
領域分割
etc.
識別器作成
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
目次
• Morning Project Samurai (MPS) とは
• 前回までの復習
• 認識の基礎
• テンプレートマッチング
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
Q. コンピュータが画像中の

人の存在を認識するには何が必要だろう??
少し左よりの下に人がいる!
(出典: https://www.apple.com/)
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
コンピュータが「人の特徴」を
1. 知ってるいること!
2. 画像中から抜き出せること!
人の特徴は⃝⃝である。
⃝⃝が、そこに存在する。
よって人がそこに存在する。
(出典: https://www.apple.com/)
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
コンピュータが

「人の特徴」を知る方法
• コンピュータが人の特徴を自分で学習

- 答えを与えた上で

- 答えを与えないで
• コンピュータに人の特徴をプログラミング
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
A. コンピュータが

「人の特徴」を知る方法を考えてみよう!
• コンピュータが人の特徴を自分で学習

- 答えを与えた上で

- 答えを与えないで
• コンピュータに人の特徴をプログラミング
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
目次
• Morning Project Samurai (MPS) とは
• 前回までの復習
• 認識の基礎
• テンプレートマッチング
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
テンプレート
A gauge, pattern, or mold (as a thin plate or board)
used as a guide to the form of a piece being made
(出典:http://www.merriam-webster.com/)
ものの形成においてガイドとして使われるパターン
人の存在の認識を形成するときにガイドとして

使われるパターン
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
テンプレートの例
これが人の特徴だケロ!
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
テンプレートを用いた
人の存在の認識
テンプレートを用いて
人を発見した!
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
テンプレートによる
人の存在の認識の手順
1. 使用するテンプレートを用意する
2. 画像からテンプレートにマッチする部分
を探索
3. 基準値以上にマッチする部分があれば

その部分に人が存在すると認識
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
テンプレートによる
人の存在の認識の手順
1. 使用するテンプレートを用意する
2. 画像からテンプレートにマッチする部分
を探索
3. 基準値以上にマッチする部分があれば

その部分に人が存在すると認識
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
マッチの度合い (類似度) の尺度が必要!
尺度に合わせた探索手法が必要!
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
類似尺度の例
• SSD (Sum of Square Difference)
• SAD (Sum of Absolute Difference)
Iは被探索画像のピクセルの集合

Tはテンプレート画像のピクセルの集合第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
SSD
(1e8)
縦方向 pixel 番号
横方向 pixel 番号第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
Pillow でテンプレートマッチングをやってみよう!
• 画像とテンプレートを1つ準備する
• SSD を用いたテンプレートマッチングの

アルゴリズムを作る
• ヒント: (グレースケールの作り方)

img.convert(‘L’) (img は Image のインスタンス)
• テンプレートの作り方や画像の前処理方法を変えてみよう!
• 使用している画像とテンプレートでの計算量を考えてみよう!
• 今使用中のテンプレートを使ったマッチングを他の画像にも適用

してみよう!
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
今回のテンプレートマッチングの
問題点
• 変形を伴う運動、スケール、回転に弱い

- 人の形がテンプレートから外れると

存在の認識が不可能
• 閾値が明るさやノイズの状況によって変化
• 遅い
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko
次回から
• SIFT (Scale-invariant feature transform)
を用いた画像認識
第32回 (2015/8/8) MPS 定例ミーティング (c) Junya Kaneko

Python で画像処理をしてみよう!
 第3回 - 画像認識 -