ana-bernal commited on
Commit
2ed5309
·
1 Parent(s): 10618ca

Started develop API. Upload images for ex. and upload model.

Browse files
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ *.keras
app.py ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+
3
+ # For loading files
4
+ from joblib import dump, load
5
+
6
+ # Model hub
7
+ import tensorflow_hub as hub
8
+
9
+ # Neural networks
10
+ import tensorflow as tf
11
+ from tensorflow import keras
12
+ from tensorflow.keras import layers
13
+ from keras.applications.vgg16 import preprocess_input
14
+
15
+ # Image processing
16
+ import PIL
17
+
18
+ #------------------------------------------
19
+
20
+ # Loading files
21
+ path = './trained_models/'
22
+ filename_model_VGG16 = 'vgg16_best.keras'
23
+ example_images_path = './example_images'
24
+
25
+ # Loading model
26
+ model = keras.models.load_model(path + filename_model_VGG16)
27
+
28
+ # Defining parameters
29
+ breed_names_norm = [Chihuahua, papillon, beagle,
30
+ Yorkshire_terrier, Australian_terrier,
31
+ Scotch_terrier, golden_retriever,
32
+ malinois, kelpie, Doberman, miniature_pinscher,
33
+ Great_Dane, Pomeranian, standard_poodle, Mexican_hairless]
34
+
35
+
36
+ # Importing stopwords
37
+ with open('./stopwords/stopwords.txt') as file:
38
+ my_stopwords = {line.rstrip() for line in file}
39
+
40
+ # Function definitions
41
+
42
+ def load_img_path(img_path, target_size, show=False):
43
+ """
44
+ Loads an image in jpg format into PIL format from a path.
45
+ """
46
+ img = keras.preprocessing.image.load_img(
47
+ img_path, target_size=target_size
48
+ )
49
+ if show == True:
50
+ img.show()
51
+
52
+ return img
53
+
54
+ def predict(model, img, show=False):
55
+ """
56
+ Returns a dictionnary: predicted_breeds, where the
57
+ keys are [1,2,3] for the first, second and third more probable
58
+ breed for the dog image. Each value is a dictionnary with keys
59
+ ['idx', 'name', 'confidence'] and their corresponding values.
60
+
61
+ Parameters:
62
+ img: returned by the function load_img_path
63
+ """
64
+ img_array = keras.preprocessing.image.img_to_array(img)
65
+ img_array = tf.expand_dims(img_array, 0) # Creates a batch axis
66
+
67
+ predictions = model.predict(img_array, verbose=0)
68
+ scores = predictions[0]
69
+
70
+ # Keep the 3 more probable breeds
71
+ predicted_breeds = {}
72
+ for i in [1,2,3]:
73
+ idx = scores.argsort()[-i] # First breed is the last proba when sorted
74
+ name = breed_names_norm[idx]
75
+ confidence = round(scores[idx]*100,2)
76
+ predicted_breeds[i] = {'idx':idx,'name':name,'confidence':confidence}
77
+
78
+ return predicted_breeds
79
+
80
+ # --------------------------------------------------
81
+
82
+ examples = [
83
+ ["Jquery/Javascript Opacity animation with scroll <p>I'm looking to change the opacity on an object (and have the transition be animated) based on a users scroll.\nexample(http://davegamache.com/)</p>\n\n<p>I've searched everywhere\nlike here, but it ends up pointing me to the waypoints plugin (http://stackoverflow.com/questions/6316757/opacity-based-on-scroll-position)</p>\n\n<p>I've implemented the [waypoints][1] plugin and have the object fading once it's higher than 100px. [Using the offet attribute] but would like to basically control the opacity of an object and have the animation be visible like the above example.</p>\n\n<p>I've searched all over- this is my last resort.\nAny help is greatly appreciated.</p>\n"],
84
+ ['Setting cross-domain cookies in Safari <p>I have to call domain A.com (which sets the cookies with http) from domain B.com.\nAll I do on domain B.com is (javascript): </p>\n\n<pre><code>var head = document.getElementsByTagName("head")[0];\nvar script = document.createElement("script");\nscript.src = "A.com/setCookie?cache=1231213123";\nhead.appendChild(script);\n</code></pre>\n\n<p>This sets the cookie on A.com on every browser I\'ve tested, except Safari.\nAmazingly this works in IE6, even without the P3P headers.</p>\n\n<p>Is there any way to make this work in Safari?</p>\n'],
85
+ ['Database migrations for SQL Server <p>I need a database migration framework for SQL Server, capable of managing both schema changes and data migrations.</p>\n\n<p>I guess I am looking for something similar to django\'s <a href="http://south.aeracode.org/" rel="noreferrer">South</a> framework here.</p>\n\n<p>Given the fact that South is tightly coupled with django\'s ORM, and the fact that there\'s so many ORMs for SQL Server I guess having just a generic migration framework, enabling you to write and execute in controlled and sequential manner SQL data/schema change scripts should be sufficient.</p>\n'],
86
+ ]
87
+
88
+ demo = gr.Interface(fn=tag_suggestion,
89
+ inputs="text",
90
+ outputs=["text"],
91
+ examples=examples)
92
+
93
+
94
+ if __name__ == "__main__":
95
+ demo.launch()
96
+
example_images/01_test.jpg ADDED
example_images/02_test.jpg ADDED
example_images/03_test.jpg ADDED
example_images/04_test.jpg ADDED
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ gradio
2
+ joblib
3
+ tensorflow
4
+ tensorflow_hub
5
+ scikit-learn