深度学习目标检测UOLOV8模型训练 橘子成熟度目标检测数据集 柑橘成熟度检测数据集的训练及应用
深度学习目标检测UOLOV8模型训练 橘子成熟度目标检测数据集 柑橘成熟度检测数据集的训练及应用
·
深度学习目标检测UOLOV8模型训练 橘子成熟度目标检测数据集 柑橘成熟度检测数据集的训练及应用
文章目录
以下文字及代码仅供参考学习使用
**橘子成熟度目标检测数据集 txt格式
| 项目 | 内容 |
|---|---|
| 数据集名称 | 橘子成熟度目标检测数据集 |
| 图像总数 | 7,200 余张(约 7,200+) |
| 数据大小 | 约 3 GB |
| 图像来源 | - 果园实拍场景(自然光照、枝叶遮挡) - 单个果实拍摄图(背景干净,用于精细识别) |
| 任务类型 | 多类别目标检测(成熟度分级) |
| 标注格式 | YOLO .txt 格式(每张图像对应一个标签文件)格式: class_id center_x center_y w h(归一化坐标) |
| 适用模型 | YOLOv5、YOLOv8、YOLO-NAS 等主流目标检测模型 |
| 坐标归一化 | 是(0~1 范围) |
—
类别信息(共3类)
| 类别编号 | 类别名称(英文) | 中文含义 | 成熟阶段说明 |
|---|---|---|---|
| 0 | green orange |
绿色橘子 | 未成熟,果皮全绿,硬度高 |
| 1 | half-green orange |
半绿橘子 | 半成熟,果皮部分转黄/橙,处于过渡期 |
| 2 | orange |
橙色橘子 | 成熟,果皮完全变为橙色,适合采摘 |
在这里插入图片描述
数据集特点
| 特点 | 说明 |
|---|---|
| ✅ 多场景覆盖 | 包含复杂果园环境与干净背景果实图,提升模型泛化能力 |
| ✅ 成熟度三级分类 | 支持精细化农业管理,可用于采摘时机预测 |
| ✅ YOLO标准格式 | 可直接用于 YOLO 系列模型训练,无需格式转换 |
| ✅ 大规模数据 | 7200+ 图像,适合训练高精度检测模型 |
| ✅ 标注质量高 | 边界框准确标注果实位置,避免枝叶误检 |
建议数据划分比例(可选)
注:若未提供划分,建议按以下比例切分:
| 划分类型 | 图像数量(估算) | 占比 | 用途 |
|---|---|---|---|
| 训练集 (train) | ~5,760 张 | 80% | 模型训练 |
| 验证集 (val) | ~720 张 | 10% | 超参调优、训练监控 |
| 测试集 (test) | ~720 张 | 10% | 最终性能评估 |
✅ 实际使用时,请确保每个类别的样本在三集中均衡分布(分层抽样)

YOLO data.yaml 配置文件模板
# data.yaml
train: ./images/train
val: ./images/val
test: ./images/test
# 类别数量
nc: 3
# 类别名称(按编号顺序)
names: ['green orange', 'half-green orange', 'orange']
✅ 将此文件保存在项目根目录,即可用于 YOLO 训练命令调用。
推荐训练命令(YOLOv8 示例)
yolo train \
model=yolov8s.pt \
data=data.yaml \
epochs=100 \
imgsz=640 \
batch=32 \
name=orange_ripeness_detection
以下是针对 橘子成熟度目标检测数据集 的完整训练方案,包含:
- ✅ 数据集说明
- ✅ YOLOv8 训练代码(使用官方
ultralytics库) - ✅ 验证与推理代码
- ✅ 推荐训练参数与技巧
🍊 一、数据集信息
| 类别 | 含义 | 数量 |
|---|---|---|
green orange |
不成熟(青橘) | |
half-green orange |
半成熟(黄绿相间) | 共计 7200+ 张图像 |
orange |
成熟(全黄/橙红) |
- 格式:YOLO 格式
.txt标注文件(每张图对应一个.txt) - 图像来源:果园实拍 + 单个果实拍摄
- 数据量:约 3GB
- 建议划分比例(如未划分):
- 训练集:6000 张
- 验证集:720 张
- 测试集:480 张
📁 二、目录结构建议
orange_maturity/
├── images/
│ ├── train/ # 6000 张
│ ├── val/ # 720 张
│ └── test/ # 480 张
├── labels/
│ ├── train/ # 对应 .txt
│ ├── val/
│ └── test/
├── data.yaml # 数据配置文件
└── train.py # 训练脚本
🛠️ 三、环境准备(YOLOv8)
# 创建虚拟环境(推荐使用 conda)
conda create -n orange_det python=3.9
conda activate orange_det
# 安装 PyTorch + GPU 支持(CUDA 11.8 示例)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# 安装 Ultralytics YOLOv8
pip install ultralytics opencv-python numpy matplotlib pillow
# 验证安装
yolo version
yolo checks
🧩 四、创建 data.yaml 文件
在项目根目录创建 data.yaml:
# data.yaml
train: ./images/train
val: ./images/val
test: ./images/test
# 类别数量
nc: 3
# 类别名称(顺序必须与标签 ID 一致)
names:
- green orange
- half-green orange
- orange
⚠️ 注意:
- 所有
.txt标注中类别 ID 为0,1,2- 确保路径正确,可使用绝对路径或相对路径
🚀 五、训练代码(YOLOv8)
✅ train.py 完整代码
# train.py
from ultralytics import YOLO
# 加载预训练模型(推荐使用 yolov8s 或 yolov8m 提升多类识别精度)
model = YOLO('yolov8s.pt') # 可替换为 yolov8m.pt / yolov8l.pt
# 开始训练
results = model.train(
data='data.yaml', # 数据配置文件
epochs=200, # 成熟度差异小,建议训练更久
imgsz=640, # 输入尺寸,可尝试 800 提升小目标检测
batch=16, # 根据显存调整(24GB 显卡可用 16~32)
name='orange_maturity_v8s', # 实验名称
device=0, # 使用 GPU 0,多卡写 [0,1]
workers=8, # 数据加载线程
optimizer='AdamW', # 更稳定,适合细粒度分类
lr0=0.001, # 初始学习率
patience=50, # 早停:50轮无提升则停止
project='runs/train', # 结果保存路径
cache=False, # 可设 True 加快训练(内存足够)
close_mosaic=15, # 最后15轮关闭 Mosaic 增强
augment=True, # 启用数据增强
hsv_h=0.015,
hsv_s=0.7,
hsv_v=0.4,
degrees=20,
translate=0.2,
scale=0.5,
flipud=0.0,
fliplr=0.5
)
print("✅ 橘子成熟度检测模型训练完成!")
🔍 模型选择建议:
| 模型 | 显存需求 | 速度 | 精度 | 推荐场景 |
|---|---|---|---|---|
yolov8n.pt |
~4GB | ⚡⚡⚡ | ★★☆ | 快速原型 |
yolov8s.pt |
~6GB | ⚡⚡ | ★★★★ | ✅ 推荐(平衡) |
yolov8m.pt |
~8GB | ⚡ | ★★★★★ | 高精度识别(推荐) |
📌 因为三类颜色相近(绿→黄绿→橙),建议使用
yolov8m以提升区分能力

