mirror of
https://github.com/serengil/deepface.git
synced 2025-06-07 03:55:21 +00:00
version 0.0.52
This commit is contained in:
parent
3cd55fcf00
commit
9af7c33ff7
80
api/api.py
80
api/api.py
@ -261,6 +261,86 @@ def verifyWrapper(req, trx_id = 0):
|
||||
|
||||
return resp_obj
|
||||
|
||||
@app.route('/represent', methods=['POST'])
|
||||
def represent():
|
||||
|
||||
global graph
|
||||
|
||||
tic = time.time()
|
||||
req = request.get_json()
|
||||
trx_id = uuid.uuid4()
|
||||
|
||||
resp_obj = jsonify({'success': False})
|
||||
|
||||
if tf_version == 1:
|
||||
with graph.as_default():
|
||||
resp_obj = representWrapper(req, trx_id)
|
||||
elif tf_version == 2:
|
||||
resp_obj = representWrapper(req, trx_id)
|
||||
|
||||
#--------------------------
|
||||
|
||||
toc = time.time()
|
||||
|
||||
resp_obj["trx_id"] = trx_id
|
||||
resp_obj["seconds"] = toc-tic
|
||||
|
||||
return resp_obj, 200
|
||||
|
||||
def representWrapper(req, trx_id = 0):
|
||||
|
||||
resp_obj = jsonify({'success': False})
|
||||
|
||||
#-------------------------------------
|
||||
#find out model
|
||||
|
||||
model_name = "VGG-Face"; distance_metric = "cosine"
|
||||
|
||||
if "model_name" in list(req.keys()):
|
||||
model_name = req["model_name"]
|
||||
|
||||
#-------------------------------------
|
||||
#retrieve images from request
|
||||
|
||||
img = ""
|
||||
if "img" in list(req.keys()):
|
||||
img = req["img"] #list
|
||||
#print("img: ", img)
|
||||
|
||||
validate_img = False
|
||||
if len(img) > 11 and img[0:11] == "data:image/":
|
||||
validate_img = True
|
||||
|
||||
if validate_img != True:
|
||||
print("invalid image passed!")
|
||||
return jsonify({'success': False, 'error': 'you must pass img as base64 encoded string'}), 205
|
||||
|
||||
#-------------------------------------
|
||||
#cal represent function from the interface
|
||||
|
||||
embedding = []
|
||||
if model_name == "VGG-Face":
|
||||
embedding = DeepFace.represent(img, model_name = model_name, model = vggface_model)
|
||||
elif model_name == "Facenet":
|
||||
embedding = DeepFace.represent(img, model_name = model_name, model = facenet_model)
|
||||
elif model_name == "OpenFace":
|
||||
embedding = DeepFace.represent(img, model_name = model_name, model = openface_model)
|
||||
elif model_name == "DeepFace":
|
||||
embedding = DeepFace.represent(img, model_name = model_name, model = deepface_model)
|
||||
elif model_name == "DeepID":
|
||||
embedding = DeepFace.represent(img, model_name = model_name, model = deepid_model)
|
||||
elif model_name == "ArcFace":
|
||||
embedding = DeepFace.represent(img, model_name = model_name, model = arcface_model)
|
||||
else:
|
||||
resp_obj = jsonify({'success': False, 'error': 'You must pass a valid model name. You passed %s' % (model_name)}), 205
|
||||
|
||||
#print("embedding is ", len(embedding)," dimensional vector")
|
||||
resp_obj = {}
|
||||
resp_obj["embedding"] = embedding
|
||||
#-------------------------------------
|
||||
|
||||
return resp_obj
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument(
|
||||
|
File diff suppressed because one or more lines are too long
@ -16,7 +16,7 @@ elif tf_version == 2:
|
||||
from tensorflow.keras.models import Model, Sequential
|
||||
from tensorflow.keras.layers import Convolution2D, Flatten, Activation
|
||||
|
||||
def loadModel():
|
||||
def loadModel(url = 'https://drive.google.com/uc?id=1YCox_4kJ-BYeXq27uUbasu--yz28zUMV'):
|
||||
|
||||
model = VGGFace.baseModel()
|
||||
|
||||
@ -41,7 +41,6 @@ def loadModel():
|
||||
if os.path.isfile(home+'/.deepface/weights/age_model_weights.h5') != True:
|
||||
print("age_model_weights.h5 will be downloaded...")
|
||||
|
||||
url = 'https://drive.google.com/uc?id=1YCox_4kJ-BYeXq27uUbasu--yz28zUMV'
|
||||
output = home+'/.deepface/weights/age_model_weights.h5'
|
||||
gdown.download(url, output, quiet=False)
|
||||
|
||||
|
@ -15,7 +15,7 @@ elif tf_version == 2:
|
||||
from tensorflow.keras.models import Model, Sequential
|
||||
from tensorflow.keras.layers import Conv2D, MaxPooling2D, AveragePooling2D, Flatten, Dense, Dropout
|
||||
|
||||
def loadModel():
|
||||
def loadModel(url = 'https://drive.google.com/uc?id=13iUHHP3SlNg53qSuQZDdHDSDNdBP9nwy'):
|
||||
|
||||
num_classes = 7
|
||||
|
||||
@ -55,7 +55,6 @@ def loadModel():
|
||||
#TO-DO: upload weights to google drive
|
||||
|
||||
#zip
|
||||
url = 'https://drive.google.com/uc?id=13iUHHP3SlNg53qSuQZDdHDSDNdBP9nwy'
|
||||
output = home+'/.deepface/weights/facial_expression_model_weights.zip'
|
||||
gdown.download(url, output, quiet=False)
|
||||
|
||||
@ -66,7 +65,3 @@ def loadModel():
|
||||
model.load_weights(home+'/.deepface/weights/facial_expression_model_weights.h5')
|
||||
|
||||
return model
|
||||
|
||||
#----------------------------
|
||||
|
||||
return 0
|
@ -14,7 +14,7 @@ elif tf_version == 2:
|
||||
from tensorflow.keras.models import Model, Sequential
|
||||
from tensorflow.keras.layers import Convolution2D, Flatten, Activation
|
||||
|
||||
def loadModel():
|
||||
def loadModel(url = 'https://drive.google.com/uc?id=1wUXRVlbsni2FN9-jkS_f4UTUrm1bRLyk'):
|
||||
|
||||
model = VGGFace.baseModel()
|
||||
|
||||
@ -39,7 +39,6 @@ def loadModel():
|
||||
if os.path.isfile(home+'/.deepface/weights/gender_model_weights.h5') != True:
|
||||
print("gender_model_weights.h5 will be downloaded...")
|
||||
|
||||
url = 'https://drive.google.com/uc?id=1wUXRVlbsni2FN9-jkS_f4UTUrm1bRLyk'
|
||||
output = home+'/.deepface/weights/gender_model_weights.h5'
|
||||
gdown.download(url, output, quiet=False)
|
||||
|
||||
|
@ -16,7 +16,7 @@ elif tf_version == 2:
|
||||
from tensorflow.keras.models import Model, Sequential
|
||||
from tensorflow.keras.layers import Convolution2D, Flatten, Activation
|
||||
|
||||
def loadModel():
|
||||
def loadModel(url = 'https://drive.google.com/uc?id=1nz-WDhghGQBC4biwShQ9kYjvQMpO6smj'):
|
||||
|
||||
model = VGGFace.baseModel()
|
||||
|
||||
@ -42,7 +42,6 @@ def loadModel():
|
||||
print("race_model_single_batch.h5 will be downloaded...")
|
||||
|
||||
#zip
|
||||
url = 'https://drive.google.com/uc?id=1nz-WDhghGQBC4biwShQ9kYjvQMpO6smj'
|
||||
output = home+'/.deepface/weights/race_model_single_batch.zip'
|
||||
gdown.download(url, output, quiet=False)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user