user-agent commited on
Commit
ff6bf82
1 Parent(s): e09fed0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -1
app.py CHANGED
@@ -1,16 +1,20 @@
1
  import ast
2
  import json
 
3
  import spaces
4
  import requests
5
  import numpy as np
6
  import gradio as gr
7
  from PIL import Image
8
  from io import BytesIO
 
9
  from turtle import title
10
  from openai import OpenAI
11
  from collections import Counter
12
  from transformers import pipeline
13
 
 
 
14
  client = OpenAI()
15
 
16
  pipe = pipeline("zero-shot-image-classification", model="patrickjohncyh/fashion-clip")
@@ -37,6 +41,7 @@ def shot(input, category):
37
  subColour,mainColour,score = get_colour(ast.literal_eval(str(input)),category)
38
  common_result = get_predicted_attributes(ast.literal_eval(str(input)),category)
39
  openai_parsed_response = get_openAI_tags(ast.literal_eval(str(input)))
 
40
  return {
41
  "colors":{
42
  "main":mainColour,
@@ -44,7 +49,8 @@ def shot(input, category):
44
  "score":round(score*100,2)
45
  },
46
  "attributes":common_result,
47
- "image_mapping":openai_parsed_response
 
48
  }
49
 
50
 
@@ -153,6 +159,43 @@ def get_openAI_tags(image_urls):
153
  response = json.loads(openai_response.choices[0].message.content)
154
  return response
155
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
  # Define the Gradio interface with the updated components
157
  iface = gr.Interface(
158
  fn=shot,
 
1
  import ast
2
  import json
3
+ import base64
4
  import spaces
5
  import requests
6
  import numpy as np
7
  import gradio as gr
8
  from PIL import Image
9
  from io import BytesIO
10
+ import face_recognition
11
  from turtle import title
12
  from openai import OpenAI
13
  from collections import Counter
14
  from transformers import pipeline
15
 
16
+
17
+
18
  client = OpenAI()
19
 
20
  pipe = pipeline("zero-shot-image-classification", model="patrickjohncyh/fashion-clip")
 
41
  subColour,mainColour,score = get_colour(ast.literal_eval(str(input)),category)
42
  common_result = get_predicted_attributes(ast.literal_eval(str(input)),category)
43
  openai_parsed_response = get_openAI_tags(ast.literal_eval(str(input)))
44
+ face_embeddings = get_face_embeddings(ast.literal_eval(str(input)))
45
  return {
46
  "colors":{
47
  "main":mainColour,
 
49
  "score":round(score*100,2)
50
  },
51
  "attributes":common_result,
52
+ "image_mapping":openai_parsed_response,
53
+ "face_embeddings":face_embeddings
54
  }
55
 
56
 
 
159
  response = json.loads(openai_response.choices[0].message.content)
160
  return response
161
 
162
+
163
+ @spaces.GPU
164
+ def get_face_embeddings(image_urls):
165
+ # Initialize a dictionary to store the face encodings or errors
166
+ results = {}
167
+
168
+ # Loop through each image URL
169
+ for index, url in enumerate(image_urls):
170
+ try:
171
+ # Try to download the image from the URL
172
+ response = requests.get(url)
173
+ # Raise an exception if the response is not successful
174
+ response.raise_for_status()
175
+
176
+ # Load the image using face_recognition
177
+ image = face_recognition.load_image_file(BytesIO(response.content))
178
+
179
+ # Get the face encodings for all faces in the image
180
+ face_encodings = face_recognition.face_encodings(image)
181
+
182
+ # If no faces are detected, store an empty list
183
+ if not face_encodings:
184
+ results[index] = []
185
+ else:
186
+ # Otherwise, store the first face encoding as a list
187
+ results[index] = face_encodings[0].tolist()
188
+ except Exception as e:
189
+ # If any error occurs during the download or processing, store the error message
190
+ results[index] = f"Error processing image: {str(e)}"
191
+
192
+ return results
193
+
194
+
195
+
196
+
197
+
198
+
199
  # Define the Gradio interface with the updated components
200
  iface = gr.Interface(
201
  fn=shot,