深度学习实现单木检测单木分割 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相关知识
跑通深度学习单木识别相关代码。