YOLOv5植物模型开发综述

一、摘要

YOLOv5 作为当前主流的目标检测框架,凭借其高效的检测速度与出色的精度表现,成为植物识别任务的优选方案。本项目将围绕 "仙人掌、松树" 等植物类别展开目标检测模型的开发,整体流程可分为模型准备、数据处理、模型训练、推理验证四大核心环节,通过分工协作与技术拆解,实现从基础框架到定制化植物识别的全流程落地。

二、模型准备:从官方资源到定制化开发

首先需从 YOLOv5 官方仓库 下载基础模型(如 yolov5s.pt),该模型是在 COCO 数据集上预训练的通用目标检测模型,具备识别 80 类常见物体的能力。但为适配植物识别任务,需在其基础上进行数据替换与网络微调:

1.下载后将模型文件置于项目根目录(如 yolov5_new),后续通过 train.py 脚本加载该模型,并利用自定义植物数据集重新训练分类与回归头,使模型专注于识别 "仙人掌、松树" 等目标;

2.若需快速验证流程,可先通过 detect.py 运行官方模型,测试如上图中 "人物检测" 的默认功能,再逐步替换为植物数据。

三、数据处理:标注与划分的关键步骤

数据是模型效果的核心支撑,植物识别任务需重点关注以下环节:

1.数据采集与分类:收集 "仙人掌、松树" 等目标的图像,覆盖不同生长阶段、光照条件、拍摄角度(如上图中仙人掌的密集场景、松树的山地场景),确保数据多样性;

2.标注分工协作:采用 LabelMe 等工具对图像进行边界框标注,明确每株植物的类别与位置。由于标注工作量大,需两人分工完成,分别负责不同类别的图像标注,保证标注精度与效率,通过以下代码将 LabelMe标注后的json文件转换为txt文件;

复制代码
import json
import os
from PIL import Image

json_dir = "D:\labelme\song.txt"

txt_dir = "D:\labelme"

# 类别:0=song
class_names = ["song"]

for json_file in os.listdir(json_dir):
    if json_file.endswith(".json"):
        with open(os.path.join(json_dir, json_file), "r", encoding="utf-8") as f:
            data = json.load(f)
        # 获取图片尺寸
        img_path = os.path.join(json_dir, data["imagePath"])
        img = Image.open(img_path)
        width, height = img.size
        # 生成txt标签
        txt_name = json_file.replace(".json", ".txt")
        with open(os.path.join(txt_dir, txt_name), "w") as f:
            for shape in data["shapes"]:
                cls = class_names.index(shape["label"])  # 类别编号
                points = shape["points"]  # 多边形坐标
                # 转换坐标为YOLO格式(归一化到0-1)
                normalized = []
                for (x, y) in points:
                    normalized.append(x / width)
                    normalized.append(y / height)
                # 写入txt:类别 坐标1 坐标2 ...
                f.write(f"{cls} " + " ".join(map(str, normalized)) + "\n")

3.数据集划分:将标注好的数据按 "训练集:验证集 = 8:2" 的比例划分,训练集用于模型参数更新,验证集用于监控训练过程中的过拟合情况(如前文所述验证集需包含各类别关键特征且不与训练集重复)。

四、模型训练与推理:从参数配置到效果验证

1.训练流程:

(1)配置 mydata.yaml 文件,指定训练集、验证集路径及类别数(如本项目中 nc=2 代表 "仙人掌、松树" 两类);

复制代码
path:  D:\python learning\pythonProject\yolov5_new\mydata
train: D:\python learning\pythonProject\yolov5_new\mydata\images\train
val: D:\python learning\pythonProject\yolov5_new\mydata\images\train # test images (optional)
test:


# Classes
names:
  0: song
  1: xianrenzhang
  2: teddy bear

(2)运行 train.py 脚本,加载预训练模型 yolov5s.pt,设置训练轮数(epochs)、批次大小(batch_size)等参数,启动模型训练;

复制代码
parser.add_argument("--weights", type=str, default=ROOT / "yolov5s.pt", help="initial weights path")
    parser.add_argument("--cfg", type=str, default="", help="model.yaml path")
    parser.add_argument("--data", type=str, default=ROOT / "D:\python learning\pythonProject\yolov5_new\data\mydata.yaml", help="dataset.yaml path")

(3)训练过程中,TensorBoard 会实时记录损失曲线与精度指标,可通过 tensorboard --logdir runs/train 查看训练动态。

2.推理验证:

(1)训练完成后,加载最优权重文件(如 runs/train/exp/weights/best.pt),通过 detect.py 对测试图像进行推理;

(2)推理时可调整置信度阈值(conf-thres),平衡检测框数量与精度(如上图中不同阈值下的检测效果差异),最终输出带植物类别与位置的检测结果

五、后续计划与协作分工

现阶段需优先完成 YOLOv5 官方模型的下载与环境配置,确保 train.pydetect.py 等脚本可正常运行。待模型准备就绪后,将启动数据标注工作,分工负责不同类别植物的标注任务,以加速数据积累。后续还需针对模型训练过程中的损失波动、精度瓶颈等问题进行调优,最终实现高精度的植物识别目标检测系统。

相关推荐
徐行tag1 小时前
RLS(递归最小二乘)算法详解
人工智能·算法·机器学习
阿里云云原生2 小时前
阿里云 FunctionAI 技术详解:基于 Serverless 的企业级 AI 原生应用基础设施构建
人工智能·阿里云·serverless
感智教育2 小时前
2025 年世界职业院校技能大赛汽车制造与维修赛道备赛方案
人工智能·汽车·制造
8Qi82 小时前
Stable Diffusion详解
人工智能·深度学习·stable diffusion·图像生成
激动的小非2 小时前
电商数据分析报告
大数据·人工智能·数据分析
carver w2 小时前
transformer 手写数字识别
人工智能·深度学习·transformer
新智元3 小时前
GPT-5.1发布当天,文心5.0杀回来了
人工智能·openai
月下倩影时3 小时前
视觉学习篇——机器学习模型评价指标
人工智能·学习·机器学习
领航猿1号3 小时前
如何通过神经网络看模型参数量?
人工智能·python·神经网络·大模型参数量