How to use scikit-image for data augmentation

Preview:

Citation preview

How to use scikit-image for data augmentation

@tereka114

自己紹介1. 山本 大輝(@tereka114)2. のんびりしているエンジニアの日記( Blog)

1. http://nonbiri-tereka.hatenablog.com/3. Acroquest Technology株式会社4. データ分析のお仕事しています。1. 画像処理、自然言語処理

Outline

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

4. Numpyの便利関数紹介

Outline

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

4. Numpyの便利関数紹介

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

Caffeの Data Augmentation

Scikit-imageの良い点1. Installが簡単

1. Sudo pip install scikit-image

2. 基本的な操作は Numpyの関数で可能1. 簡単に行列演算を実施することができる。

Scikit-imageでできること1. 画像の入出力(当たり前)2. 画像の変換

1. Histogram normalization、 Affine Transform3. 特徴量抽出1. Local Binary Pattern, Histogram of Orientation

Scikit-imageでできること1. 画像の入出力(当たり前)2. 画像の変換

1. Histogram normalization、 Affine Transform3. 特徴量抽出1. Local Binary Pattern, Histogram of Orientation

Outline

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

4. Numpyの便利関数紹介

Data Augmentation

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

Example of Data Augmentation

引用元: https://cesarlaurent.wordpress.com/2015/02/19/29/

Example of Data Augmentation

引用元: https://cesarlaurent.wordpress.com/2015/02/19/29/

Outline

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

4. Numpyの便利関数紹介

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

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

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

1. Scale:スケールの変換2. Rotate:回転3. Translated:平行移動

アフィン変換

Affine変換の行列を作成rotateは radian

線形変換

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

ヒストグラム正規化

ヒストグラム正規化

Numpyの便利関数紹介1. np.random.randomと np.random.binomialを組み合わせると、ノイズが作れる。2. Transpose関数で転置できる。1. 多くの DeepLearningライブラリでは、 channel,height,widthの順番を求められる。

2. scikit-imageの画像は height,width,channel3. img.transpose(2,0,1)とすると期待する入力になる。

Numpyの便利関数紹介1. whereを使うと一定以上の値を抽出して、定数に変換など可能1. 値が 0.5より高い箇所を 1とする。

1. x[np.where(x > 0.5)] = 1

2. 画像自体は numpyの行列の為、以下の方法で、画像を切り取ることが可能1. img = img[10:10 + 224]

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

Recommended