深度学习实现单木检测单木分割 Week1

一、python:基础语法学习完成,目前在学习模块,作用域

二、深度学习:anaconda 环境部署

pytorch环境部署

yolov8(ultralytics)部署

环境搭建完成后进行深度学习实现单木识别的实际操作

1.数据准备

dataset/
├── images/
│   ├── train/
│   │   ├── image1.jpg
│   │   └── ...
│   └── val/
│       ├── image2.jpg
│       └── ...
└── labels/
    ├── train/
    │   ├── image1.txt
    │   └── ...
    └── val/
        ├── image2.txt
        └── ...

2.创建数据集配置文件

# tree_detection.yaml
path: /path/to/dataset  # 数据集根目录
train: images/train  # 训练集图像路径
val: images/val  # 验证集图像路径

# 类别数量和名称
nc: 1  # 单木检测通常只有"树"一个类别
names: ['tree']

3.模型训练

from ultralytics import YOLO

# 加载预训练模型
model = YOLO('yolov8n.pt')  # 可以选择 yolov8n/s/m/l/x 不同大小的模型

# 训练模型
results = model.train(
    data='tree_detection.yaml',
    epochs=100,
    imgsz=640,
    batch=16,
    name='yolov8n_tree_detection'
)

4.模型验证

# 验证模型性能
metrics = model.val()
print(metrics.box.map)  # 打印mAP指标

5.使用训练好的模型进行预测

from ultralytics import YOLO
import cv2

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

# 单张图像预测
img_path = 'path/to/test_image.jpg'
results = model.predict(img_path, save=True, conf=0.5)

# 可视化结果
for result in results:
    img = result.plot()  # 绘制检测框
    cv2.imshow('Detection', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

6.统计监测结果

import pandas as pd

results = model.predict('path/to/image.jpg')
detections = results[0].boxes.data.cpu().numpy()  # 获取检测结果

# 转换为DataFrame
df = pd.DataFrame(detections, columns=['x1', 'y1', 'x2', 'y2', 'conf', 'class'])
print(f"检测到 {len(df)} 棵树")
print(df.describe())  # 统计信息

三、本周学习目标

继续学习python相关知识

跑通深度学习单木识别相关代码。

发表留言