学习进度

python:完成面向对象oop(数据、操作数据)的学习

深度学习(识别):

1.yaml文件,该文件代表数据地址(地址以本人电脑为例)取名tree.yaml

train:C:\Users\王兴\Desktop\yolo\train
val:C:\Users\王兴\Desktop\yolo\valid
test:C:\Users\王兴\Desktop\yolo\test
# number of classes
nc: 2
#names: [ '0', '1']
#tree
#ground
names: [ 'tree', 'ground']

2.环境(上周已部署)

3.训练

3.1模块

from ultralycics import YOLO

3.2加载模型(coco数据集训练)

model = YOLO('yolov8n.pt')

3.3自定义数据集(epochs越高精度越高)

model.train('data=tree.yaml', epochs=6)

3.4验证集验证效果

model.val()

单木分割预测与可视化

import cv2
from ultralytics import YOLO
import numpy as np

# 加载训练好的模型
model = YOLO('runs/segment/train/weights/best.pt')

# 预测单张图像
img_path = 'test_image.jpg'
results = model.predict(source=img_path, conf=0.35, iou=0.5)

# 可视化结果
result = results[0]
if result.masks is not None:
    # 获取掩码和轮廓
    masks = result.masks.xy
    class_ids = result.boxes.cls.cpu().numpy()
    
    # 创建空白掩码图像
    height, width = result.orig_shape
    final_mask = np.zeros((height, width), dtype=np.uint8)
    
    # 绘制单木分割掩码
    for mask in masks:
        points = mask.reshape((-1, 2)).astype(np.int32)
        cv2.fillPoly(final_mask, [points], color=255)
    
    # 叠加原始图像和掩码
    original_img = cv2.cvtColor(result.orig_img, cv2.COLOR_BGR2RGB)
    overlay = original_img.copy()
    overlay[final_mask == 255] = [0, 255, 0]  # 绿色标记树木区域
    combined = cv2.addWeighted(overlay, 0.5, original_img, 0.5, 0)
    
    # 保存结果
    cv2.imwrite('result_mask.png', final_mask)
    cv2.imwrite('result_overlay.png', combined)
    
    print(f"检测到 {len(masks)} 棵树木")
    print("保存结果: result_mask.png, result_overlay.png")
else:
    print("未检测到树木")

下周目标:整理数据集路径问题,简单分割单木

角规测试仪原型设计

发表留言