2017-05-06 8 views
0

TensorFlow에서 전송 학습을 사용하고 있습니다. Inception V3 모델을 사용하여 그림의 특성 벡터를 계산해야합니다. JPG 형식 그림의 계산은 문제가 없지만 PNG 형식의 계산은 잘못 될 것입니다. 사람이 할 수있는, Inception v3 모델을 사용하여 전송 학습에서 PNG 이미지의 특성 벡터를 계산하는 방법

...... 

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 포맷을 지원하기 위해 수정하는 방법을 모른다 :

# 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}) 

콘솔 오류가 포함 도와주세요?

감사합니다.

답변

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 형식으로 변환 할 수 있습니다. –