1. CV项目的一般流程
数据很重要,在框架一定的基础上,决定了模型的准确度和最终效果;
2. 数据集制作的一般流程:
3. YOLO框架选择
3.1背景
3.2选择依据
*最新的YOLO11性能很强大---GPU平台没问题;
*yolov5很多嵌入式边缘计算平台提供官方支持(转换器),移植应用方便,RK/AW/昇腾......
3.3 官方在线文档:
快速入门 -Ultralytics YOLO 文档
4. 常见的数据集(格式)介绍
4.1 YOLO官方数据集(TXT格式标注文件),参考COCO8
数据集说明文件coco8.yaml
# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8/
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8 ← downloads here (1 MB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)
# Classes
names:
0: person
1: bicycle
2: car
3: motorcycle
4: airplane
5: bus
6: train
7: truck
8: boat
9: traffic light
10: fire hydrant
11: stop sign
12: parking meter
13: bench
14: bird
15: cat
16: dog
17: horse
18: sheep
19: cow
20: elephant
21: bear
22: zebra
23: giraffe
24: backpack
25: umbrella
26: handbag
27: tie
28: suitcase
29: frisbee
30: skis
31: snowboard
32: sports ball
33: kite
34: baseball bat
35: baseball glove
36: skateboard
37: surfboard
38: tennis racket
39: bottle
40: wine glass
41: cup
42: fork
43: knife
44: spoon
45: bowl
46: banana
47: apple
48: sandwich
49: orange
50: broccoli
51: carrot
52: hot dog
53: pizza
54: donut
55: cake
56: chair
57: couch
58: potted plant
59: bed
60: dining table
61: toilet
62: tv
63: laptop
64: mouse
65: remote
66: keyboard
67: cell phone
68: microwave
69: oven
70: toaster
71: sink
72: refrigerator
73: book
74: clock
75: vase
76: scissors
77: teddy bear
78: hair drier
79: toothbrush
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip
coco8数据集文件:
实例:
4.2 PASCAL VOC数据集:
# Ultralytics YOLO 🚀, AGPL-3.0 license
# PASCAL VOC dataset http://host.robots.ox.ac.uk/pascal/VOC by University of Oxford
# Documentation: # Documentation: https://docs.ultralytics.com/datasets/detect/voc/
# Example usage: yolo train data=VOC.yaml
# parent
# ├── ultralytics
# └── datasets
# └── VOC ← downloads here (2.8 GB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/VOC
train: # train images (relative to 'path') 16551 images
- images/train2012
- images/train2007
- images/val2012
- images/val2007
val: # val images (relative to 'path') 4952 images
- images/test2007
test: # test images (optional)
- images/test2007
# Classes
names:
0: aeroplane
1: bicycle
2: bird
3: boat
4: bottle
5: bus
6: car
7: cat
8: chair
9: cow
10: diningtable
11: dog
12: horse
13: motorbike
14: person
15: pottedplant
16: sheep
17: sofa
18: train
19: tvmonitor
# Download script/URL (optional) ---------------------------------------------------------------------------------------
download: |
import xml.etree.ElementTree as ET
from tqdm import tqdm
from ultralytics.utils.downloads import download
from pathlib import Path
def convert_label(path, lb_path, year, image_id):
def convert_box(size, box):
dw, dh = 1. / size[0], 1. / size[1]
x, y, w, h = (box[0] + box[1]) / 2.0 - 1, (box[2] + box[3]) / 2.0 - 1, box[1] - box[0], box[3] - box[2]
return x * dw, y * dh, w * dw, h * dh
in_file = open(path / f'VOC{year}/Annotations/{image_id}.xml')
out_file = open(lb_path, 'w')
tree = ET.parse(in_file)
root = tree.getroot()
size = root.find('size')
w = int(size.find('width').text)
h = int(size.find('height').text)
names = list(yaml['names'].values()) # names list
for obj in root.iter('object'):
cls = obj.find('name').text
if cls in names and int(obj.find('difficult').text) != 1:
xmlbox = obj.find('bndbox')
bb = convert_box((w, h), [float(xmlbox.find(x).text) for x in ('xmin', 'xmax', 'ymin', 'ymax')])
cls_id = names.index(cls) # class id
out_file.write(" ".join(str(a) for a in (cls_id, *bb)) + '\n')
# Download
dir = Path(yaml['path']) # dataset root dir
url = 'https://github.com/ultralytics/assets/releases/download/v0.0.0/'
urls = [f'{url}VOCtrainval_06-Nov-2007.zip', # 446MB, 5012 images
f'{url}VOCtest_06-Nov-2007.zip', # 438MB, 4953 images
f'{url}VOCtrainval_11-May-2012.zip'] # 1.95GB, 17126 images
download(urls, dir=dir / 'images', curl=True, threads=3, exist_ok=True) # download and unzip over existing paths (required)
# Convert
path = dir / 'images/VOCdevkit'
for year, image_set in ('2012', 'train'), ('2012', 'val'), ('2007', 'train'), ('2007', 'val'), ('2007', 'test'):
imgs_path = dir / 'images' / f'{image_set}{year}'
lbs_path = dir / 'labels' / f'{image_set}{year}'
imgs_path.mkdir(exist_ok=True, parents=True)
lbs_path.mkdir(exist_ok=True, parents=True)
with open(path / f'VOC{year}/ImageSets/Main/{image_set}.txt') as f:
image_ids = f.read().strip().split()
for id in tqdm(image_ids, desc=f'{image_set}{year}'):
f = path / f'VOC{year}/JPEGImages/{id}.jpg' # old img path
lb_path = (lbs_path / f.name).with_suffix('.txt') # new label path
f.rename(imgs_path / f.name) # move image
convert_label(path, lb_path, year, id) # convert labels to YOLO format
5. 标注工具选择
5.1 流程参考:
基于 YOLOv8 的自定义数据集训练
5.2 矩形框标注(无定向)
LabelImg
环境安装
1)WINDOWS安装python3.9以上版本
2)安装LabelImg包
pip install LabelImg
运行:
5.3 定向框(OBB)标注
先pip安装labelImg
git下载roLabelImg
GitHub - cgvict/roLabelImg: Label Rotated Rect On Images for training
解压后在目录下运行
.....\roLabelImg-master>python roLabelImg.py
running with lxml.etree
libpng warning: iCCP: known incorrect sRGB profile
快捷键:
5.4 OBB运行推理效果:
yolo obb predict model=yolo11n-obb.pt source='https://ultralytics.com/images/boats.jpg'
原图:
标注结果(predict):
OBB数据集训练的要求说明:
OBB -Ultralytics YOLO 文档
数据集要求:
定向边框方框 (OBB) 数据集概述 -Ultralytics YOLO 文档
目前,Ultralytics 支持以下用于 OBB 训练的数据集:
- DOTA-v1:DOTA 数据集的第一个版本,提供了一套全面的航空图像,并带有用于物体检测的定向边界框。
- DOTA-v1.5:DOTA 数据集的中间版本,与 DOTA-v1 相比提供了更多注释和改进,用于增强物体检测任务。
- DOTA-v2:该数据集包括 170 万个带定向边界框的实例和 11 268 幅图像,主要侧重于航空物体检测。
- DOTA8:DOTA 数据集中较小的 8 幅图像子集,用于测试和持续集成 (CI) 检查。
DOTA8可以用来测试训练环境, DOTA8.yaml说明:
# Ultralytics YOLO 🚀, AGPL-3.0 license
# DOTA8 dataset 8 images from split DOTAv1 dataset by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/obb/dota8/
# Example usage: yolo train model=yolov8n-obb.pt data=dota8.yaml
# parent
# ├── ultralytics
# └── datasets
# └── dota8 ← downloads here (1MB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/dota8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
# Classes for DOTA 1.0
names:
0: plane
1: ship
2: storage tank
3: baseball diamond
4: tennis court
5: basketball court
6: ground track field
7: harbor
8: bridge
9: large vehicle
10: small vehicle
11: helicopter
12: roundabout
13: soccer ball field
14: swimming pool
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/dota8.zip
6. 数据集测试确认:
6.1 coco8.yaml
~/yolo11/ultralytics$ yolo detect train data=coco8.yaml model=yolo11n.pt epochs=10 imgsz=640
Downloading https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n.pt to 'yolo11n.pt'...
100%|█████████████████████████████████████| 5.35M/5.35M [00:02<00:00, 1.95MB/s]
New https://pypi.org/project/ultralytics/8.3.53 available 😃 Update with 'pip install -U ultralytics'
Ultralytics 8.3.52 🚀 Python-3.9.21 torch-2.5.1+cu124 CPU (Intel Xeon E5-2673 v3 2.40GHz)
engine/trainer: task=detect, mode=train, model=yolo11n.pt, data=coco8.yaml, epochs=10, time=None, patience=100, batch=16, imgsz=640, save=True, save_period=-1, cache=False, device=None, workers=8, project=None, name=train, exist_ok=False, pretrained=True, optimizer=auto, verbose=True, seed=0, deterministic=True, single_cls=False, rect=False, cos_lr=False, close_mosaic=10, resume=False, amp=True, fraction=1.0, profile=False, freeze=None, multi_scale=False, overlap_mask=True, mask_ratio=4, dropout=0.0, val=True, split=val, save_json=False, save_hybrid=False, conf=None, iou=0.7, max_det=300, half=False, dnn=False, plots=True, source=None, vid_stride=1, stream_buffer=False, visualize=False, augment=False, agnostic_nms=False, classes=None, retina_masks=False, embed=None, show=False, save_frames=False, save_txt=False, save_conf=False, save_crop=False, show_labels=True, show_conf=True, show_boxes=True, line_width=None, format=torchscript, keras=False, optimize=False, int8=False, dynamic=False, simplify=True, opset=None, workspace=None, nms=False, lr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=7.5, cls=0.5, dfl=1.5, pose=12.0, kobj=1.0, nbs=64, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, bgr=0.0, mosaic=1.0, mixup=0.0, copy_paste=0.0, copy_paste_mode=flip, auto_augment=randaugment, erasing=0.4, crop_fraction=1.0, cfg=None, tracker=botsort.yaml, save_dir=runs/detect/train
Dataset 'coco8.yaml' images not found ⚠️, missing path '/home/userroot/yolo11/datasets/coco8/images/val'
Downloading https://ultralytics.com/assets/coco8.zip to '/home/userroot/yolo11/datasets/coco8.zip'...
⚠️ Download failure, retrying 1/3 https://ultralytics.com/assets/coco8.zip...
######################################################################## 100.0%
Unzipping /home/userroot/yolo11/datasets/coco8.zip to /home/userroot/yolo11/dat
Dataset download success ✅ (263.4s), saved to /home/userroot/yolo11/datasets
from n params module arguments
0 -1 1 464 ultralytics.nn.modules.conv.Conv [3, 16, 3, 2]
1 -1 1 4672 ultralytics.nn.modules.conv.Conv [16, 32, 3, 2]
2 -1 1 6640 ultralytics.nn.modules.block.C3k2 [32, 64, 1, False, 0.25]
3 -1 1 36992 ultralytics.nn.modules.conv.Conv [64, 64, 3, 2]
4 -1 1 26080 ultralytics.nn.modules.block.C3k2 [64, 128, 1, False, 0.25]
5 -1 1 147712 ultralytics.nn.modules.conv.Conv [128, 128, 3, 2]
6 -1 1 87040 ultralytics.nn.modules.block.C3k2 [128, 128, 1, True]
7 -1 1 295424 ultralytics.nn.modules.conv.Conv [128, 256, 3, 2]
8 -1 1 346112 ultralytics.nn.modules.block.C3k2 [256, 256, 1, True]
9 -1 1 164608 ultralytics.nn.modules.block.SPPF [256, 256, 5]
10 -1 1 249728 ultralytics.nn.modules.block.C2PSA [256, 256, 1]
11 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest']
12 [-1, 6] 1 0 ultralytics.nn.modules.conv.Concat [1]
13 -1 1 111296 ultralytics.nn.modules.block.C3k2 [384, 128, 1, False]
14 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest']
15 [-1, 4] 1 0 ultralytics.nn.modules.conv.Concat [1]
16 -1 1 32096 ultralytics.nn.modules.block.C3k2 [256, 64, 1, False]
17 -1 1 36992 ultralytics.nn.modules.conv.Conv [64, 64, 3, 2]
18 [-1, 13] 1 0 ultralytics.nn.modules.conv.Concat [1]
19 -1 1 86720 ultralytics.nn.modules.block.C3k2 [192, 128, 1, False]
20 -1 1 147712 ultralytics.nn.modules.conv.Conv [128, 128, 3, 2]
21 [-1, 10] 1 0 ultralytics.nn.modules.conv.Concat [1]
22 -1 1 378880 ultralytics.nn.modules.block.C3k2 [384, 256, 1, True]
23 [16, 19, 22] 1 464912 ultralytics.nn.modules.head.Detect [80, [64, 128, 256]]
YOLO11n summary: 319 layers, 2,624,080 parameters, 2,624,064 gradients, 6.6 GFLOPs
Transferred 499/499 items from pretrained weights
Freezing layer 'model.23.dfl.conv.weight'
train: Scanning /home/userroot/yolo11/datasets/coco8/labels/train... 4 images,
train: New cache created: /home/userroot/yolo11/datasets/coco8/labels/train.cache
val: Scanning /home/userroot/yolo11/datasets/coco8/labels/val... 4 images, 0 ba
val: New cache created: /home/userroot/yolo11/datasets/coco8/labels/val.cache
Plotting labels to runs/detect/train/labels.jpg...
optimizer: 'optimizer=auto' found, ignoring 'lr0=0.01' and 'momentum=0.937' and determining best 'optimizer', 'lr0' and 'momentum' automatically...
optimizer: AdamW(lr=0.000119, momentum=0.9) with parameter groups 81 weight(decay=0.0), 88 weight(decay=0.0005), 87 bias(decay=0.0)
Image sizes 640 train, 640 val
Using 0 dataloader workers
Logging results to runs/detect/train
Starting training for 10 epochs...
Closing dataloader mosaic
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
1/10 0G 0.7858 1.52 1.176 13 640:
Class Images Instances Box(P R mAP50
all 4 17 0.579 0.85 0.879 0.635
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
2/10 0G 0.8649 2.189 1.212 13 640:
Class Images Instances Box(P R mAP50
all 4 17 0.568 0.85 0.878 0.635
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
3/10 0G 1.14 1.918 1.518 13 640:
Class Images Instances Box(P R mAP50
all 4 17 0.601 0.85 0.85 0.65
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
4/10 0G 1.089 1.621 1.412 13 640:
Class Images Instances Box(P R mAP50
all 4 17 0.613 0.85 0.851 0.65
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
5/10 0G 0.9518 2.074 1.375 13 640:
Class Images Instances Box(P R mAP50
all 4 17 0.619 0.85 0.874 0.653
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
6/10 0G 1.06 1.57 1.473 13 640:
Class Images Instances Box(P R mAP50
all 4 17 0.631 0.85 0.852 0.651
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
7/10 0G 0.9402 1.583 1.31 13 640:
Class Images Instances Box(P R mAP50
all 4 17 0.638 0.85 0.851 0.651
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
8/10 0G 1.053 1.876 1.439 13 640:
Class Images Instances Box(P R mAP50
all 4 17 0.651 0.85 0.853 0.651
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
9/10 0G 1.073 1.642 1.417 13 640:
Class Images Instances Box(P R mAP50
all 4 17 0.652 0.85 0.854 0.643
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
10/10 0G 0.9368 1.484 1.238 13 640:
Class Images Instances Box(P R mAP50
all 4 17 0.657 0.85 0.862 0.646
10 epochs completed in 0.005 hours.
Optimizer stripped from runs/detect/train/weights/last.pt, 5.5MB
Optimizer stripped from runs/detect/train/weights/best.pt, 5.5MB
Validating runs/detect/train/weights/best.pt...
Ultralytics 8.3.52 🚀 Python-3.9.21 torch-2.5.1+cu124 CPU (Intel Xeon E5-2673 v3 2.40GHz)
YOLO11n summary (fused): 238 layers, 2,616,248 parameters, 0 gradients, 6.5 GFLOPs
Class Images Instances Box(P R mAP50
all 4 17 0.62 0.85 0.874 0.653
person 3 10 0.607 0.6 0.601 0.286
dog 1 1 0.561 1 0.995 0.796
horse 1 2 0.713 1 0.995 0.674
elephant 1 2 0.384 0.5 0.662 0.274
umbrella 1 1 0.585 1 0.995 0.995
potted plant 1 1 0.872 1 0.995 0.895
Speed: 2.0ms preprocess, 67.7ms inference, 0.0ms loss, 1.2ms postprocess per image
Results saved to runs/detect/train
💡 Learn more at https://docs.ultralytics.com/modes/train
6.2 带定向框数据(OBB):
训练指令:
yolo obb train data=dota8.yaml model=yolo11n-obb.yaml epochs=10 imgsz=640
训练结果:
Ultralytics 8.3.52 🚀 Python-3.9.21 torch-2.5.1+cu124 CPU (Intel Xeon E5-2673 v3 2.40GHz)
engine/trainer: task=obb, mode=train, model=yolo11n-obb.yaml, data=dota8.yaml, epochs=10, time=None, patience=100, batch=16, imgsz=640, save=True, save_period=-1, cache=False, device=None, workers=8, project=None, name=train, exist_ok=False, pretrained=True, optimizer=auto, verbose=True, seed=0, deterministic=True, single_cls=False, rect=False, cos_lr=False, close_mosaic=10, resume=False, amp=True, fraction=1.0, profile=False, freeze=None, multi_scale=False, overlap_mask=True, mask_ratio=4, dropout=0.0, val=True, split=val, save_json=False, save_hybrid=False, conf=None, iou=0.7, max_det=300, half=False, dnn=False, plots=True, source=None, vid_stride=1, stream_buffer=False, visualize=False, augment=False, agnostic_nms=False, classes=None, retina_masks=False, embed=None, show=False, save_frames=False, save_txt=False, save_conf=False, save_crop=False, show_labels=True, show_conf=True, show_boxes=True, line_width=None, format=torchscript, keras=False, optimize=False, int8=False, dynamic=False, simplify=True, opset=None, workspace=None, nms=False, lr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=7.5, cls=0.5, dfl=1.5, pose=12.0, kobj=1.0, nbs=64, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, bgr=0.0, mosaic=1.0, mixup=0.0, copy_paste=0.0, copy_paste_mode=flip, auto_augment=randaugment, erasing=0.4, crop_fraction=1.0, cfg=None, tracker=botsort.yaml, save_dir=runs/obb/train
Dataset 'dota8.yaml' images not found ⚠️, missing path '/home/userroot/yolo11/datasets/dota8/images/val'
Downloading https://ultralytics.com/assets/dota8.zip to '/home/userroot/yolo11/datasets/dota8.zip'...
100%|████████████████| 1.24M/1.24M [00:38<00:00, 33.9kB/s]
Unzipping /home/userroot/yolo11/datasets/dota8.zip to /hom
Dataset download success ✅ (40.6s), saved to /home/userroot/yolo11/datasets
Overriding model.yaml nc=80 with nc=15
from n params module arguments
0 -1 1 464 ultralytics.nn.modules.conv.Conv [3, 16, 3, 2]
1 -1 1 4672 ultralytics.nn.modules.conv.Conv [16, 32, 3, 2]
2 -1 1 6640 ultralytics.nn.modules.block.C3k2 [32, 64, 1, False, 0.25]
3 -1 1 36992 ultralytics.nn.modules.conv.Conv [64, 64, 3, 2]
4 -1 1 26080 ultralytics.nn.modules.block.C3k2 [64, 128, 1, False, 0.25]
5 -1 1 147712 ultralytics.nn.modules.conv.Conv [128, 128, 3, 2]
6 -1 1 87040 ultralytics.nn.modules.block.C3k2 [128, 128, 1, True]
7 -1 1 295424 ultralytics.nn.modules.conv.Conv [128, 256, 3, 2]
8 -1 1 346112 ultralytics.nn.modules.block.C3k2 [256, 256, 1, True]
9 -1 1 164608 ultralytics.nn.modules.block.SPPF [256, 256, 5]
10 -1 1 249728 ultralytics.nn.modules.block.C2PSA [256, 256, 1]
11 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest']
12 [-1, 6] 1 0 ultralytics.nn.modules.conv.Concat [1]
13 -1 1 111296 ultralytics.nn.modules.block.C3k2 [384, 128, 1, False]
14 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest']
15 [-1, 4] 1 0 ultralytics.nn.modules.conv.Concat [1]
16 -1 1 32096 ultralytics.nn.modules.block.C3k2 [256, 64, 1, False]
17 -1 1 36992 ultralytics.nn.modules.conv.Conv [64, 64, 3, 2]
18 [-1, 13] 1 0 ultralytics.nn.modules.conv.Concat [1]
19 -1 1 86720 ultralytics.nn.modules.block.C3k2 [192, 128, 1, False]
20 -1 1 147712 ultralytics.nn.modules.conv.Conv [128, 128, 3, 2]
21 [-1, 10] 1 0 ultralytics.nn.modules.conv.Concat [1]
22 -1 1 378880 ultralytics.nn.modules.block.C3k2 [384, 256, 1, True]
23 [16, 19, 22] 1 505264 ultralytics.nn.modules.head.OBB [15, 1, [64, 128, 256]]
YOLO11n-obb summary: 344 layers, 2,664,432 parameters, 2,664,416 gradients, 6.7 GFLOPs
Freezing layer 'model.23.dfl.conv.weight'
train: Scanning /home/userroot/yolo11/datasets/dota8/label
train: New cache created: /home/userroot/yolo11/datasets/dota8/labels/train.cache
val: Scanning /home/userroot/yolo11/datasets/dota8/labels/
val: New cache created: /home/userroot/yolo11/datasets/dota8/labels/val.cache
Plotting labels to runs/obb/train/labels.jpg...
optimizer: 'optimizer=auto' found, ignoring 'lr0=0.01' and 'momentum=0.937' and determining best 'optimizer', 'lr0' and 'momentum' automatically...
optimizer: AdamW(lr=0.000526, momentum=0.9) with parameter groups 87 weight(decay=0.0), 97 weight(decay=0.0005), 96 bias(decay=0.0)
Image sizes 640 train, 640 val
Using 0 dataloader workers
Logging results to runs/obb/train
Starting training for 10 epochs...
Closing dataloader mosaic
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
1/10 0G 3.753 4.948 4.748
Class Images Instances Box(P
all 4 8 0 0 0 0
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
2/10 0G 3.877 4.971 4.739
Class Images Instances Box(P
all 4 8 0 0 0 0
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
3/10 0G 4.301 4.967 4.49
Class Images Instances Box(P
all 4 8 0 0 0 0
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
4/10 0G 3.807 4.911 4.62
Class Images Instances Box(P
all 4 8 0 0 0 0
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
5/10 0G 3.994 5.001 4.227
Class Images Instances Box(P
all 4 8 0 0 0 0
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
6/10 0G 3.812 5.094 4.61
Class Images Instances Box(P
all 4 8 0 0 0 0
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
7/10 0G 4.479 4.879 4.46
Class Images Instances Box(P
all 4 8 0 0 0 0
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
8/10 0G 4.207 4.955 4.277
Class Images Instances Box(P
all 4 8 0 0 0 0
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
9/10 0G 4.404 4.943 4.584
Class Images Instances Box(P
all 4 8 0 0 0 0
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
10/10 0G 4.541 5.004 4.572
Class Images Instances Box(P
all 4 8 0 0 0 0
10 epochs completed in 0.006 hours.
Optimizer stripped from runs/obb/train/weights/last.pt, 5.8MB
Optimizer stripped from runs/obb/train/weights/best.pt, 5.8MB
Validating runs/obb/train/weights/best.pt...
Ultralytics 8.3.52 🚀 Python-3.9.21 torch-2.5.1+cu124 CPU (Intel Xeon E5-2673 v3 2.40GHz)
YOLO11n-obb summary (fused): 257 layers, 2,656,648 parameters, 0 gradients, 6.6 GFLOPs
Class Images Instances Box(P
all 4 8 0 0 0 0
Speed: 1.9ms preprocess, 67.2ms inference, 0.0ms loss, 0.1ms postprocess per image