2016-04-08 21 views
1

私は一度に1つのイメージを受け入れるようにTensorFlowを設定しようとしていますが、あらかじめtf.image.per_image_whitening()を実行せずに通常の配列を渡すので間違った結果を得ていると思います。画像キューを使わずにPythonで個々の画像に簡単にこれを行う方法はありますか?ここでper_image_whitening in Python

は、これまでの私のコードです:あなたがイメージキューを回避し、予測を一つずつ実行したい場合は

 im = Image.open(request.FILES.values()[0]) 
     im = im.convert('RGB') 
     im = im.crop((0, 0, cifar10.IMAGE_SIZE, cifar10.IMAGE_SIZE)) 
     (width, height) = im.size 
     image_array = list(im.getdata()) 
     image_array = np.array(image_array) 
     image_array = image_array.reshape((1, height, width, 3)) 

     # tf.image.per_image_whitening() should be done here 
     #mean = numpy.mean(image_array) 
     #stddev = numpy.std(image_array) 
     #adjusted_stddev = max(stddev, 1.0/len(image_array.flatten()))) 

     feed_dict = {"shuffle_batch:0": image_array} 
     # predictions always returns something close to [1, 0] 
     predictions = sess.run(tf.nn.softmax(logits), feed_dict=feed_dict) 
+0

一時的な解決策を見つけましたが、それは本当に遅いです:tf.Sessionとimage_tensor = tf.convert_to_tensor(image_array) \t \t(): \t \t \t image_tensor_whitened = tf.image.per_image_whitening(image_tensor) \t \t \t image_array = image_tensor_whitened.eval() – Rob

答えて

0

、私は

image_array = (image_array - mean)/adjusted_stddev 

は、トリックを行うことができるはずだと思います。

バッチで予測したい場合は、per_image_whitening(現在のper_image_standardization)は1つの画像でのみ機能するため、少し複雑です。したがって、上記のようにバッチを形成する前に、または前処理手順を設定する前にそれを行う必要があります。