Slide 1

Slide 1 text

How to use scikit-image for data augmentation @tereka114

Slide 2

Slide 2 text

自己紹介 1. 山本 大輝(@tereka114) 2. のんびりしているエンジニアの日記(Blog) 1. http://nonbiri-tereka.hatenablog.com/ 3. Acroquest Technology株式会社 4. データ分析のお仕事しています。 1. 画像処理、自然言語処理

Slide 3

Slide 3 text

Outline 1. Scikit-imageとは何か 2. Data Augmentationとは何か 3. Data Augmentationで使える関数の紹介 1. 画像の読み込み 2. アフィン変換 3. ヒストグラム正規化 4. Numpyの便利関数紹介

Slide 4

Slide 4 text

Outline 1. Scikit-imageとは何か 2. Data Augmentationとは何か 3. Data Augmentationで使える関数の紹介 1. 画像の読み込み 2. アフィン変換 3. ヒストグラム正規化 4. Numpyの便利関数紹介

Slide 5

Slide 5 text

Scikit-imageとは何か? 1. Scikit-imageは画像処理のライブラリ。 2. 因みにscikitとは、scipy toolkitを示していて、 特にこのライブラリは広く使われている。 3. 実は気にしていないだけで、案外バックエン ドでは動いていることがある。

Slide 6

Slide 6 text

CaffeのData Augmentation

Slide 7

Slide 7 text

Scikit-imageの良い点 1. Installが簡単 1. Sudo pip install scikit-image 2. 基本的な操作はNumpyの関数で可能 1. 簡単に行列演算を実施することができる。

Slide 8

Slide 8 text

Scikit-imageでできること 1. 画像の入出力(当たり前) 2. 画像の変換 1. Histogram normalization、Affine Transform 3. 特徴量抽出 1. Local Binary Pattern, Histogram of Orientation

Slide 9

Slide 9 text

Scikit-imageでできること 1. 画像の入出力(当たり前) 2. 画像の変換 1. Histogram normalization、Affine Transform 3. 特徴量抽出 1. Local Binary Pattern, Histogram of Orientation

Slide 10

Slide 10 text

Outline 1. Scikit-imageとは何か 2. Data Augmentationとは何か 3. Data Augmentationで使える関数の紹介 1. 画像の読み込み 2. アフィン変換 3. ヒストグラム正規化 4. Numpyの便利関数紹介

Slide 11

Slide 11 text

Data Augmentation 1. データに対して情報を加えること。 2. 画像に対しては、元画像に対して回転、平 行移動、スケール変更などの情報を加える。 3. Kaggleではよく使われる方法 4. AlexNetの元論文でも使われている。

Slide 12

Slide 12 text

Example of Data Augmentation 引用元:https://cesarlaurent.wordpress.com/2015/02/19/29/

Slide 13

Slide 13 text

Example of Data Augmentation 引用元:https://cesarlaurent.wordpress.com/2015/02/19/29/

Slide 14

Slide 14 text

Outline 1. Scikit-imageとは何か 2. Data Augmentationとは何か 3. Data Augmentationで使える関数の紹介 1. 画像の読み込み 2. アフィン変換 3. ヒストグラム正規化 4. Numpyの便利関数紹介

Slide 15

Slide 15 text

画像の読み込み 1. skimage.io.imreadでファイル名を第一引数 に使うと可能です。 2. 読みこんだ画像はnumpy.arrayなので行列 計算はそのまま可能 3. OpenCVと併用する場合は注意、行列の並び 順はRGB。(OpenCVはBGR)

Slide 16

Slide 16 text

画像の読み込み 1. Scikit-imageでの画像を読み込み

Slide 17

Slide 17 text

アフィン変換 1. 平行移動を伴う線形変換のこと 1. 「並行移動」・「回転」・「拡大・縮小」が可能 2. パラメータを与えるだけで簡単にできる。 1. Scale:スケールの変換 2. Rotate:回転 3. Translated:平行移動

Slide 18

Slide 18 text

アフィン変換 Affine変換の行列を作成 rotateはradian 線形変換

Slide 19

Slide 19 text

ヒストグラム正規化 1. ヒストグラムを平滑化することによって、コン トラストを調整することができる。 1. このコントラスト調整によって、精度がよくな ることも・・・

Slide 20

Slide 20 text

ヒストグラム正規化

Slide 21

Slide 21 text

ヒストグラム正規化

Slide 22

Slide 22 text

Numpyの便利関数紹介 1. np.random.randomとnp.random.binomialを 組み合わせると、ノイズが作れる。 2. Transpose関数で転置できる。 1. 多くのDeepLearningライブラリでは、 channel,height,widthの順番を求められる。 2. scikit-imageの画像はheight,width,channel 3. img.transpose(2,0,1)とすると期待する入力にな る。

Slide 23

Slide 23 text

Numpyの便利関数紹介 1. whereを使うと一定以上の値を抽出して、定 数に変換など可能 1. 値が0.5より高い箇所を1とする。 1. x[np.where(x > 0.5)] = 1 2. 画像自体はnumpyの行列の為、以下の方法 で、画像を切り取ることが可能 1. img = img[10:10 + 224]

Slide 24

Slide 24 text

まとめ 1. scikit-imageでData Augmentationをやってみ ようの紹介です。 2. Data Augmentationは画像処理(特に認識) で使われ、成果をあげている。 3. Scikit-imageで、簡単にできる。