回答編集履歴

2

追記

2018/09/27 03:29

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -5,3 +5,109 @@
5
5
  画像データの拡張とは、明るさを変えたりしてデータを水増しする Data Augmentation のことでしょうか?
6
6
 
7
7
  だとしたら、通常は手作業で画像編集して増やすのではなく、PIL、OpenCV または Keras の関数で機械的に増やすものですよ。
8
+
9
+
10
+
11
+ ## Keras の ImageDataGenerator を使用した Data Augmentation の例
12
+
13
+
14
+
15
+ 自作してもいいですが、Keras の [ImageDataGenerator](https://keras.io/ja/preprocessing/image/) を使うと簡単に水増しできます。
16
+
17
+ ImageDataGenerator の使い方全般及び水増しのパラメータの効果は [Keras の ImageDataGenerator を使って学習画像を増やす](http://pynote.hatenablog.com/entry/keras-image-data-generator) を参考にしてください。
18
+
19
+
20
+
21
+ ```python
22
+
23
+ import os
24
+
25
+ import glob
26
+
27
+
28
+
29
+ from PIL import Image
30
+
31
+ import numpy as np
32
+
33
+ import matplotlib.pyplot as plt
34
+
35
+ from keras.preprocessing import image
36
+
37
+
38
+
39
+ # 画像を読み込む。
40
+
41
+ img_paths = 'images/*.jpg'
42
+
43
+ x = []
44
+
45
+ for img_path in glob.glob(img_paths):
46
+
47
+ img = Image.open(img_path) # 画像を読み込む。
48
+
49
+ img = img.resize((256, 256)) # ネットワークの入力サイズでリサイズする。
50
+
51
+ x.append(np.array(img))
52
+
53
+ x = np.array(x)
54
+
55
+ print(x.shape) #
56
+
57
+
58
+
59
+ # 保存ディレクトリを作成する。
60
+
61
+ save_path = 'output'
62
+
63
+ os.makedirs(save_path, exist_ok=True)
64
+
65
+
66
+
67
+ # データ生成器を作成する。
68
+
69
+ params = {
70
+
71
+ 'rotation_range': 20, # [-20, 20] 度の範囲でランダムに回転する。
72
+
73
+ 'horizontal_flip': True, # ランダムに左右反転する。
74
+
75
+ 'height_shift_range': 0.2, # ランダムに上下並行移動する。
76
+
77
+ 'width_shift_range': 0.2, # ランダムに左右平行移動する。
78
+
79
+ 'channel_shift_range': 5., # [-5.0, 5.0] の範囲でランダムに画素値に値を足す。
80
+
81
+ }
82
+
83
+ datagen = image.ImageDataGenerator(**params)
84
+
85
+
86
+
87
+ # ミニバッチを生成するジェネレーターを作成する。
88
+
89
+ gen = datagen.flow(x, batch_size=16, save_to_dir=save_path,
90
+
91
+ save_prefix='generated', save_format='png')
92
+
93
+
94
+
95
+ # ジェネレーターで生成する。
96
+
97
+ num_iterations = 9
98
+
99
+ for i in range(num_iterations):
100
+
101
+ # ミニバッチを生成したタイミングでディレクトリに画像が保存される。
102
+
103
+ next(gen)
104
+
105
+ ```
106
+
107
+
108
+
109
+ ![イメージ説明](9151c5fee571dd1e90d4a0fc67672d6f.png)
110
+
111
+
112
+
113
+ 学習ライブラリに Keras を使う場合は、ディスクに保存しなくても ImageDataGenerator でリアルタイムに生成した画像をそのままネットワークに流すことができます。

1

2018/09/27 03:29

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -1,4 +1,4 @@
1
- \ はエスケープが必要な文字なので、`'C:\programing\test.jpg'` または文字リテラル r'C:\programing\test.jpg'` とします。
1
+ \ はエスケープが必要な文字なので、`'C:\programing\test.jpg'` または文字リテラル `r'C:\programing\test.jpg'` とします。
2
2
 
3
3
 
4
4