Initial commit: Wood knot detection model and GUI
This commit is contained in:
39
export_onnx.py
Normal file
39
export_onnx.py
Normal file
@ -0,0 +1,39 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser(description="Export trained RF-DETR to ONNX for deployment.")
|
||||
parser.add_argument("--weights", type=Path, required=True, help="Path to trained checkpoint")
|
||||
parser.add_argument("--output-onnx", type=Path, default=Path("model.onnx"), help="Output ONNX file")
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.weights.exists():
|
||||
raise SystemExit(f"Weights not found: {args.weights}")
|
||||
|
||||
from rfdetr import RFDETRBase
|
||||
|
||||
model = RFDETRBase(pretrain_weights=str(args.weights))
|
||||
|
||||
# Export to ONNX. This saves to the current directory by default, but we can specify.
|
||||
# RF-DETR's export() method saves to 'output/model.onnx' I think, but let's check docs.
|
||||
# From earlier fetch: model.export() saves to 'output' dir.
|
||||
# But to make it flexible, perhaps run it and then move.
|
||||
|
||||
model.export() # This should create output/model.onnx
|
||||
|
||||
# Move to desired location
|
||||
onnx_path = Path("output/model.onnx")
|
||||
if onnx_path.exists():
|
||||
onnx_path.rename(args.output_onnx)
|
||||
print(f"Exported ONNX: {args.output_onnx}")
|
||||
else:
|
||||
raise SystemExit("ONNX export failed - check output/ dir")
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user