DocLayout-PageNumDet / src /export_onnx.py
wqzh's picture
Upload 31 files
1edc459 verified
Raw History Blame Contribute Delete
1.58 kB
import onnx
from onnxruntime.quantization import quantize_dynamic, QuantType
def export_onnx(
pt_path="models/yolo11-medium-page.pt",
onnx_path="models/yolo11-medium-page.onnx",
imgsz=736,
dynamic=False,
opset=12,
half=False,
):
from ultralytics import YOLO
print(f"Loading PT model: {pt_path}")
model = YOLO(pt_path)
print(f"Exporting to ONNX: {onnx_path}")
model.export(format="onnx", imgsz=imgsz, dynamic=dynamic, opset=opset, half=half)
return onnx_path
def downgrade_ir_v10_to_v9(input_path, output_path):
print(f"Downgrading IR v10 -> v9: {input_path} -> {output_path}")
model = onnx.load(input_path)
model.ir_version = 9
onnx.save(model, output_path)
return output_path
def quantize_model(input_path, output_path):
print(f"Quantizing model: {input_path} -> {output_path}")
quantize_dynamic(
model_input=input_path,
model_output=output_path,
weight_type=QuantType.QUInt8,
)
return output_path
def full_pipeline():
pt_path = "models/yolo11-medium-page-best.pt"
onnx_path = "models/yolo11-medium-page-best.onnx"
ir9_path = "models/yolo11-medium-page-best-ir9.onnx"
quant_path = "models/yolo11-medium-page-best-quant-ir9.onnx"
export_onnx(pt_path, onnx_path)
downgrade_ir_v10_to_v9(onnx_path, ir9_path)
quantize_model(ir9_path, quant_path)
import os
size_mb = os.path.getsize(quant_path) / 1024 / 1024
print(f"Done! Quantized model: {quant_path} ({size_mb:.1f} MB)")
if __name__ == "__main__":
full_pipeline()