当前位置: 首页 > news >正文

蓝莓成熟检测

1.新建文件夹之后用

#一模一样的结构命名 blueberry_82/ ├── images/ │ ├── train/ # 放 80% 的图片 │ └── val/ # 放 20% 的图片 └── labels/ ├── train/ # 放对应 80% 图片的 txt 标签 └── val/ # 放对应 20% 图片的 txt 标签

2. 安装 LabelMe

#打开 PyCharm 终端,直接用 pip 安装: pip install labelme
#安装完成后,输入下面的命令就能打开,打开界面 labelme

如下图(左上角点点击“打开”,打开需要标签的图片文件)

3.标签具体步骤

  1. 先点左侧工具栏的「多边形」按钮。
  2. 直接在图片上,随便点一下,先画一个简单的形状(哪怕点一个点也行)。
  3. 画多边形:沿着它的边缘,用鼠标点一圈轮廓,双击闭合。
  4. 画完后,会自动弹出一个「输入标签」的对话框!这时候就能正常输入了。输入immature,点 OK(表示未成熟);输入mature,点 OK(表示成熟)。
  5. 保存按Ctrl + S,软件会自动在你的图片文件夹里,生成一个和图片同名的.json文件,比如你的图片是Camera 1(1)_1.bmp,保存后就会生成Camera 1(1)_1.json。所有图片打完标签后,搜索图片后缀.json,全选把.json文件另存用于后续标签生成。

如下图就是打过标签的图片,一定要记得按Ctrl + S,之后点击左上角下一张就可以直接跳转到下一张图片

