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

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

介绍:用一个大家都能随时访问的地方,统一存放项目中所有文件,避免两个人各存一份导致版本混乱。比如你们俩分工标注图片、写代码,如果你存自己电脑里,组员 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里,打开图片就能看到植物和土壤被不同颜色标注出来了。

相关推荐
盐水冰3 小时前
【烘焙坊项目】后端搭建(12) - 订单状态定时处理,来单提醒和顾客催单
java·后端·学习
Hello小赵3 小时前
视频压缩编码学习(一)—— 基础知识大集合
学习
网安INF3 小时前
【论文阅读】-《TtBA: Two-third Bridge Approach for Decision-Based Adversarial Attack》
论文阅读·人工智能·神经网络·对抗攻击
似水明俊德4 小时前
02-C#.Net-反射-学习笔记
开发语言·笔记·学习·c#·.net
adore.9685 小时前
3.18 复试学习
学习
留白_5 小时前
MySQL学习(9)——索引
学习
请你喝好果汁6415 小时前
生信学习笔记:ArchR 处理小麦单细胞 ATAC-seq 中的细胞数差异与 Embedding 报错调试
学习
jinanwuhuaguo6 小时前
OpenClaw、飞书、Claude Code、Codex:四维AI生态体系的深度解构与颗粒化对比分析
大数据·人工智能·学习·飞书·openclaw
萨文 摩尔杰6 小时前
GPS原理学习
学习·fpga开发
fengci.7 小时前
ctfshow(web入门)295-300
java·开发语言·学习