model_loader.py 1.4 KB

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