##你的函数中参数传错了,而且你并没有返回计算相似度的结果。我没有你的模型,用的自己的计算可以正常返回
修改后的你试一下。有问题再看下
# -*- coding: utf-8 -*-
import json
import cv2
from PIL import Image
import numpy as np
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from modelscope.outputs import OutputKeys
from flask import request
from flask import jsonify
from flask import Flask,make_response
import base64
face_recognition = pipeline(Tasks.face_recognition, model='damo/cv_ir101_facerecognition_cfglint')
def face_recognition(image1,image2):
get_img1 = image1
get_img2 = image2
emb1 = face_recognition(get_img1)[OutputKeys.IMG_EMBEDDING]
emb2 = face_recognition(get_img2)[OutputKeys.IMG_EMBEDDING]
sim = np.dot(emb1[0], emb2[0])
return (f'Face cosine similarity={sim:.3f}, get_img1:{get_img1} get_img2:{get_img2}')
app = Flask(__name__)
@app.route("/",methods=["POST"])
def first_post():
my_json = {"msg": None
}
data = request.get_data()
if not data:
my_json["msg"] = "No data obtained!"
return jsonify(msg="缺少参数")
try:
data=json.loads(data)
image1=data["image1"].encode()
image2=data["image2"].encode()
return face_recognition(image1,image2)
except Exception as e:
print(e)
return jsonify(msg="出错了,请查看是否正确访问")
if __name__ == "__main__":
app.run(host='0.0.0.0', port=6000, debug=True, use_reloader=False)
api文件
import os
import sys
import time
import json
import base64
import requests
url = "http://0.0.0.0:6000"
base64_data=None
base64_data = base64.b64encode(base64_data,encoding="utf-8")
base64_data = base64_data.decode()
data={
'image1':None,
'image2':None
}
start_time = time.time()
response = requests.post(url, data=json.dumps(data))
end_time = time.time()
print("time:", end_time-start_time)
print(response.text)