习惯了YOLOv5使用Python文件操作,用不惯YOLOv8删除了Python文件操作。
手搓一下
from ultralytics import YOLO
if __name__ == '__main__':
#设置运行模式
mode = "deploy"
if mode == "train":
#项目命名
projectname='YOLOv8-small'
# 加载一个模型
model = YOLO('yolov8s-P2.yaml') # 从YAML建立一个新模型
model = YOLO('yolov8s.pt') # 加载预训练模型(推荐用于训练)
# 训练模型
model.train(data="F://datasets//rebar//rebar.yaml", epochs=10, imgsz=640, name='F://Llandudno//train//'+projectname) # train the model
metrics = model.val(name='F://Llandudno//val//'+projectname) # evaluate model performance on the validation set
#results = model("https://ultralytics.com/images/bus.jpg") # 使用刚训练好图片进行预测
#path = model.export(format="onnx") # 刚训练好的模型导出格式
elif mode == "val":
# 项目命名
projectname = 'YOLOv8s'
# 加载模型
#model = YOLO('yolov8.pt') # 加载官方模型
model = YOLO('E://PycharmProjects//ultralytics-main//runs//detect//coco128//weights//best.pt') # 加载自定义模型
# 验证模型
metrics = model.val(name='F://Llandudno//val//'+projectname) # 无需参数,数据集和设置记忆
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # 包含每个类别的map50-95列表
elif mode == "predict":
# 项目命名
projectname = 'YOLOv8s-P2'
# 加载模型
model = YOLO('F://Llandudno//train//YOLOv8s-P2//weights//best.pt') # 设置检测模型
# 在图片列表上运行批量推理
#results = model('F://datasets//rebar_rgb//images//val', save=True)
results = model('F://datasets//test//imgs2', save=True, name='F://Llandudno//predict//'+projectname) #指定路径保存检测结果
# 处理结果列表
for result in results:
boxes = result.boxes # 边界框输出的 Boxes 对象
masks = result.masks # 分割掩码输出的 Masks 对象
keypoints = result.keypoints # 姿态输出的 Keypoints 对象
probs = result.probs # 分类输出的 Probs 对象
else:
# 加载模型
model = YOLO('F://Llandudno//train//coco128//weights//best.pt') # 加载自定义训练的模型
# 导出模型
model.export(format='onnx')