← All answersAccuracy & training
How do I train YOLO on my own custom dataset?
Short answer
To train YOLO on a custom dataset: label your images in YOLO format, organise them into train/val folders, write a data.yaml describing the paths and class names, then call model.train() starting from a pretrained checkpoint. Validate and export when the metrics look right.
1. Label your images
Draw boxes and assign classes using a tool like Label Studio, Roboflow, or CVAT, and export in YOLO format. Each image gets a .txt file with one line per object: class x_center y_center width height, all normalised 0-1.
2. Organise the folders
datasets/mydata/
images/train/ images/val/
labels/train/ labels/val/3. Write data.yaml
path: ../datasets/mydata
train: images/train
val: images/val
names:
0: person
1: forklift4. Train from pretrained weights
from ultralytics import YOLO
model = YOLO("yolo11n.pt") # start from pretrained, not scratch
model.train(data="data.yaml", epochs=100, imgsz=640, batch=16)
metrics = model.val() # check mAP before trusting it
model.export(format="onnx") # deploy-ready formatArguments worth knowing
- imgsz: raise to 1280 for small objects; keep 640 for speed.
- epochs: 100 is a reasonable start; use early results to decide if more helps.
- batch: as large as your GPU memory allows; -1 lets Ultralytics auto-pick.
- model size: yolo11n/s for speed, yolo11m/l/x for accuracy.
If accuracy disappoints after training, the fix is almost always in the data, not the training command.
Stuck on this in a real project?
Book a free call and I’ll give you a straight answer on your specific case.
Book a consultation