news 2026/3/22 21:42:03

基于 YOLOv8 的辣椒品种检测系统 深度学习框架YOLOV8模型如何训练智慧农业辣椒品种检测数据集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 YOLOv8 的辣椒品种检测系统 深度学习框架YOLOV8模型如何训练智慧农业辣椒品种检测数据集

智慧农业辣椒品种检测数据集 4500张 辣椒检测 voc yolo标注 3类别

(图像数量与边界框数量):

类别名称(Class)图像数量(Images)边界框数量(Bounding Boxes)
Green Chilli(青椒)2,3198,266
Pickled Pepper(泡椒)1,2751,714
Red Chili(红辣椒)1,2226,975
总计(Total)4,81616,955

📌说明

  • 数据集中共包含3 个类别,适用于目标检测任务(如 YOLO、Faster R-CNN 等)。
  • 总图像数为4,816 张(非 4,500 张),可能包含部分重复或未计入统计的样本;若需严格限定为 4,500 张,建议核查原始数据。
  • 标注格式支持VOC(XML)和 YOLO(TXT)两种常用格式,便于模型训练与迁移。
  • “Pickled Pepper” 类别平均每个图像仅含约1.34 个目标,适合单目标或稀疏场景检测;而“Green Chilli”和“Red Chili”平均每图分别含3.565.71个目标,适用于密集小目标检测任务。


🌶️ 基于 YOLOv8 的辣椒品种检测系统(完整实现)

目标:构建一个能识别青椒(Green Chilli)、泡椒(Pickled Pepper)、红辣椒(Red Chili)的深度学习检测系统
框架:Ultralytics YOLOv8(PyTorch)
输出:训练代码、推理代码、数据集配置、部署脚本、可视化结果
格式支持:YOLO 格式标注(.txt),兼容 VOC 转换


📁 一、项目结构

chili_detection_yolov8/ ├── datasets/ │ └── chili/ │ ├── images/ │ │ ├── train/ # 训练图像 │ │ ├── val/ # 验证图像 │ │ └── test/ # 测试图像 │ └── labels/ │ ├── train/ # YOLO格式标签(.txt) │ ├── val/ │ └── test/ ├── data.yaml # 数据集配置文件 ├── train.py # 训练脚本 ├── detect.py # 推理脚本(图片/视频/摄像头) ├── export_model.py # 导出ONNX/TensorRT模型 ├── utils/ │ └── voc2yolo.py # (可选)VOC转YOLO工具 └── README.md

🔧 二、环境准备

# 创建虚拟环境(推荐)conda create -n yolov8_chilipython=3.9-y conda activate yolov8_chili# 安装依赖pipinstallultralytics opencv-python numpy matplotlib pandas tqdm

ultralytics是官方 YOLOv8 库,自动安装 PyTorch。


🗃️ 三、准备数据集(YOLO 格式)

1. 目录结构要求

datasets/chili/ ├── images/train/ → 所有 .jpg / .png 图像 ├── labels/train/ → 对应的 .txt 标签文件 ├── images/val/ ├── labels/val/ └── ...

2. YOLO 标签格式(每行一个目标)

<class_id> <x_center> <y_center> <width> <height>
  • class_id: 0=Green Chilli, 1=Pickled Pepper, 2=Red Chili
  • 所有坐标归一化到 [0, 1]

💡 示例:labels/train/img_001.txt

0 0.45 0.62 0.2 0.3 2 0.78 0.55 0.15 0.25

3. (可选)VOC 转 YOLO 工具

# utils/voc2yolo.pyimportosimportxml.etree.ElementTreeasET# 类别映射classes=["Green Chilli","Pickled Pepper","Red Chili"]class_to_id={cls:ifori,clsinenumerate(classes)}defconvert_bbox(size,box):dw=1.0/size[0]dh=1.0/size[1]x=(box[0]+box[1])/2.0y=(box[2]+box[3])/2.0w=box[1]-box[0]h=box[3]-box[2]x*=dw w*=dw y*=dh h*=dhreturn(x,y,w,h)defconvert_annotation(xml_path,txt_path):tree=ET.parse(xml_path)root=tree.getroot()size=root.find('size')w=int(size.find('width').text)h=int(size.find('height').text)withopen(txt_path,'w')asf:forobjinroot.iter('object'):cls=obj.find('name').textifclsnotinclass_to_id:continuecls_id=class_to_id[cls]xmlbox=obj.find('bndbox')b=(float(xmlbox.find('xmin').text),float(xmlbox.find('xmax').text),float(xmlbox.find('ymin').text),float(xmlbox.find('ymax').text))bb=convert_bbox((w,h),b)f.write(f"{cls_id}{' '.join(map(str,bb))}\n")# 批量转换voc_dir="path/to/VOC/Annotations"yolo_dir="datasets/chili/labels/train"image_dir="datasets/chili/images/train"forxml_fileinos.listdir(voc_dir):ifxml_file.endswith('.xml'):xml_path=os.path.join(voc_dir,xml_file)txt_path=os.path.join(yolo_dir,xml_file.replace('.xml','.txt'))convert_annotation(xml_path,txt_path)

📄 四、创建data.yaml

# data.yamlpath:./datasets/chilitrain:images/trainval:images/valtest:images/testnc:3names:['Green Chilli','Pickled Pepper','Red Chili']

✅ 确保路径正确,nc为类别数,names顺序必须与标签中的 class_id 一致。


