Initial commit: Wood knot detection model and GUI

This commit is contained in:
2025-12-22 14:11:39 -07:00
commit aed092f09c
20307 changed files with 785367 additions and 0 deletions

39
export_onnx.py Normal file
View 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())