神经网络组植物分类学习规划与本周进展综述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里,打开图片就能看到植物和土壤被不同颜色标注出来了。

相关推荐
小白郭莫搞科技1 天前
鸿蒙跨端框架Flutter学习:CustomTween自定义Tween详解
学习·flutter·harmonyos
阳光九叶草LXGZXJ1 天前
达梦数据库-学习-47-DmDrs控制台命令(LSN、启停、装载)
linux·运维·数据库·sql·学习
phoenix@Capricornus1 天前
CNN中卷积输出尺寸的计算
人工智能·神经网络·cnn
A9better1 天前
嵌入式开发学习日志53——互斥量
stm32·嵌入式硬件·学习
~kiss~1 天前
大模型中激活函数、前馈神经网络 (FFN) 的本质
人工智能·深度学习·神经网络
进阶小白猿1 天前
Java技术八股学习Day30
java·开发语言·学习
近津薪荼1 天前
优选算法——双指针6(单调性)
c++·学习·算法
Keep_Trying_Go1 天前
基于GAN的文生图算法详解ControlGAN(Controllable Text-to-Image Generation)
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·文生图
修修修也1 天前
【无标题】技术欲望是怎样渐进增长的?
学习
whale fall1 天前
celery -A tool.src.main worker --loglevel=info --queues=worker1_queue & 什么意思
python·学习·apache