🔍 六、推理代码(单张图像)
# predict.py
from ultralytics import YOLO
# 加载训练好的最佳模型
model = YOLO('runs/train/orange_maturity_v8s/weights/best.pt')
# 单张图像检测
results = model.predict(
source='test_orange.jpg', # 输入图片路径
conf=0.25, # 置信度阈值
iou=0.45,
save=True, # 保存带框图像
project='runs/predict',
name='maturity_result',
show=False
)
# 打印结果
for result in results:
boxes = result.boxes
for box in boxes:
cls_id = int(box.cls)
conf = float(box.conf)
label = model.names[cls_id]
print(f"🍊 检测到: {label}, 置信度: {conf:.3f}")
📊 七、评估代码(在测试集上评估)
# evaluate.py
from ultralytics import YOLO
# 加载训练好的模型
model = YOLO('runs/train/orange_maturity_v8s/weights/best.pt')
# 在 test 集上评估
metrics = model.val(
data='data.yaml',
split='test',
batch=16,
imgsz=640,
save_json=True,
project='runs/val',
name='maturity_metrics'
)
# 输出关键指标
print(f"📊 mAP@50: {metrics.box.map50:.4f}")
print(f"📊 mAP@50:95: {metrics.box.map:.4f}")
print(f"📊 Precision: {metrics.box.p:.4f}")
print(f"📊 Recall: {metrics.box.r:.4f}")
print(f"📊 F1-score: {metrics.box.f1.mean():.4f}")
🎯 八、训练技巧(提升成熟度识别精度)
1. 增强颜色感知能力
model.train(
...
hsv_h=0.015, # 色调扰动(对颜色敏感任务重要)
hsv_s=0.7, # 饱和度增强(突出绿色 vs 橙色)
hsv_v=0.4, # 明度变化
)
2. 使用更高分辨率
imgsz=800 # 更好区分果实颜色边界
3. 使用 yolov8m 或 yolov8l
model = YOLO('yolov8m.pt')
4. 添加“复制粘贴”增强(适合小目标)
copy_paste=0.3 # 随机复制果实到背景
📦 九、导出模型(用于部署)
# 导出为 ONNX(通用部署)
model.export(format='onnx', dynamic=True, simplify=True)
# 导出为 TensorRT(NVIDIA 加速)
model.export(format='engine', device=0)
# 导出为 CoreML(iOS)
model.export(format='coreml')
生成 best.onnx,可用于无人机、采摘机器人、手机App等。
✅ 十、预期性能(使用 yolov8m)
| 指标 | 预期值 |
|---|---|
| mAP@50 | 0.88 ~ 0.94 |
| mAP@50:95 | 0.55 ~ 0.65 |
| 成熟 vs 半成熟区分准确率 | > 90% |
| 推理速度(640×640) | ~30 FPS(RTX 3060) |
更多推荐
所有评论(0)