mirror of
https://github.com/YaoFANGUK/video-subtitle-remover.git
synced 2026-05-07 18:27:29 +08:00
初步支持 macOS (Apple Silicon)
升级至PP-OCRv5 Tested with Python 3.13 感谢用户 "期望" 提供的macOS设备用于开发测试
This commit is contained in:
@@ -10,54 +10,13 @@ class ModelConfig:
|
||||
self.STTN_DET_MODEL_PATH = os.path.join(BASE_DIR, 'models', 'sttn-det', 'sttn.pth')
|
||||
self.PROPAINTER_MODEL_DIR = os.path.join(BASE_DIR,'models', 'propainter')
|
||||
if config.subtitleDetectMode.value == SubtitleDetectMode.Fast:
|
||||
self.DET_MODEL_DIR = os.path.join(BASE_DIR,'models', 'V4', 'ch_det_fast')
|
||||
self.DET_MODEL_DIR = os.path.join(BASE_DIR,'models', 'V5', 'ch_det_fast')
|
||||
elif config.subtitleDetectMode.value == SubtitleDetectMode.Accurate:
|
||||
self.DET_MODEL_DIR = os.path.join(BASE_DIR, 'models', 'V4', 'ch_det')
|
||||
self.DET_MODEL_DIR = os.path.join(BASE_DIR, 'models', 'V5', 'ch_det')
|
||||
else:
|
||||
raise ValueError(f"Invalid subtitle detect mode: {config.subtitleDetectMode.value}")
|
||||
|
||||
merge_big_file_if_not_exists(self.LAMA_MODEL_DIR, 'bit-lama.pt')
|
||||
merge_big_file_if_not_exists(self.PROPAINTER_MODEL_DIR, 'ProPainter.pth')
|
||||
merge_big_file_if_not_exists(self.DET_MODEL_DIR, 'inference.pdiparams')
|
||||
|
||||
def convertToOnnxModelIfNeeded(self, model_dir, model_filename="inference.pdmodel", params_filename="inference.pdiparams", opset_version=14):
|
||||
"""Converts a Paddle model to ONNX if ONNX providers are available and the model does not already exist."""
|
||||
|
||||
onnx_model_path = os.path.join(model_dir, "model.onnx")
|
||||
|
||||
if os.path.exists(onnx_model_path):
|
||||
print(f"ONNX model already exists: {onnx_model_path}. Skipping conversion.")
|
||||
return onnx_model_path
|
||||
|
||||
print(f"Converting Paddle model {model_dir} to ONNX...")
|
||||
model_file = os.path.join(model_dir, model_filename)
|
||||
params_file = os.path.join(model_dir, params_filename) if params_filename else ""
|
||||
|
||||
try:
|
||||
import paddle2onnx
|
||||
# Ensure the target directory exists
|
||||
os.makedirs(os.path.dirname(onnx_model_path), exist_ok=True)
|
||||
|
||||
# Convert and save the model
|
||||
onnx_model = paddle2onnx.export(
|
||||
model_filename=model_file,
|
||||
params_filename=params_file,
|
||||
save_file=onnx_model_path,
|
||||
opset_version=opset_version,
|
||||
auto_upgrade_opset=True,
|
||||
verbose=True,
|
||||
enable_onnx_checker=True,
|
||||
enable_experimental_op=True,
|
||||
enable_optimize=True,
|
||||
custom_op_info={},
|
||||
deploy_backend="onnxruntime",
|
||||
calibration_file="calibration.cache",
|
||||
external_file=os.path.join(model_dir, "external_data"),
|
||||
export_fp16_model=False,
|
||||
)
|
||||
|
||||
print(f"Conversion successful. ONNX model saved to: {onnx_model_path}")
|
||||
return onnx_model_path
|
||||
except Exception as e:
|
||||
print(f"Error during conversion: {e}")
|
||||
return model_dir
|
||||
merge_big_file_if_not_exists(self.DET_MODEL_DIR, 'inference.onnx')
|
||||
|
||||
Reference in New Issue
Block a user