深度学习yolov8模型训练输电线杆塔螺栓缺失检测数据集 训练用于输电线杆塔螺栓识别YOLOv8模型 建立基于深度学习输电线电线塔杆塔螺栓识别 检测缺失螺丝 正向/侧向螺丝

深度学习yolov8模型训练输电线杆塔螺栓缺失检测数据集 训练用于输电线杆塔螺栓识别YOLOv8模型 建立基于深度学习输电线电线塔杆塔螺栓识别 检测缺失螺丝 正向/侧向螺丝

杆塔螺栓识别数据集
3分类
noscrew 缺失螺丝
screw 正向螺丝
sidescrew 侧向螺丝
图片857张。数据集按9:1分配。训练集771张,验证集86张。图片像素640*640。

在这里插入图片描述
1
在这里插入图片描述
1
在这里插入图片描述
使用YOLOv8训练杆塔螺栓识别的数据集,基于训练好的权重进行推理,。环境准备、数据组织、模型训练到推理的完整流程。

一、环境准备

首先确保安装了必要的Python包:

pip install ultralytics opencv-python matplotlib numpy

二、数据组织

确保数据集按照以下结构组织:

tower_bolt_dataset/
├── images/
│   ├── train/
│   └── val/
├── labels/
│   ├── train/
│   └── val/
└── data.yaml
  • images/train/labels/train/ 分别存放训练图像及其对应的标签文件。
  • images/val/labels/val/ 分别存放验证图像及其对应的标签文件。

每个图像都需要有一个对应的.txt文件,格式为:class_id center_x center_y width height,所有坐标归一化到[0,1]。

三、创建 data.yaml 文件

在项目根目录下创建 data.yaml 文件,内容如下:

train: ./tower_bolt_dataset/images/train
val: ./tower_bolt_dataset/images/val

nc: 3
names: ['noscrew', 'screw', 'sidescrew']

四、模型训练

使用YOLOv8进行模型训练的代码示例如下:

from ultralytics import YOLO

# 加载YOLOv8模型架构配置或预训练模型
model = YOLO('yolov8s.yaml')  # 根据需求选择不同大小的模型如'n', 'm', 'l', 'x'

# 开始训练
results = model.train(
    data='./tower_bolt_dataset/data.yaml',
    epochs=100,  # 可以根据需要调整epoch数
    imgsz=640,
    batch=16,
    name='tower_bolt_train',
    project='runs/tower_bolt',
    exist_ok=True,
    device=0 if torch.cuda.is_available() else 'cpu'
)

# 保存最佳权重
best_weights_path = model.save('./tower_bolt_best.pt')
print(f"Best weights saved to {best_weights_path}")

五、模型验证与性能评估

训练完成后,可以使用以下代码来评估模型在验证集上的表现:

from ultralytics import YOLO

# 加载训练好的模型
model = YOLO('./tower_bolt_best.pt')

# 在验证集上评估
metrics = model.val()

# 打印关键指标
print(f"mAP@0.5:0.95: {metrics.box.map:.4f}")
print(f"mAP@0.5: {metrics.box.map50:.4f}")
print(f"Recall: {metrics.box.recall.mean():.4f}")
print(f"Precision: {metrics.box.precision.mean():.4f}")

在这里插入图片描述

六、单图推理 + 结果可视化

下面是如何对单张图片进行推理并显示结果:

from ultralytics import YOLO
import cv2

def detect_and_show(image_path):
    model = YOLO('./tower_bolt_best.pt')

    results = model.predict(source=image_path, conf=0.25)
    
    for result in results:
        im_array = result.plot()
        im = cv2.cvtColor(im_array, cv2.COLOR_RGB2BGR)
        cv2.imshow("Detection Result", im)
        cv2.waitKey(0)
        cv2.destroyAllWindows()

# 测试一张图片
detect_and_show('path/to/test_image.jpg')

七、批量推理并保存结果

如果需要对一批图片进行推理并将结果保存:

from ultralytics import YOLO

model = YOLO('./tower_bolt_best.pt')

# 批量处理指定文件夹下的图片,并保存结果
model.predict(
    source='./tower_bolt_dataset/images/val',
    save=True,
    project='runs/tower_bolt/predictions',
    name='val_results',
    conf=0.25
)

成功地训练一个用于杆塔螺栓识别的YOLOv8模型,并能够基于该模型对新的图片进行推理和结果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值