2017-02-10 11 views
2

私は、入力画像から平均画像を減算する方法に関するコードスニペットを探しています。Tensorflow:平均画像を引く方法は?

IMG_MEAN = np.array((104.00698793,116.66876762,122.67891434), dtype=np.float32) 

私は減算部は

img = tf.subtract(img, mean_img) 

が、どのようにIMGと同じ形状でmean_imageを作成するようになります推測する:私は、画像をnumpyの配列として意味がありますか?

答えて

2

は、IMGは、すべてつのマトリックス、サイズであると仮定する(100、100、3) RGB平均値([1、2、3]

img = tf.ones([100, 100, 3], dtype=tf.float32) #(100, 100, 3) 
mean = tf.constant([1, 2, 3], dtype=tf.float32) # (3) 
mean = tf.reshape(mean, [1, 1, 3]) 

img_m = img - mean 

with tf.Session() as sess: 
    a = sess.run(img_m) # shape of a (100, 100, 3) 
    # a[:,:,0] = 0 
    # a[:,:,1] = -1 
    # a[:,:,1] = -2 
0

img = tf.subtract(img, mean_img)imgの最後の次元限り正確ですtf.shape(img)[-1])は3です。

詳細についてはBroadcasting operation in tensorflow Glossarynumpy Broadcastingを確認できます。

imgと同じ形状のmean_imageを作成するにはどうすればよいですか?

あなたは試すことができます:https://www.tensorflow.org/api_docs/python/tf/image/per_image_standardization

tf.reshape(tf.tile(m, [tf.reduce_prod(tf.shape(img)[:-1])]), 
      tf.shape(img)).eval() 
0

のようtf.image.per_image_standardizationを使用する方が良いでしょう。

これが役に立ちます。

関連する問題