ultralytics yolo v8 示例:加载官方模型进行推理

        Ultralytics YOLO 是计算机视觉和 ML 领域专业人士的高效工具

安装 ultralytics 库:

pip install ultralytics 

实现代码如下:

import cv2
from ultralytics import YOLO

# 加载预训练的 YOLOv8n 模型
ckpt_dir = "./ckpt/" # 模型缓存地址
model = YOLO(ckpt_dir + 'yolov8n.pt')
# 定义图像文件的路径
source = 'img.jpg'
# 运行推理,并附加参数
results = model.predict(source,
    project='./',       # 保存预测结果的根目录
    name='exp',         # 保存预测结果目录名称
    exist_ok=True,
    save=True,
    imgsz=640,          # 推理模型输入图像尺寸
    conf=0.2            # 置信度阈值
    )

print("results.names :\n",results) # 输出推理结果
print("model names:",model.names)  # 输出模型类别

# 遍历各检测目标结果

for result in results:
    boxes = result.boxes  # 获取检测目标边界框
    confidences = result.boxes.conf  # 获取检测目标置信度
    cls = result.boxes.cls # 获取检测目标标签
    print("boxes:{},conf:{},cls:{}".format(boxes.xyxy,confidences,cls))

# 读取模型推理可视化图片显示
img_result = cv2.imread("exp/" +  source)
cv2.namedWindow("result",0)
cv2.imshow("result",img_result)
cv2.waitKey(0)

模型类别输出信息:

model names: {0: 'person', 1: 'bicycle', 2: 'car', 3: 'motorcycle', 4: 'airplane', 5: 'bus', 
6: 'train', 7: 'truck', 8: 'boat', 9: 'traffic light', 10: 'fire hydrant', 
11: 'stop sign', 12: 'parking meter', 13: 'bench', 14: 'bird', 
15: 'cat', 16: 'dog', 17: 'horse', 18: 'sheep', 19: 'cow', 20: 'elephant',
21: 'bear', 22: 'zebra', 23: 'giraffe', 24: 'backpack', 25: 'umbrella', 
26: 'handbag', 27: 'tie', 28: 'suitcase', 29: 'frisbee', 30: 'skis', 
31: 'snowboard', 32: 'sports ball', 33: 'kite', 34: 'baseball bat', 
35: 'baseball glove', 36: 'skateboard', 37: 'surfboard', 38: 'tennis racket', 
39: 'bottle', 40: 'wine glass', 41: 'cup', 42: 'fork', 43: 'knife', 44: 'spoon', 
45: 'bowl', 46: 'banana', 47: 'apple', 48: 'sandwich', 49: 'orange', 50: 'broccoli', 
51: 'carrot', 52: 'hot dog', 53: 'pizza', 54: 'donut', 55: 'cake', 
56: 'chair', 57: 'couch', 58: 'potted plant', 59: 'bed', 60: 'dining table', 
61: 'toilet', 62: 'tv', 63: 'laptop', 64: 'mouse', 65: 'remote', 66: 'keyboard',
67: 'cell phone', 68: 'microwave', 69: 'oven', 70: 'toaster', 
71: 'sink', 72: 'refrigerator', 73: 'book', 74: 'clock', 
75: 'vase', 76: 'scissors', 77: 'teddy bear', 78: 'hair drier', 
79: 'toothbrush'}

模型推理输出信息:

boxes:tensor([[219.5013, 171.1023, 340.7977, 316.2900],
        [313.7640,  95.0483, 522.8762, 362.2893],
        [230.2642,  84.0345, 329.5569, 264.4615]], device='cuda:0'),
conf:tensor([0.9257, 0.9062, 0.8834], device='cuda:0'),
cls:tensor([1., 0., 0.], device='cuda:0')

模型推理可视化显示:

助力快速掌握数据集的信息和使用方式。

早停(early stopping)是一种在训练过程中用防止过拟合的技术。它通过在验证集上监测模型的性能,并在性能不再提升时停止训练,从而避免过拟合。对于YOLO V8训练早停,可以参考以下步骤: 1. 准备数据集和配置文件:首先,确保你已经准备好了自己的数据集和相应的配置文件。数据集应包含标注的图像和相应的标签文件,配置文件应包含模型的参数设置和路径信息。 2. 加载预训练模型:在YOLO V8训练中,通常会使用一个预训练的模型作为初始模型。你可以使用已经训练好的权重文件来加载模型。 3. 定义早停条件:在训练过程中,你需要定义早停的条件。一种常见的方法是监测模型在验证集上的性能,并设置一个阈值。当模型的性能在连续的几个epoch中没有提升时,就可以停止训练。 4. 训练模型:使用加载的预训练模型和定义的早停条件,开始训练模型。在每个epoch结束后,计算模型在验证集上的性能,并与之前的最佳性能进行比较。如果性能没有提升,则计数器加1,否则重置计数器。当计数器达到早停的阈值时,停止训练。 5. 保存最佳模型:在训练过程中,你可以保存在验证集上性能最好的模型。这样,即使早停停止了训练,你仍然可以使用最佳模型进行推理或进一步的训练。 下面是一个示例代码,演示了如何在YOLO V8训练中使用早停: ```python # 导入必要的库和模块 import torch from torch.utils.data import DataLoader from torchvision import transforms from yolo_v8 import YOLOv8 from dataset import CustomDataset from early_stopping import EarlyStopping # 定义数据集和配置文件路径 data_dir = 'path/to/dataset' config_file = 'path/to/config' # 定义数据预处理和转换 transform = transforms.Compose([ transforms.Resize((416, 416)), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) # 创建数据集和数据加载器 dataset = CustomDataset(data_dir, config_file, transform=transform) dataloader = DataLoader(dataset, batch_size=8, shuffle=True) # 创建模型和优化器 model = YOLOv8() optimizer = torch.optim.Adam(model.parameters(), lr=0.001) # 创建早停对象 early_stopping = EarlyStopping(patience=5, verbose=True) # 训练模型 for epoch in range(100): for images, targets in dataloader: # 前向传播和计算损失 outputs = model(images) loss = compute_loss(outputs, targets) # 反向传播和更新参数 optimizer.zero_grad() loss.backward() optimizer.step() # 在验证集上计算性能并更新早停对象 val_loss = validate(model, val_dataloader) early_stopping(val_loss, model) # 检查是否早停 if early_stopping.early_stop: print("Early stopping") break # 保存最佳模型 torch.save(early_stopping.best_model.state_dict(), 'best_model.pt') ``` 请注意,上述代码中的`YOLOv8`、`CustomDataset`、`compute_loss`、`validate`和`EarlyStopping`都是需要根据你的具体情况进行定义和实现的。你需要根据自己的数据集和模型进行相应的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值