ImageDataGeneratorの使用方法と使用方法を理解していますが、ImageDataGeneratorのイメージにどのように影響するかを知りたいので、私のデータを増強するための緯度の私はジェネレータからの画像を繰り返し処理できることがわかります。私はそれが元の画像か変更された画像かどうかを調べる方法を探しています。後者の場合、私が見ている特定のインスタンスでどのパラメータが変更されているかを見ています。どのように/私はこれを見ることができますか?Keras ImageDataGenerator画像が変更されたパラメータを確認する方法
2
A
答えて
1
ほとんどの変換(フリッピングを除く)はです。入力画像を変更します。たとえば、あなたがソースコードから、rotation_range
を指定した場合:
theta = np.pi/180 * np.random.uniform(-self.rotation_range, self.rotation_range)
それは乱数がなるとは考えにくいのです正確に0
に適用される変換の量をプリントアウトするために便利な方法はありません各画像。 ImageDataGenerator.random_transform()
の中にソースコードを修正して印刷機能を追加する必要があります。
ソースコード(共有マシンなど)に触れたくない場合は、ImageDataGenerator
を拡張してrandom_transform()
を上書きすることができます。
import numpy as np
from keras.preprocessing.image import *
class MyImageDataGenerator(ImageDataGenerator):
def random_transform(self, x, seed=None):
# these lines are just copied-and-pasted from the original random_transform()
img_row_axis = self.row_axis - 1
img_col_axis = self.col_axis - 1
img_channel_axis = self.channel_axis - 1
if seed is not None:
np.random.seed(seed)
if self.rotation_range:
theta = np.pi/180 * np.random.uniform(-self.rotation_range, self.rotation_range)
else:
theta = 0
if self.height_shift_range:
tx = np.random.uniform(-self.height_shift_range, self.height_shift_range) * x.shape[img_row_axis]
else:
tx = 0
if self.width_shift_range:
ty = np.random.uniform(-self.width_shift_range, self.width_shift_range) * x.shape[img_col_axis]
else:
ty = 0
if self.shear_range:
shear = np.random.uniform(-self.shear_range, self.shear_range)
else:
shear = 0
if self.zoom_range[0] == 1 and self.zoom_range[1] == 1:
zx, zy = 1, 1
else:
zx, zy = np.random.uniform(self.zoom_range[0], self.zoom_range[1], 2)
transform_matrix = None
if theta != 0:
rotation_matrix = np.array([[np.cos(theta), -np.sin(theta), 0],
[np.sin(theta), np.cos(theta), 0],
[0, 0, 1]])
transform_matrix = rotation_matrix
if tx != 0 or ty != 0:
shift_matrix = np.array([[1, 0, tx],
[0, 1, ty],
[0, 0, 1]])
transform_matrix = shift_matrix if transform_matrix is None else np.dot(transform_matrix, shift_matrix)
if shear != 0:
shear_matrix = np.array([[1, -np.sin(shear), 0],
[0, np.cos(shear), 0],
[0, 0, 1]])
transform_matrix = shear_matrix if transform_matrix is None else np.dot(transform_matrix, shear_matrix)
if zx != 1 or zy != 1:
zoom_matrix = np.array([[zx, 0, 0],
[0, zy, 0],
[0, 0, 1]])
transform_matrix = zoom_matrix if transform_matrix is None else np.dot(transform_matrix, zoom_matrix)
if transform_matrix is not None:
h, w = x.shape[img_row_axis], x.shape[img_col_axis]
transform_matrix = transform_matrix_offset_center(transform_matrix, h, w)
x = apply_transform(x, transform_matrix, img_channel_axis,
fill_mode=self.fill_mode, cval=self.cval)
if self.channel_shift_range != 0:
x = random_channel_shift(x,
self.channel_shift_range,
img_channel_axis)
if self.horizontal_flip:
if np.random.random() < 0.5:
x = flip_axis(x, img_col_axis)
if self.vertical_flip:
if np.random.random() < 0.5:
x = flip_axis(x, img_row_axis)
# print out the trasformations applied to the image
print('Rotation:', theta/np.pi * 180)
print('Height shift:', tx/x.shape[img_row_axis])
print('Width shift:', ty/x.shape[img_col_axis])
print('Shear:', shear)
print('Zooming:', zx, zy)
return x
ちょうど5 print
を関数の最後に追加します。他の行は元のソースコードからコピーされ貼り付けられます。 は今、あなたは、と例えば、
gen = MyImageDataGenerator(rotation_range=15,
width_shift_range=0.1,
height_shift_range=0.1,
zoom_range=0.5)
flow = gen.flow_from_directory('data', batch_size=1)
img = next(flow)
を、それを使用し、端末に表示されたこのような情報を見ることができます:
Rotation: -9.185074669096467
Height shift: 0.03791625365979884
Width shift: -0.08398553078553198
Shear: 0
Zooming: 1.40950509832 1.12895574928
関連する問題
- 1. Keras ImageDataGeneratorフローメソッドの画像のサイズ変更
- 2. Keras ImageDataGenerator:ランダム変換
- 3. keras ImageDataGenerator flow_from_directory生成されたデータ
- 4. ImageButtonで画像を確認および変更する方法
- 5. KerasのImageDataGenerator
- 6. Keras ImageDataGeneratorメソッドflow_from_directory
- 7. wp7 - 画像がロードされたかどうかを確認する方法
- 8. KerasのImageDataGeneratorは、画像ファイルにアクセスするとランダムにエラーをスローする
- 9. React JSで壊れた画像を確認する方法
- 10. ローカルに構築されたドッカー画像を確認する方法は?
- 11. UserControlコレクションプロパティがデザイン時に変更されたことを確認する方法?
- 12. どのトグルスイッチが変更されたかを確認する方法
- 13. プロパティが変更されたかどうかを確認する方法wpf c#
- 14. システムクロックが変更されたかどうかを確認する方法?
- 15. EditTextが変更されたかどうかを確認する方法?
- 16. jQueryで入力フィールドが変更されたことを確認する方法
- 17. Laravel:モデルが変更されたかどうかを確認する方法
- 18. javascriptで高さと幅の画像を確認する方法
- 19. どの画像をタッチしたかを確認する方法
- 20. ロードされたページの画像を動的に変更する方法各画像にリンクがついた
- 21. アップロードされた画像を確認する白黒領域%
- 22. 画像の解像度を確認する方法
- 23. 画像ファイルのウィンドウアイコンの確認方法
- 24. 画像の確認方法は?
- 25. パラメータ値がストアドプロシージャに渡されたかどうかを確認する方法
- 26. ファイルが変更されたかどうかを確認する
- 27. サイドスクロール画像ですが、画像が変更されます
- 28. jqueryで画像が変更される
- 29. テキストが変更されていることを確認する方法は?
- 30. コレクションが変更されているかどうかを確認する方法?
うわー、これは本当に便利です。ありがとうございました! – doogFromMT