edge-sign / src /quantize_and_export_ocr.py
gyann's picture
Deploy Edge-Sign (Direction A redesign) โ€” detection+tracking+recognition+Q&A
76ec265 verified
Raw
History Blame Contribute Delete
1.35 kB
from pathlib import Path
from onnxruntime.quantization import QuantType, quantize_dynamic
# Paths
BASE_DIR = Path(__file__).parent.parent
MODEL_DIR = BASE_DIR / "models"
ONNX_PATH = MODEL_DIR / "korean_ocr.onnx"
QUANT_ONNX_PATH = MODEL_DIR / "korean_ocr_quant.onnx"
def main():
if not ONNX_PATH.exists():
print(f"Error: ONNX model not found at {ONNX_PATH}. Run training first.")
return
print("Checking original ONNX model...")
original_size = ONNX_PATH.stat().st_size / 1024 / 1024
print(f"Original ONNX Model Size: {original_size:.2f} MB")
print("\nApplying W8A8 Dynamic Quantization...")
# Apply dynamic quantization (weights to uint8, activations to float32 dynamically)
# This is highly effective for reducing model size for deployment on CPUs/WebGL.
quantize_dynamic(
model_input=str(ONNX_PATH), model_output=str(QUANT_ONNX_PATH), weight_type=QuantType.QUInt8
)
print("\nQuantization complete.")
quantized_size = QUANT_ONNX_PATH.stat().st_size / 1024 / 1024
print(f"Quantized ONNX Model Size: {quantized_size:.2f} MB")
compression_ratio = original_size / quantized_size
print(f"Compression Ratio: {compression_ratio:.2f}x")
print(f"Quantized model saved to: {QUANT_ONNX_PATH}")
if __name__ == "__main__":
main()