学习进度
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("未检测到树木")
下周目标:整理数据集路径问题,简单分割单木
角规测试仪原型设计