スポンサーリンク

Chainer用の画像処理メモ(1)

画像を機械学習するために、画像の前処理で、画像を数字の配列に変換する必要がある。

前回、まずは、Pythonの画像処理モジュール、OpenCVを触ってみた。

http://twosquirrel.mints.ne.jp/?p=20039

この後だが、

(1)ラベル付けフォルダにそれぞれ保存した複数のjpg画像を、28×28のグレースケール画像に変換して別フォルダに保存。

(2)28×28のグレースケール画像を、Chainer用に、tuple_dataset型(numpy型?)に変換して保存

を行いたい。

まずは、上記の(1)にtryしてみる。

(環境)
Panasonic CF-RZ4
Windows 8.1 Pro
Anaconda 4.4.0
Python 3.5
Chainer 2.0
OpenCV3

(1)カラー画像で、ラベル付け(0 or 1)されたものが20枚くらいずつあるとする。

images/0/001.jpg
002.jpg

images/1/21,jpg
22.jpg
23.jpg
……

のように配置されているとする。

自前の画像から、まずは、train_mnist.py で学習できるように、データセットを作ってみたい。

https://qiita.com/tommyfms2/items/c3fa0cb258c17468cb30

の、

Linear(普通)の場合のデータセットの作り方

を参考にする。

これの、

train, test = chainer.datasets.get_mnist()

の中身がどうなっているのか。調べる。

import chainer

# Load the MNIST dataset
train, test = chainer.datasets.get_mnist()

 

print(train[0])


よくわからん、、、

しかし、最終的に、この形に変換したい。

(2) 画像を28×28のグレースケール画像に一括変換

https://qiita.com/xolmon/items/0b82f4861cf93fd28e33

の、2.dlibで顔画像を切り抜く のコードを改変して、jupyter notebookで実行。

 

すると、data/フォルダ内に、1/ フォルダと、2/フォルダが作成され、28×28にリサイズされたグレースケール画像がそれぞれ保存される。

 

<参考>

グレースケール化

https://qiita.com/icoxfog417/items/53e61496ad980c41a08e

リサイズ 28×28

●データをnumpy形式に変換する

Pythonで複数画像データを配列化して保存する方法
投稿 2017/05/28 17:03 ・編集 2017/05/28 17:05
https://teratail.com/questions/78052