4.安装 YOLOv8(最好先获取Python 3.12解释器

#打开 PyCharm 底部的 Terminal(终端)先升级 python -m pip install --upgrade pip #再安装 ultralytics(YOLOv8 的官方库) pip install ultralytics #国内镜像下载yolov8n-seg https://mirror.ghproxy.com/https://github.com/ultralytics/ultralytics/releases/download/v8.2.0/yolov8n-seg.pt

5.复制下面代码,生成YOLO能够识别的txt文件记得更改文件输入、输出路径

# ##生成txt标签文件######################### # import json # import os # import numpy as np # # def labelme_to_yolo(json_path, output_dir, class_map, img_dir): # """ # 将LabelMe的JSON文件转换为YOLO分割格式的TXT文件 # """ # # 读取JSON文件 # with open(json_path, 'r', encoding='utf-8') as f: # data = json.load(f) # # # 获取图片宽高 # img_w = data['imageWidth'] # img_h = data['imageHeight'] # # 生成输出文件名 # base_name = os.path.splitext(os.path.basename(json_path))[0] # output_path = os.path.join(output_dir, f"{base_name}.txt") # # # 写入YOLO格式 # with open(output_path, 'w', encoding='utf-8') as out_f: # for shape in data['shapes']: # # 获取类别ID # label = shape['label'] # if label not in class_map: # print(f"警告:发现未定义标签 '{label}',已跳过") # continue # class_id = class_map[label] # # # 归一化多边形坐标 # points = np.array(shape['points'], dtype=np.float32) # points[:, 0] /= img_w # points[:, 1] /= img_h # # # 拼接成一行字符串:class_id x1 y1 x2 y2 ... # points_str = " ".join([f"{x:.6f} {y:.6f}" for x, y in points]) # out_f.write(f"{class_id} {points_str}\n") # print(f"✅ 已转换:{base_name}.txt")

6.在image同级文件下新建blueberry.yaml文件 注意修改文件后缀为.yaml记得修改数据集目录

# 数据集根目录 path: D:\BaiduNetdiskDownload\29222462\DB-1\DB-1 # 训练/验证集路径(相对于path) train: images val: images # 类别数量和名称 nc: 2 names: ['immature', 'mature']

7.开始训练专属模型这是学习100次的代码最好查一下每个参数的意思 好针对你的电脑性能修改

#pycharm终端输入 yolo segment train data=blueberry.yaml model=yolov8n-seg.pt epochs=100 imgsz=640 device=0

如下图,大面积的0代表有问题,请检查步骤1中创建的文件夹是否对,是否每个子文件夹都有文件

注意!运行完后显示训练好的模型,如图为E:\new perjectl\pythonProject3\runs\segment\train-4

8.实际蓝莓成熟识别注意输入输出文件的位置修改

from ultralytics import YOLO # 加载你训练好的模型 model = YOLO("runs/segment/train-5/weights/best.pt") # 批量处理你的蓝莓图片 results = model.predict( source=r"D:\BaiduNetdiskDownload\29222462\DB-3\Generated Images", save=True, conf=0.25, save_dir=r"D:\BaiduNetdiskDownload\29222462\DB-3\Images_results" # 改成你自己的路径 ) # 统计每一张图的成熟度 for i, result in enumerate(results): mature_count = sum(1 for box in result.boxes if int(box.cls[0]) == 1) immature_count = sum(1 for box in result.boxes if int(box.cls[0]) == 0) print(f"图片{i+1}: 成熟蓝莓{mature_count}颗, 未成熟蓝莓{immature_count}颗") device=cpu

其中runs/segment/train-5/weights/best.pt 是你模型的位置,具体命名及查看方式步骤7及如下两种

跑完这部分代码就可以查看运行结果 至此完成了所有的蓝莓识别步骤

http://www.cnnetsun.cn/news/2082146.html

相关文章:

  • 公务员考试培训机构哪家好?粉笔、中公、华图多维度客观对比与上岸建议
  • 计算机视觉入门:5本免费经典书籍推荐
  • 智能居家设备管控实践|一站式衣物护理类智能 APP 功能深度体验
  • 从Vector到恒润:实战解析不同AUTOSAR BSW供应商的BOOTLOADER开发差异与选型
  • 别再只贴代码了!聊聊vue-quill-editor附件上传的那些‘坑’与最佳实践
  • MATLAB用户实测北大天元2.0:语法兼容性如何?手把手教你跑通第一个三维图
  • Switch大气层整合包完整指南:3步安装+5大优化技巧
  • 大学生现在这样学网络安全,明年春招 offer 手到擒来!(漏洞挖掘+简历+面试全攻略)
  • 3分钟快速安装Apple USB网络共享驱动:告别Windows连接烦恼
  • 让STM32F429的RGB屏‘动’起来:基于CubeMX+TouchGFX Designer的UI动画与交互实战
  • 如何构建航班价格自动化监控系统以应对动态定价挑战?
  • 从SPI到QPI:深入解析W25Q16串行Flash的多种操作模式与性能优化
  • TDengine时序数据库石油化工行业架构设计
  • ComfyUI Essentials插件:如何用这些“隐藏神器“解决你的AI绘画痛点?[特殊字符]
  • 如何一键永久激活Windows和Office:KMS_VL_ALL_AIO智能激活工具的完整指南
  • 二分1213123
  • 【金融风控】 信贷审批前,为什么要先进行IP风险等级评估?
  • 告别黑盒测试:手把手教你用CANoe NetWork Node搭建一个实时监控Server
  • 从Matlab到FPGA:手把手教你用Verilog实现核信号梯形成形算法(附完整仿真与实测)
  • MATLAB export_fig工具箱:科研图像导出架构完全指南
  • 概率论:条件概率与乘法公式深度剖析、常见概率类型
  • BetterNCM Installer:3分钟解决网易云插件安装难题
  • 别再用Iris数据集做分类了!试试用Python和Seaborn做一次完整的数据探索分析(EDA)
  • 别再只盯着UFS了!聊聊eMMC在智能手表和IoT设备里的那些‘钉子户’应用
  • BetterNCM Installer终极指南:一键实现网易云音乐插件自动化管理的完整方案
  • Kubernetes v1.20.9 集群搭建
  • CopprLink:PCIe线缆的“统一接口”时代,如何重塑数据中心互连格局?
  • Resophy静态站点生成器:极简设计、高性能架构与实战指南
  • Hyper-V虚拟网络性能翻倍?手把手教你为Windows Server 2022启用SR-IOV(附兼容性检查清单)
  • Qwen3.5-2B企业实操:构建本地知识库问答系统,响应延迟<800ms