keras.preprocessingのrandom_rotationが回転してくれない時の対処
今回の話については、何が原因なのかわかっていません。 でも対処法があるので書いている次第です。 /**TLDR keras.preprocessingのrandom_rotationがちゃんと回転してくれない時は random_rotation(x,rg=360,row_axis=0,col_axis=1,channel_axis=2) みたいに row_axis ,col_axis ,channel_axis もちゃんと指定してあげよう。 **/ /** ここから解説 **/ まずは現象が発生した僕の環境ですが tensorflow 1.6 + keras 2.1.5です。 画像はまずarrayに変換する必要があります。 keras.preprocessingを使いますと、 img = load_img("sample.jpg", target_size=(200,300)) array = img_to_array(img) みたいにしますよね。ここで print(array.shape) として、arrayの構造を見てみますと、 (200,300,3)と出ます。 つまり(縦ピクセル数 , 横ピクセル数, チャネル)ですね。 よって、random_rotationを呼び出すときは row_axis=0, col_axis=1, channel_axis=2, が正しいわけです。ここまでよろしいでしょうか? では、これらaxisを指定しない場合どうなるか...kerasのソースのデフォルト値を見てみましょう https://github.com/tensorflow/tensorflow/blob/r1.7/tensorflow/python/keras/_impl/keras/preprocessing/image.py row_axis=1, col_axis=2, channel_axis=0, ....ずれてる... おいkeras!img_to_arrayも同じkeras.preprocessingなんだからちゃんと合わせようよ!www 実はこのkeras.preprocessing、他のrandom_zoomやrandom_shif...