2017-05-06 15 views
0

TensorFlowで転送学習を使用しています。Inception V3モデルを使用して画像の特徴ベクトルを計算する必要があります。 JPG形式の画像の計算は問題ありませんが、PNG形式の計算は間違っています。Inception v3モデルを使用して、転送学習でPNG画像の特徴ベクトルを計算する方法

# read model 
with gfile.FastGFile(os.path.join(MODEL_DIR, MODEL_FILE), 'rb') as f: 
    graph_def = tf.GraphDef() 
    graph_def.ParseFromString(f.read()) 

bottleneck_tensor, jpeg_data_tensor = tf.import_graph_def(graph_def, return_elements=[BOTTLENECK_TENSOR_NAME, JPEG_DATA_TENSOR_NAME]) 

...... 

# get imagepath 
image_path = get_image_path(image_lists, INPUT_DATA, index, category) 
# read image 
image_data = gfile.FastGFile(image_path, 'rb').read() 

# calculate the feature vector 
# **This statement is wrong when png images** 
bottleneck_values = sess.run(bottleneck_tensor, {jpeg_data_tensor: image_data}) 

コンソールのエラーが含まれています:

...... 

Not a JPEG file: starts with 0x89 0x50 

...... 

InvalidArgumentError (see above for traceback): Invalid JPEG data, size 19839 
    [[Node: import/DecodeJpeg = DecodeJpeg[acceptable_fraction=1, channels=3, dct_method="", fancy_upscaling=true, ratio=1, try_recover_truncated=false, _device="/job:localhost/replica:0/task:0/cpu:0"](_recv_import/DecodeJpeg/contents_0)]] 

を私は間違ったキーコードの画像を読み取ることであるが、私はPNG形式をサポートするためにそれを修正する方法がわからない、誰かことができますね助けて?

ありがとうございました

答えて

0

私は解決策を見つけた:問題は

はそうでない場合は、pyplotで画像を読み取ってみてください...私は考えて本当にあなたの画像の読み込みです。 PNG形式をサポートするように変更することはできませんが、PNG形式の画像を読み込んでJPEG形式に変換できます。 次のようにコードを追加します。

import io 

...... 

# get imagepath 
image_path = get_image_path(image_lists, INPUT_DATA, index, category) 
# read image 
data = open(image_path,'rb').read() 
ifile = io.BytesIO(data) 
im = Image.open(ifile).convert('RGB') 
ofile = io.BytesIO() 
im.save(ofile, 'JPEG') 
image_data = ofile.getvalue() 

# calculate the feature vector 
bottleneck_values = sess.run(bottleneck_tensor, {jpeg_data_tensor: image_data}) 

をこの方法は、ディスクに新たな画像を生成しない、それはOKです!

0

他のイメージをダウンロードして正常に機能していますか?

import matplotlib.pyplot as plt 
image = plt.imread('image.jpg') 
+0

ありがとうございます。解決策を見つけました。私はPNG形式をサポートするように変更することはできませんが、PNG形式の画像を読み込んでJPEG形式に変換できます。 –

関連する問題