在计算机视觉领域,目标检测是一项核心任务,YOLO(You Only Look Once)系列模型因其速度快、性能优而广受欢迎。随着YOLOv8的推出,这一家族再次成为研究与应用的热点。本文将介绍如何在丹摩智算平台上进行YOLOv8模型的训练与测试,包括数据集的准备、模型训练、以及测试验证。
YOLOv8是由Ultralytics团队开发的最新一代目标检测模型,它在原有YOLO系列模型的基础上进行了改进和优化。YOLOv8在保持高速检测的同时,进一步提升了准确率和鲁棒性,使其在工业界和学术界都具有广泛的应用前景。
我们使用自己标注的Labelme数据集,包含多种类别的飞行器。数据集的标注格式需要转换为YOLOv8能够识别的格式。为此,我们编写了一段Python脚本,将标注数据转换为YOLO格式。
跳转此链接可以下载数据集:https://s3.damodel.com/damodel-openfile/%E9%A3%9E%E6%9C%BA%E6%A0%87%E6%B3%A8.7z
转换脚本的核心是将标注文件中的边界框坐标转换为YOLO需要的格式。我们定义了convert
函数来执行这一转换,并为每个对象类别生成相应的文本文件。
def convert(size, box):
dw = 1. / size[0]
dh = 1. / size[1]
x = (box[0] + box[1]) / 2.0 - 1
y = (box[2] + box[3]) / 2.0 - 1
w = box[1] - box[0]
h = box[3] - box[2]
x = x * dw
w = w * dw
y = y * dh
h = h * dh
return (x, y, w, h)
在开始训练之前,我们需要在本地环境中调试代码,确保一切运行正常。
可以从Ultralytics的GitHub仓库下载YOLOv8,或者使用pip install ultralytics
命令安装。
GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite
安装必要的库文件,包括opencv-python
、numpy
、pyyaml
、tqdm
、matplotlib
和pandas
。
编写训练脚本train.py
,加载模型并进行训练。
from ultralytics import YOLO
if __name__ == '__main__':
model = YOLO("ultralytics/cfg/models/v8/yolov8l.yaml")
results = model.train(data="VOC.yaml", epochs=100, device='0', batch=16, workers=0)
在丹摩智算平台上创建GPU云实例,选择适合的GPU型号和镜像。
将数据集和训练脚本上传到云实例。
在云实例中运行训练脚本,开始模型训练。
编写测试脚本test.py
,加载训练好的模型并进行测试。
from ultralytics import YOLO
if __name__ == '__main__':
model = YOLO('runs/detect/train/weights/best.pt')
results = model.predict(source="ultralytics/assets", device='0')
print(results)
运行测试脚本,对测试数据进行预测。
丹摩智算平台提供的GPU云实例能够满足深度学习训练的需求,使得YOLOv8模型的训练和测试变得简单快捷。无论是学术研究还是商业应用,YOLOv8都将为您的项目带来强大的目标检测能力。随着技术的不断进步,我们有理由相信,丹摩智算将继续在人工智能领域发挥重要作用。