geetu040 commited on
Commit
e577af3
·
1 Parent(s): 4f31510

Added Face Analytics

Browse files
.gitignore CHANGED
@@ -3,6 +3,7 @@
3
  /src/base/__pycache__
4
  /src/book_rec/__pycache__
5
  /src/cat_and_dog/__pycache__
 
6
  /src/movie_rec/__pycache__
7
  /src/movie_2022_rec/__pycache__
8
  /src/movie_reviews/__pycache__
 
3
  /src/base/__pycache__
4
  /src/book_rec/__pycache__
5
  /src/cat_and_dog/__pycache__
6
+ /src/face_analytics/__pycache__
7
  /src/movie_rec/__pycache__
8
  /src/movie_2022_rec/__pycache__
9
  /src/movie_reviews/__pycache__
main.py CHANGED
@@ -3,6 +3,7 @@ from fastapi import FastAPI
3
  # Importing Models and Schemas
4
  from src.movie_reviews.main import movie_reviews, Schema as MovieReviewsSchema
5
  from src.cat_and_dog.main import cat_and_dog, Schema as CatAndDogSchema
 
6
  from src.book_rec.main import book_rec, Schema as BookRecSchema
7
  from src.movie_rec.main import movie_rec, Schema as MovieRecSchema
8
  from src.movie_2022_rec.main import movie_2022_rec, Schema as Movie2022RecSchema
@@ -42,6 +43,10 @@ def endpoint_movie_reviews(req: MovieReviewsSchema):
42
  def endpoint_cat_and_dog(req: CatAndDogSchema):
43
  return cat_and_dog(req)
44
 
 
 
 
 
45
  @app.post("/book_rec")
46
  def endpoint_book_rec(req: BookRecSchema):
47
  return book_rec(req)
 
3
  # Importing Models and Schemas
4
  from src.movie_reviews.main import movie_reviews, Schema as MovieReviewsSchema
5
  from src.cat_and_dog.main import cat_and_dog, Schema as CatAndDogSchema
6
+ from src.face_analytics.main import face_analytics, Schema as FaceAnalytics
7
  from src.book_rec.main import book_rec, Schema as BookRecSchema
8
  from src.movie_rec.main import movie_rec, Schema as MovieRecSchema
9
  from src.movie_2022_rec.main import movie_2022_rec, Schema as Movie2022RecSchema
 
43
  def endpoint_cat_and_dog(req: CatAndDogSchema):
44
  return cat_and_dog(req)
45
 
46
+ @app.post("/face_analytics")
47
+ def endpoint_face_analytics(req: CatAndDogSchema):
48
+ return face_analytics(req)
49
+
50
  @app.post("/book_rec")
51
  def endpoint_book_rec(req: BookRecSchema):
52
  return book_rec(req)
src/cat_and_dog/main.py CHANGED
@@ -37,4 +37,7 @@ def predict(img_data, img_url):
37
  img = img / 255.
38
  pred = model.predict(img)[0, 0]
39
  pred = float(pred)
40
- return [round(1-pred, 3), round(pred, 3)]
 
 
 
 
37
  img = img / 255.
38
  pred = model.predict(img)[0, 0]
39
  pred = float(pred)
40
+
41
+ return [
42
+ [round(1-pred, 3), round(pred, 3)],
43
+ ]
src/face_analytics/main.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import tensorflow as tf
3
+ import io, base64, requests
4
+ from pydantic import BaseModel
5
+
6
+ # SCHEMA
7
+ class Schema(BaseModel):
8
+ resized_img_base64:str = None,
9
+ img_url:str = None
10
+
11
+ # Request Handler
12
+ def face_analytics(req):
13
+ resized_img_base64 = req.resized_img_base64
14
+ img_url = req.img_url
15
+ output = predict(resized_img_base64, img_url)
16
+ return output
17
+
18
+ model_path = "./src/face_analytics/model.h5"
19
+ model = tf.keras.models.load_model(model_path)
20
+
21
+ def predict(img_data, img_url):
22
+ if img_url == None:
23
+ content = img_data.replace(" ", "+")
24
+ converted = bytes(content, "utf-8")
25
+ img = base64.decodebytes(converted)
26
+ else:
27
+ img = requests.get(img_url).content
28
+
29
+ img = io.BytesIO(img)
30
+ img = tf.keras.preprocessing.image.load_img(img, target_size=model.input_shape[1:])
31
+ img = np.array(img)
32
+ img = img.reshape(1, *img.shape)
33
+ img = tf.keras.applications.inception_v3.preprocess_input(img)
34
+ pred = model.predict(img)
35
+
36
+ return [[round(j, 3) for j in i] for i in np.hstack([(1-pred).T, pred.T]).tolist()]
37
+ return [
38
+ [0.3, 0.7],
39
+ [0.2, 0.8],
40
+ [0.9, 0.1],
41
+ ]
src/face_analytics/model.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b3f535da515d0b8fd513f410655f4fc6921825ca6511a67d2f5e9a44a211ea18
3
+ size 194103456
src/movie_reviews/main.py CHANGED
@@ -54,7 +54,7 @@ def predict(text):
54
  output = [0, 0]
55
  output[pred] = 0.8
56
  output[1-pred] = 0.2
57
- return output
58
 
59
  def preprocess(text):
60
  text = text.lower() # Lowercase
 
54
  output = [0, 0]
55
  output[pred] = 0.8
56
  output[1-pred] = 0.2
57
+ return [output]
58
 
59
  def preprocess(text):
60
  text = text.lower() # Lowercase