model_loader.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. from typing import Dict
  2. from .config import settings
  3. from ..utils.fry_bisenetv2_predictor_V01_250811 import FryBisenetV2Predictor
  4. # 全局的模型预测器字典
  5. predictors: Dict[str, FryBisenetV2Predictor] = {}
  6. def load_models():
  7. print("--- 开始加载卡片识别模型 ---")
  8. for name, config in settings.CARD_MODELS_CONFIG.items():
  9. print(f"... 正在加载模型: {name} ...")
  10. try:
  11. predictor = FryBisenetV2Predictor(
  12. pth_path=config['pth_path'],
  13. real_seg_class_dict=config['class_dict'],
  14. imgSize_train_dict=config['img_size'],
  15. confidence=config['confidence'],
  16. input_channels=config['input_channels']
  17. )
  18. predictors[name] = predictor
  19. print(f"--- 模型 '{name}' 加载成功 ---")
  20. except Exception as e:
  21. print(f"!!! 模型 '{name}' 加载失败: {e} !!!")
  22. def unload_models():
  23. """在应用关闭时清理资源"""
  24. print("... 卸载模型 ...")
  25. predictors.clear()
  26. def get_predictor(name: str) -> FryBisenetV2Predictor:
  27. """获取一个已加载的预测器实例"""
  28. predictor = predictors.get(name)
  29. if not predictor:
  30. raise ValueError(f"模型 '{name}' 不存在或未成功加载。可用模型: {list(predictors.keys())}")
  31. return predictor