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操作,因为训练的设备和部署的设备会有硬件差异。
【参考】