使用YOLOv8模型训练水果识别数据集 通过训练出的权重 建立基于深度学习的Yolov8水果检测识别
YOLO 目标检测 水果数据集
YOL0水果识别
图片数量8479,xm| 和txt标签都有;
类别: Apple, Banana, Grape, Orange, Pineapple, Waterme lon;
使用YOLOv8模型训练水果识别数据集涉及几个步骤,包括环境配置、数据准备、模型训练和评估。以下是详细的指南:
一、环境配置
首先确保安装了必要的库和YOLOv8模型。由于YOLOv8可能是一个假设的名称或最新版本,这里我们以YOLOv5为例进行说明,但步骤大体相同。
# 安装PyTorch和其他依赖
pip install torch torchvision torchaudio
# 克隆YOLOv5仓库
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
# 安装其他依赖
pip install -r requirements.txt
二、数据准备
1. 数据集结构
数据集应该按照以下格式组织:
fruit_dataset/
├── images/
│ ├── train/
│ └── val/
└── labels/
├── train/
└── val/
2. 创建data.yaml
文件
创建一个data.yaml
文件来描述你的数据集路径和类别信息:
train: ./fruit_dataset/images/train # 训练图片路径
val: ./fruit_dataset/images/val # 验证图片路径
nc: 6 # 类别数量
names: ['Apple', 'Banana', 'Grape', 'Orange', 'Pineapple', 'Watermelon'] # 类别名
三、划分数据集
数据集还没有划分成训练集和验证集,可以使用以下脚本进行划分(例如80%训练集,20%验证集):
import os
import random
import shutil
def split_dataset(img_dir, lbl_dir, output_dir, train_ratio=0.8):
files = [f for f in os.listdir(img_dir) if f.endswith('.jpg') or f.endswith('.png')]
random.shuffle(files)
split_point = int(len(files) * train_ratio)
def copy_files(files_list, dest_folder):
for f in files_list:
shutil.copy(os.path.join(img_dir, f), os.path.join(dest_folder, 'images'))
label_name = os.path.splitext(f)[0] + '.txt'
shutil.copy(os.path.join(lbl_dir, label_name), os.path.join(dest_folder, 'labels'))
os.makedirs(os.path.join(output_dir, 'train', 'images'), exist_ok=True)
os.makedirs(os.path.join(output_dir, 'train', 'labels'), exist_ok=True)
os.makedirs(os.path.join(output_dir, 'val', 'images'), exist_ok=True)
os.makedirs(os.path.join(output_dir, 'val', 'labels'), exist_ok=True)
copy_files(files[:split_point], os.path.join(output_dir, 'train'))
copy_files(files[split_point:], os.path.join(output_dir, 'val'))
# 使用示例
img_directory = "path/to/your/images"
lbl_directory = "path/to/your/labels"
output_directory = "path/to/output/dataset"
split_dataset(img_directory, lbl_directory, output_directory)
四、开始训练
在YOLOv5目录下执行以下命令开始训练:
python train.py --img 640 --batch 16 --epochs 100 --data path/to/data.yaml --weights yolov5s.pt --name fruit_detection
--img
设置输入图像尺寸为640x640。--batch
根据GPU内存大小调整批次大小。--epochs
设置训练周期数。--data
指向之前创建的data.yaml
文件。--weights
可以选择预训练权重,如yolov5s.pt
表示使用YOLOv5的小型模型作为预训练模型。--name
设置训练结果保存的目录名称。
五、评估模型
训练完成后,可以通过以下命令对模型进行评估:
python val.py --data path/to/data.yaml --weights runs/train/fruit_detection/weights/best.pt --task test
六、测试模型
使用训练好的模型进行预测:
python detect.py --weights runs/train/fruit_detection/weights/best.pt --img 640 --conf 0.25 --source path/to/test/image.jpg