Dataset Preparation
- Annotate with Roboflow or LabelImg
- Export in YOLOv8 format
- Data split: 80/10/10 train/val/test
Training
from ultralytics import YOLO
model = YOLO('yolov8n.pt') # nano for fast prototyping
results = model.train(
data='dataset.yaml',
epochs=100,
imgsz=640,
batch=16,
augment=True,
)
ONNX Export for Production
model.export(format='onnx', dynamic=True, simplify=True)
FastAPI Endpoint
@app.post('/detect')
async def detect(file: UploadFile):
img = Image.open(file.file)
results = model(img)
return {'detections': results[0].boxes.json()}