🚀 五、训练模型(train.py

# train.pyfromultralyticsimportYOLO# 加载预训练模型(YOLOv8n, YOLOv8s, YOLOv8m 可选)model=YOLO('yolov8n.pt')# nano 版本,速度快;可用 'yolov8s.pt' 提升精度# 开始训练results=model.train(data='data.yaml',epochs=100,imgsz=640,batch=16,name='chili_yolov8n',device=0,# 使用 GPU 0;设为 'cpu' 则用 CPUpatience=15,# 早停:15轮无提升则停止save=True,plots=True# 保存训练曲线)print("✅ 训练完成!权重保存在 runs/detect/chili_yolov8n/weights/best.pt")

⏱️训练时间参考(RTX 3060):

  • YOLOv8n:~1小时(100 epochs)
  • YOLOv8s:~2.5小时

🔍 六、推理检测(detect.py

# detect.pyfromultralyticsimportYOLOimportcv2importos# 加载训练好的模型model=YOLO('runs/detect/chili_yolov8n/weights/best.pt')# 1. 检测单张图片defdetect_image(image_path,output_path="output.jpg"):results=model(image_path)annotated_img=results[0].plot()# 自动绘制检测框和标签cv2.imwrite(output_path,annotated_img)print(f"✅ 结果已保存至{output_path}")# 2. 检测视频defdetect_video(video_path,output_path="output.mp4"):cap=cv2.VideoCapture(video_path)fourcc=cv2.VideoWriter_fourcc(*'mp4v')fps=cap.get(cv2.CAP_PROP_FPS)width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))out=cv2.VideoWriter(output_path,fourcc,fps,(width,height))whilecap.isOpened():ret,frame=cap.read()ifnotret:breakresults=model(frame)annotated_frame=results[0].plot()out.write(annotated_frame)cap.release()out.release()print(f"✅ 视频检测完成:{output_path}")# 3. 实时摄像头检测defdetect_webcam():cap=cv2.VideoCapture(0)whileTrue:ret,frame=cap.read()ifnotret:breakresults=model(frame)annotated_frame=results[0].plot()cv2.imshow('Chili Detection',annotated_frame)ifcv2.waitKey(1)&0xFF==ord('q'):breakcap.release()cv2.destroyAllWindows()# 使用示例if__name__=="__main__":# detect_image("test.jpg")# detect_video("input.mp4")detect_webcam()

📊 七、评估模型性能

训练完成后,YOLOv8 自动生成以下指标:

  • mAP50: ~0.90+(预期)
  • mAP50-95: ~0.70+
  • 精确率(Precision)、召回率(Recall)曲线

可在runs/detect/chili_yolov8n/查看:

  • confusion_matrix.png
  • results.png
  • val_batch0_pred.jpg(预测样例)

📦 八、导出模型(部署用)

# export_model.pyfromultralyticsimportYOLO model=YOLO('runs/detect/chili_yolov8n/weights/best.pt')model.export(format='onnx')# 导出 ONNXmodel.export(format='engine')# 导出 TensorRT(需 CUDA)

✅ 导出后可用于 OpenCV DNN、TensorRT、ONNX Runtime 等部署环境。


以上文字及代码仅供参考学习使用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/15 18:54:47

ChanlunX缠论插件如何实现股票技术分析的自动化识别?

ChanlunX缠论插件如何实现股票技术分析的自动化识别&#xff1f; 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX ChanlunX是一款基于C开发的缠论可视化分析插件&#xff0c;通过算法自动识别K线走势中的笔…

作者头像 李华
网站建设 2026/3/16 9:24:06

明日方舟美术资源终极指南:快速获取高清立绘的完整攻略

明日方舟美术资源终极指南&#xff1a;快速获取高清立绘的完整攻略 【免费下载链接】ArknightsGameResource 明日方舟客户端素材 项目地址: https://gitcode.com/gh_mirrors/ar/ArknightsGameResource 还在为寻找高质量游戏美术资源而烦恼吗&#xff1f;想要快速获取明日…

作者头像 李华
网站建设 2026/3/16 12:58:37

如何用Pytorch实现终极图像去雾?完整教程来了!

如何用Pytorch实现终极图像去雾&#xff1f;完整教程来了&#xff01; 【免费下载链接】DehazeNet_Pytorch A Pytorch implementation for DehazeNet in paper DehazeNet: An End-to-End System for Single Image Haze Removal 项目地址: https://gitcode.com/gh_mirrors/de/…

作者头像 李华
网站建设 2026/3/17 6:05:52

AB下载管理器:5大核心功能彻底解决你的下载管理难题

AB下载管理器&#xff1a;5大核心功能彻底解决你的下载管理难题 【免费下载链接】ab-download-manager A Download Manager that speeds up your downloads 项目地址: https://gitcode.com/GitHub_Trending/ab/ab-download-manager 还在为电脑里散落各处的下载文件而烦恼…

作者头像 李华
网站建设 2026/3/21 19:04:45

JT808协议终极指南:构建高稳定车联网通信平台的完整方案

JT808协议终极指南&#xff1a;构建高稳定车联网通信平台的完整方案 【免费下载链接】jt808-server JT808、JT808协议解析&#xff1b;支持TCP、UDP&#xff0c;实时兼容2011、2013、2019版本协议&#xff0c;支持分包。支持JT/T1078音视频协议&#xff0c;T/JSATL12苏标主动安…

作者头像 李华
网站建设 2026/3/19 15:38:18

Chrome 紧急预警!CVE-2026-0628 漏洞可绕过安全隔离,数亿用户亟待更新

2026年1月6日&#xff0c;谷歌官方披露Chrome浏览器高风险漏洞CVE-2026-0628&#xff0c;该漏洞源于WebView标签组件的策略执行缺陷&#xff0c;允许攻击者通过恶意扩展绕过浏览器核心安全限制&#xff0c;向特权页面注入恶意脚本或HTML代码。作为全球市场份额超60%的桌面浏览器…

作者头像 李华