混合精度训练
在YOLO中,混合精度预训练权重是指使用混合精度(mixed-precision)训练技术训练得到的预训练权重。
混合精度训练是一种利用低精度数据类型(如半精度浮点数)进行计算的训练方法,以减少计算资源的消耗并提高训练速度。混合精度训练通常结合使用高精度浮点数(如单精度浮点数)和低精度浮点数来进行计算。具体而言,在混合精度中,大部分计算会使用低精度浮点数进行,而少数需要更高精度的计算会使用高精度浮点数。
在YOLO中使用混合精度预训练权重的主要目的是提高目标检测算法的推理速度。由于混合精度计算可以减少计算资源的需求,因此可以加快模型在推理阶段的速度。这对于实时目标检测任务非常重要,因为模型需要在短时间内对图像或视频进行分析和检测。
此外,混合精度预训练权重还可以减少模型在部署设备上的内存占用量。由于低精度浮点数需要更少的存储空间,因此使用混合精度权重可以降低模型的内存需求,使其更适用于资源受限的设备,如边缘计算设备或移动设备。
使用混合精度预训练权重可以提高YOLO目标检测算法的推理速度,并降低模型在部署设备上的内存占用。这对于实时目标检测任务和资源受限设备上的部署非常有益。
预权重的修改
在ultralytics/yolo/engine/trainer.py文件里的倒数第九行修改
try:
from ultralytics import YOLO
assert amp_allclose(YOLO('yolov8n.pt'), im)
LOGGER.info(f'{prefix}checks passed ✅')
except ConnectionError:
LOGGER.warning(f"{prefix}checks skipped ⚠️, offline and unable to download YOLOv8n. Setting 'amp=True'.")
except AssertionError:
LOGGER.warning(f'{prefix}checks failed ❌. Anomalies were detected with AMP on your system that may lead to '
f'NaN losses or zero-mAP results, so AMP will be disabled during training.')
return False
return True
#=========================优化======================================
assert amp_allclose(YOLO('yolov8n.pt'), im) #修改这一行即可: