Skip to content

Instantly share code, notes, and snippets.

@nomoa
Created August 23, 2018 14:26
Show Gist options
  • Save nomoa/9afa9134b4bdf6ddd3a402ce2be04c3a to your computer and use it in GitHub Desktop.
Save nomoa/9afa9134b4bdf6ddd3a402ce2be04c3a to your computer and use it in GitHub Desktop.
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment