12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- from flask import Flask, jsonify, request
- import subprocess
- import os
- from watermark_verify.exceptions import BusinessException
- from watermark_verify import verify_tool_mix
- def create_app():
- app = Flask(__name__)
- @app.errorhandler(BusinessException)
- def handle_business_exception(ex):
- """处理业务异常,返回JSON提示"""
- return jsonify({"message": ex.message, 'code': ex.code}), 500
- @app.route("/decrypt_model", methods=['POST'])
- def decrypt_model():
- # TODO 根据工标需要进行HTTP接口开发
- data = request.json
- model_filename = data.get('model_filename') # 模型权重文件位置
- framework = data.get('framework', "pytorch") # 框架类型
- mode = data.get('mode', "blackbox") # 验证模式
- model_type = data.get('model_type', "yolox") # 模型类型
- result = verify_tool_mix.label_verification(model_filename=model_filename, framework=framework, mode=mode, model_type=model_type)
- print(f"模型水印检测结果: {result}")
- return jsonify({"result": result})
-
- @app.route("/verify_tool_accuracy_test", methods=['POST'])
- def verify_tool_accuracy():
- """
- 在接口中执行模型水印验证脚本。
- 参数:
- base_path: 根路径(替代 $BASE_PATH)
- 返回:
- dict,包含返回码、stdout、stderr
- """
- data = request.json
- base_path = data.get('base_path')
- script_path = os.path.join(base_path, "code/model_watermark_detect/tests/verify_tool_accuracy_test.py")
- target_dir = os.path.join(base_path, "checkpoints/pytorch-yolox-blackbox/onnx")
- env = os.environ.copy()
- env["PYTHONPATH"] = os.path.join(base_path, "code/model_watermark_detect")
- cmd = [
- "python",
- script_path,
- "--target_dir", target_dir,
- "--except_result", "True",
- "--framework", "pytorch",
- "--mode", "blackbox",
- "--model_type", "yolox"
- ]
- print("[INFO] 正在执行命令:", " ".join(cmd))
- result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding="utf-8", env=env)
- return jsonify({
- "returncode": result.returncode,
- "stdout": result.stdout,
- "stderr": result.stderr
- })
- return app
|