神经网络组植物分类学习规划与本周进展综述15

一、关于 "搭建共享空间 / 百度网盘" (百度网盘)

介绍:用一个大家都能随时访问的地方,统一存放项目中所有文件,避免两个人各存一份导致版本混乱。比如你们俩分工标注图片、写代码,如果你存自己电脑里,组员 B 看不到;如果用 U 盘传,容易丢文件。
用网盘 / 共享空间的好处是:

标注好的图片、训练好的模型、写的代码,传上去后两个人随时能下载最新版本;

老师要查看进度时,直接发链接就能分享,不用一个个文件发;

防止电脑坏了、文件误删导致数据丢失。

具体操作(以百度网盘为例):

一人注册百度网盘,创建文件夹,命名为 "植物 - 土壤分割项目";

里面再建 4 个子文件夹:

01_原始影像(存 QGIS 组给的预处理图片)

02_标注数据(存你们用 LabelMe 标好的图片和.json 文件)

03_代码与模型(存 YOLOv5 代码、训练好的.pt 模型、配置文件)

04_结果与论文(存分割结果图、蒸散量数据、小论文)

右键文件夹→"共享",生成链接发给组员,设置 "可编辑" 权限,两人就能共同上传 / 下载文件了。

二、YOLOv5 训练代码完全入门指南(从 0 开始,复制就能用)

不用自己 "写代码",YOLOv5 官网已经做好了所有核心代码,只需要改几个配置文件 + 运行现成的命令。以下是一步一步的操作:

Step 1:下载 YOLOv5 代码(5 分钟)

打开电脑的 "命令提示符"(Win+R 输入 cmd),复制粘贴下面的代码,按回车:

bash 复制代码
# 安装git(如果没有的话,先运行这个,装完后重启cmd)  
conda install git  

# 下载YOLOv5代码到电脑  
git clone https://github.com/ultralytics/yolov5  
cd yolov5  # 进入下载好的yolov5文件夹 

Step 2:安装依赖(10 分钟)

还是在 cmd 里,输入:

bash 复制代码
# 安装需要的Python库(自动安装torch、opencv等)  
pip install -r requirements.txt  

Step 3:准备数据集(关键!对应之前的标注数据)

1.假设你们已经用 LabelMe 标好了 50 张图,现在要把它们转换成 YOLO 能识别的格式:

在yolov5文件夹里,新建一个data文件夹,再在里面建 4 个子文件夹:

2.转换 LabelMe 的.json 到 YOLO 的.txt:

复制下面的代码,保存为json2yolo.py,放在yolov5文件夹里,然后把所有标注好的.json 文件和图片放在同一个文件夹,运行这个脚本(需要改代码里的路径):

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

# 改这里:你的标注文件(.json)所在的文件夹  
json_dir = "C:/你的标注文件夹路径"  
# 改这里:转换后的txt标签要存的位置(对应train或val的labels文件夹)  
txt_dir = "yolov5/data/labels/train"  

# 类别:0=plant,1=soil(和你标注时的名称对应)  
class_names = ["plant", "soil"]  

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")  

Step 4:写配置文件(告诉 YOLO 你的数据集信息)

在yolov5/data文件夹里,新建一个plant_soil.yaml文件,用记事本打开,复制下面的内容:

python 复制代码
# 训练集和验证集的图片路径(相对于yolov5文件夹)  
train: data/images/train  
val: data/images/val  

# 类别数  
nc: 2  

# 类别名称(和标注时一致)  
names: [ 'plant', 'soil' ]  

Step 5:开始训练(核心命令,复制运行)

在 cmd 里进入yolov5文件夹,输入训练命令:

python 复制代码
# 用预训练模型yolov5s.pt开始训练,epochs=50(训练轮数),batch-size=8(根据电脑配置调整)  
python train.py --data data/plant_soil.yaml --weights yolov5s.pt --epochs 50 --batch-size 8 --img 640  

第一次运行会自动下载yolov5s.pt预训练模型(小文件,很快);

训练时会显示进度,最后在yolov5/runs/train/exp/weights里生成best.pt(最好的模型)和last.pt(最后一轮模型)。

Step 6:用训练好的模型做分割(测试效果)

找一张没训练过的图片,放在yolov5/test.jpg,运行:

python detect.py --weights runs/train/exp/weights/best.pt --source test.jpg

结果会存在yolov5/runs/detect/exp里,打开图片就能看到植物和土壤被不同颜色标注出来了。

三、分工建议(针对代码部分)

1.一人负责 "数据准备":用 LabelMe 标注图片,运行json2yolo.py转换标签,整理到data文件夹,确保路径正确;

2.另一人负责 "代码运行":安装环境,修改plant_soil.yaml配置文件,运行训练和测试命令,把训练好的模型传到共享网盘。

相关推荐
xuehaikj2 小时前
【实战案例】基于dino-4scale_r50_8xb2-36e_coco的棉田叶片病害识别与分类项目详解
人工智能·数据挖掘
月下倩影时2 小时前
视觉学习篇——理清机器学习:分类、流程与技术家族的关系
学习·机器学习·分类
算法与编程之美2 小时前
探索不同的优化器、损失函数、batch_size对分类精度影响
人工智能·机器学习·计算机视觉·分类·batch
MicrosoftReactor3 小时前
技术速递|GitHub Copilot 和 AI Agent 如何拯救传统系统
人工智能·github·copilot·agent
啊我不会诶3 小时前
01BFS学习笔记
笔记·学习·算法
only-code3 小时前
SeqXGPT:Sentence-Level AI-Generated Text Detection —— 把大模型的“波形”变成测谎仪
人工智能·大语言模型·ai检测·文本检测
AI科技星3 小时前
引力编程时代:人类文明存续与升维
数据结构·人工智能·经验分享·算法·计算机视觉
老胡说科技5 小时前
美砺科技谢秀鹏:让“看见”走在“相信”之前,AI驱动下的数字化范式革命,从“技术长征”到“生态协同”
人工智能·科技