main.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. """FastAPI 入口."""
  2. import argparse
  3. import os
  4. import uvicorn
  5. from app import create_app
  6. def main():
  7. parser = argparse.ArgumentParser(description="PTZ 360 scan polling system")
  8. parser.add_argument("--demo", action="store_true", help="Demo mode (no-op currently)")
  9. parser.add_argument("--host", default=os.environ.get("HOST", "0.0.0.0"))
  10. parser.add_argument("--port", type=int, default=int(os.environ.get("PORT", 8000)))
  11. parser.add_argument("--model", default=None, help="Path to detection model")
  12. parser.add_argument(
  13. "--model-size", default=None, choices=["n", "s", "m", "l", "x"],
  14. help="YOLO11 model size",
  15. )
  16. parser.add_argument("--no-gpu", action="store_true", help="Disable GPU/NPU")
  17. args = parser.parse_args()
  18. # Forward model args to detection config when provided
  19. if args.model or args.model_size or args.no_gpu:
  20. from config import detection
  21. if args.model:
  22. detection.DETECTION_CONFIG["model_path"] = args.model
  23. if args.model_size:
  24. detection.DETECTION_CONFIG["model_size"] = args.model_size
  25. if args.no_gpu:
  26. detection.DETECTION_CONFIG["use_gpu"] = False
  27. app = create_app()
  28. uvicorn.run(app, host=args.host, port=args.port)
  29. if __name__ == "__main__":
  30. main()