2017-03-26 40 views
4

私はKerasで実装されたニューラルネットワークにRGBカラー画像を送ります。 Kerasに画像を別の色空間(YUV、Lab、または一部のグレースケールなど)に変換させるにはどうすればよいですか?Kerasの画像の色空間を変換するには?

私はLambda()層でみましたが、エラーが発生しました:

model.add(Lambda(lambda x: cv2.cvtColor(x, cv2.COLOR_RGB2LAB), input_shape=(160, 320, 3)))

は、私は問題がxはテンソルである、と私ドンということであると考えている私に

TypeError: src is not a numpy array, neither a scalar

を与えましたそれをOpenCVが受け入れるものに変換する方法を知らない。

私がGPUで代わりに行うことができれば、さらに優れています。例えば。 Tensorflowではtf.image.rgb_to_hsv()tf.image.rgb_to_grayscale()などの関数を使用します。

ありがとうございます!

+1

を?モデルでそれをする必要はありません。 – oscfri

+2

これをモデルで実行することで、GPUで実行され、より高速で、トレーニング、検証、テスト、および実際の分類で同じ方法で使用されます。しかし、私は現在のKeras APIを使って計算のグラフでそれを行う方法を見つけることはできません。おそらくあなたが言うように終わるでしょう。 – Fanta

+1

ラムダレイヤを使用しますが、内部でテンソルフロー変換を使用します –

答えて

1

あなたがtensorflowをインポートする場合、あなたはラムダでtf.image.rgb_to_hsv()関数を使用することができます:あなたはモデルの外にカラースペースを変換しないのはなぜ

def hsv_conversion(x): 
    import tensorflow as tf  
    return tf.image.rgb_to_hsv(x) 

model.add(Lambda(hsv_conversion, input_shape=(160, 320, 3))) 
関連する問題