got detection somewhat working
This commit is contained in:
parent
40d30115bf
commit
c75b2b27f0
10 changed files with 500 additions and 56 deletions
|
|
@ -7,6 +7,7 @@ Subcommands (all take a positional boss name):
|
|||
runs kulemak List training runs + metrics table
|
||||
annotate kulemak [dir] Launch annotation GUI
|
||||
prelabel kulemak [dir] [--model boss-kulemak] Auto-label unlabeled images
|
||||
export kulemak [--imgsz 640] Export .pt to ONNX format
|
||||
"""
|
||||
|
||||
import argparse
|
||||
|
|
@ -291,6 +292,32 @@ def cmd_prelabel(args):
|
|||
_PRELABEL_MODEL_DEFAULT = "__auto__"
|
||||
|
||||
|
||||
# ── export ──────────────────────────────────────────────────────
|
||||
def cmd_export(args):
|
||||
"""Export .pt model to .onnx format for ONNX Runtime inference."""
|
||||
boss = args.boss
|
||||
model_name = f"boss-{boss}"
|
||||
pt_path = os.path.join(MODELS_DIR, f"{model_name}.pt")
|
||||
|
||||
if not os.path.exists(pt_path):
|
||||
print(f"Model not found: {pt_path}")
|
||||
return
|
||||
|
||||
from ultralytics import YOLO
|
||||
model = YOLO(pt_path)
|
||||
|
||||
print(f"Exporting {pt_path} -> ONNX (imgsz={args.imgsz})...")
|
||||
model.export(format="onnx", imgsz=args.imgsz, opset=17, simplify=True, dynamic=False)
|
||||
|
||||
# ultralytics writes the .onnx next to the .pt file
|
||||
onnx_src = os.path.join(MODELS_DIR, f"{model_name}.onnx")
|
||||
if os.path.exists(onnx_src):
|
||||
size_mb = os.path.getsize(onnx_src) / (1024 * 1024)
|
||||
print(f"\nExported: {onnx_src} ({size_mb:.1f} MB)")
|
||||
else:
|
||||
print(f"\nWarning: expected output not found at {onnx_src}")
|
||||
|
||||
|
||||
# ── CLI ──────────────────────────────────────────────────────────
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
|
|
@ -315,10 +342,10 @@ def main():
|
|||
p = sub.add_parser("train", help="Train YOLO model")
|
||||
p.add_argument("boss", help="Boss name (e.g. kulemak)")
|
||||
p.add_argument("--data", default=None, help="Path to data.yaml")
|
||||
p.add_argument("--model", default="yolo11s", help="YOLO model variant")
|
||||
p.add_argument("--model", default="yolo11n", help="YOLO model variant")
|
||||
p.add_argument("--epochs", type=int, default=200, help="Training epochs")
|
||||
p.add_argument("--imgsz", type=int, default=1280, help="Image size")
|
||||
p.add_argument("--batch", type=int, default=8, help="Batch size")
|
||||
p.add_argument("--imgsz", type=int, default=640, help="Image size")
|
||||
p.add_argument("--batch", type=int, default=16, help="Batch size")
|
||||
p.add_argument("--device", default="0", help="CUDA device")
|
||||
p.add_argument("--name", default=None, help="Run name (auto-increments if omitted)")
|
||||
|
||||
|
|
@ -333,6 +360,11 @@ def main():
|
|||
p.add_argument("--model", default=_PRELABEL_MODEL_DEFAULT, help="Model name in models/ (default: boss-{boss})")
|
||||
p.add_argument("--conf", type=float, default=0.20, help="Confidence threshold")
|
||||
|
||||
# export
|
||||
p = sub.add_parser("export", help="Export .pt model to ONNX format")
|
||||
p.add_argument("boss", help="Boss name (e.g. kulemak)")
|
||||
p.add_argument("--imgsz", type=int, default=640, help="Image size for export")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.command is None:
|
||||
|
|
@ -345,6 +377,7 @@ def main():
|
|||
"train": cmd_train,
|
||||
"runs": cmd_runs,
|
||||
"prelabel": cmd_prelabel,
|
||||
"export": cmd_export,
|
||||
}
|
||||
commands[args.command](args)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue