起初使用yolov11和deepface效果不太理想,后来使用chatGPT得到insightface效果很好,得到以下测试代码 分享。




import os
import cv2
import numpy as np
import insightface
import base64
from flask import Flask, request, jsonify
from werkzeug.utils import secure_filename
import json
from flask_cors import CORS
# 读取配置文件
with open("config.json", "r") as config_file:
    config = json.load(config_file)
# 提取配置参数
MODELS = config["models"]
FACE_CONFIDENCE_THRESHOLD = config["face_confidence_threshold"]
MIN_FACE_SIZE = config["min_face_size"]
SERVER_CONFIG = config["server"]
# 初始化 Flask 服务器
app = Flask(__name__)
CORS(app)
app.config['UPLOAD_FOLDER'] = 'uploads'
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
# 加载 InsightFace 模型
model = insightface.app.FaceAnalysis(name='buffalo_l')
model.prepare(ctx_id=-1)  # 使用 CPU,若有 GPU 可改为 ctx_id=0
def decode_base64_image(base64_string):
    try:
        if "data:image" in base64_string:
            encoded_data = base64_string.split(",")[1]
        else:
            encoded_data = base64_string
        decoded_data = base64.b64decode(encoded_data)
        np_arr = np.frombuffer(decoded_data, np.uint8)
        img = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)
        return img
    except Exception as e:
        return None
@app.route('/detect', methods=['POST'])
def detect():
    if 'image_type' in request.form and request.form['image_type'] == 'BASE64':
        img = decode_base64_image(request.form['image'])
    else:
        file = request.files['image']
        filename = secure_filename(file.filename)
        filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
        file.save(filepath)
        img = cv2.imread(filepath)
        os.remove(filepath)
    if img is None:
        return jsonify({'error': 'Invalid image file'}), 400
    # 进行人脸检测
    faces = model.get(img)
    results = []
    for face in faces:
        gender = 'Male' if face.gender == 1 else 'Female'
        results.append({'gender': gender, 'bbox': face.bbox.astype(int).tolist()})
    return jsonify({'faces': results})
if __name__ == '__main__':
    app.run(
        host=SERVER_CONFIG["host"],
        port=SERVER_CONFIG["port"],
        debug=SERVER_CONFIG["debug"]
    )

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注