YOLO11在训练和导出时的一些参数设置

train时,imsz只能设置成1个整数。如果设置成数组,会提示:updating to 'imgsz=640'. 'train' and 'val' imgsz must be an integer, while 'predict' and 'export' 

图像会以较长的边等比例缩放到指定的整数,然后较短的边的两侧填充114到指定的整数尺寸。即最终会是一个正方形,原图缩放在中间。原图尺寸推荐32的倍数。

export时,imsz可以设置成1个整数或数组。如果原图高*宽是480*640,可以输出设置为imsz=[480,640]。预测时,imsz=[480,640]

 

训练时,设置如下

from ultralytics import YOLO
# 训练
model = YOLO("yolo11n.pt")
results = model.train(data="D:/datasets/foreignfiber.yaml", epochs=100, batch=16, imgsz=640, device=0)

导出时,为了提速,可以设置 half、int8,这两个只能1个为True。但是int8=True得到的模型,预测效果会差很多,也不知道哪里有问题。(int8是速度最快的,但是精度下降了)

int8=True需要指定验证集,必须设置data参数(会自动识别到yaml配置里的验证集,验证集推荐不低于500张图,1000张最佳),同时dynamic=True(即使不设置也会变为True)

设置如下:

# -------------------- 转格式
from ultralytics import YOLO

model = YOLO("./runs/detect/train/weights/best.pt")
model.export(format="engine", imgsz=[384, 640], batch=1, half=False, int8=True, dynamic=True, data="D:/datasets/foreignfiber.yaml", device=0)

或者

# -------------------- 转格式
from ultralytics import YOLO

model = YOLO("./runs/detect/train/weights/best.pt")
model.export(format="engine", imgsz=[384, 640], batch=1, dynamic=False, half=True, int8=False, device=0)

int8=True时,需要在部署的设备上进行export操作,因为训练的设备和部署的设备会有硬件差异。

【参考】

Train - Ultralytics YOLO Docs

Export - Ultralytics YOLO Docs

TensorRT - Ultralytics YOLO Docs

posted @ 2024-10-16 15:06  夕西行  阅读(831)  评论(0编辑  收藏  举报