import tensorflow as tf
import requests
from PIL import Image
from io import BytesIO
import os, sys
def create_graph():
# Creates graph from saved graph_def.pb.
local_model_path = 'output_graph_new.pb'
with tf.gfile.FastGFile(local_model_path, 'rb') as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
_ = tf.import_graph_def(graph_def, name='')
def dl_image(pageId):
with requests.Session() as session:
response = session.post('https://commons.wikimedia.org/w/api.php', timeout=5, data={
'format': 'json',
'formatversion': 2,
'action': 'query',
'prop': 'imageinfo',
'iiprop': 'url',
'iiurlwidth': 600,
'pageids': pageId
})
res = response.json()
url = None
for page in res['query']['pages']:
for info in page['imageinfo']:
url = info['thumburl'] if 'thumburl' in info else info['url']
if url is not None:
res = session.get(url)
if res.status_code >= 400:
raise AssertionError("Failure ")
return url, res.content
raise AssertionError("No image url")
session_conf = tf.ConfigProto(intra_op_parallelism_threads=10,inter_op_parallelism_threads=10)
create_graph()
with tf.Session(config=session_conf) as sess:
softmax_tensor = sess.graph.get_tensor_by_name('final_result:0')
for i in [22778309, 19963078, 42643835, 5099454, 3138885, 51033]:
url, data = dl_image(i)
predictions = sess.run(softmax_tensor, {'DecodeJpeg/contents:0': data})
print(str(float(predictions[0][1])) + " : " + url)
0.8315967321395874 : https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Hindenburgdamm_mit_dem_Sylt_Shuttle.jpg/600px-Hindenburgdamm_mit_dem_Sylt_Shuttle.jpg
0.08722241967916489 : https://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/Kerr_Crappies.jpg/600px-Kerr_Crappies.jpg
0.3135530650615692 : https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/FMIB_51429_Calico_Bass%3B_Strawberry_Bass%3B_Crappy_Pomosix_sparoides.jpeg/600px-FMIB_51429_Calico_Bass%3B_Strawberry_Bass%3B_Crappy_Pomosix_sparoides.jpeg
0.9849708676338196 : https://upload.wikimedia.org/wikipedia/commons/3/32/Barnstar2.PNG
0.74458909034729 : https://upload.wikimedia.org/wikipedia/commons/b/ba/BoNM_Rhodesia.png
# Convert the train to PNG and compare quality
for i in [ 22778309, 19963078, 42643835 ]:
url, jpgdata = dl_image(i)
img = Image.open(BytesIO(jpgdata))
rgb_img = img.convert('RGBA')
bytes = BytesIO()
rgb_img.save(bytes, format='PNG', quality=1.0)
bytes.seek(0)
pngdata = bytes.getvalue()
with tf.Session(config=session_conf) as sess:
softmax_tensor = sess.graph.get_tensor_by_name('final_result:0')
pngpred = sess.run(softmax_tensor, {'DecodeJpeg/contents:0': pngdata})[0][1]
jpgpred = sess.run(softmax_tensor, {'DecodeJpeg/contents:0': jpgdata})[0][1]
print("PNG-JPG: " + str(pngpred-jpgpred))
PNG-JPG: -0.008716404
PNG-JPG: -0.0075169355
PNG-JPG: 0.006497085