使用YOLO v8训练自己的数据集(苹果新鲜度识别)

  目录

前言:    

一、YOLO v8环境搭建

二、训练数据集的准备工作

1、收集数据集

2、划分数据集

3、训练模型

3.1新建一个数据集yaml文件

4、预测模型

5、验证模型

6、训练结束

三、检测结果与思考:

1、检测结果

2. 实验结果与分析

3、知识体系:

3.1、YOLOv8 概述

3.2、 模型结构设计

3.3、模型推理过程

四、总结


前言:    

        近年来,随着全球经济的发展,水果消费市场规模不断扩大,水果种类也日益丰富。水果检测与识别技术在农业生产、仓储物流、超市零售等领域具有重要的应用价值。传统的苹果检测与识别方法主要依赖于人工识别,这种方法在一定程度上受到人力成本、识别效率和准确性等方面的限制。因此,开发一种高效、准确的自动化水果检测与识别系统具有重要的研究意义和实际价值。

        计算机视觉作为人工智能的一个重要分支,在目标检测和识别方面取得了显著的研究进展。特别是深度学习技术的发展,极大地推动了计算机视觉在水果检测与识别领域的应用。许多研究人员已经尝试利用深度学习技术进行苹果检测与识别,取得了一定的成果。
 

一、YOLO v8环境搭建

1、创建一个虚拟环境

conda create -n torch1.12.1 python=3.8.8

2、激活刚建的虚拟环境 

activate torch1.12.1

3、到官方网站下载yolo模型 ,下载好后解压,里面有个文件requirements.txt  

http://mirrors / ultralytics / ultralytics · GitCode 

 4、安装一个整体包:

pip install -r .\requirements.txt  

注:直接按照路径会有问题,找到自己下载后yolo v8文件里的 requirements.txt 文件路径 

5、然后安装ultralytics ,这是必须的。也可以用镜像地址 

pip   install   ultralytics   -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com 

6、安装下载好包,接下来就是验证:

yolo predict model=yolov8n.pt source='ultralytics/assets/bus.jpg' show=True save=True  

二、训练数据集的准备工作

1、收集数据集

我们选择的苹果数据集包含图片数量978张

2、划分数据集

我们导出的数据标签是这个结构

标签类别包含两类:fresh_apple和rotten_apple;

├── yolov8_dataset
	└── train
		└── images (folder including all training images)
		└── labels (folder including all training labels)
	└── test
		└── images (folder including all testing images)
		└── labels (folder including all testing labels)
	└── val
		└── images (folder including all testing images)
		└── labels (folder including all testing labels)

运行脚本来划分数据集:

import os
import random
import shutil

# 设置随机数种子
random.seed(123)

# 定义文件夹路径
root_dir = 'Moon_Cake'
image_dir = os.path.join(root_dir, 'images', 'all')
label_dir = os.path.join(root_dir, 'labels', 'all')
output_dir = 'yolov8_dataset'

# 定义训练集、验证集和测试集比例
train_ratio = 0.7
valid_ratio = 0.15
test_ratio = 0.15

# 获取所有图像文件和标签文件的文件名(不包括文件扩展名)
image_filenames = [os.path.splitext(f)[0] for f in os.listdir(image_dir)]
label_filenames = [os.path.splitext(f)[0] for f in os.listdir(label_dir)]

# 随机打乱文件名列表
random.shuffle(image_filenames)

# 计算训练集、验证集和测试集的数量
total_count = len(image_filenames)
train_count = int(total_count * train_ratio)
valid_count = int(total_count * valid_ratio)
test_count = total_count - train_count - valid_count

# 定义输出文件夹路径
train_image_dir = os.path.join(output_dir, 'train', 'images')
train_label_dir = os.path.join(output_dir, 'train', 'labels')
valid_image_dir = os.path.join(output_dir, 'valid', 'images')
valid_label_dir = os.path.join(output_dir, 'valid', 'labels')
test_image_dir = os.path.join(output_dir, 'test', 'images')
test_label_dir = os.p
  • 5
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值