欢迎光临
我们一直在努力

如何利用深度学习框架 在智能物流包裹快递中_自动学习训练快递包裹纸箱数据集 构建基于深度学习卷积神经网络的Yolov8的物流快递包裹快速识别

如何利用深度学习框架 在智能物流包裹快递中_自动学习训练快递包裹纸箱数据集 构建基于深度学习卷积神经网络的Yolov8的物流快递包裹快速识别

文章目录

      • **1. 数据准备**
        • 数据结构
        • YOLO格式标注文件示例
      • **2. 数据划分**
      • **3. 环境搭建**
        • 安装依赖
        • 下载 YOLOv11s 模型
      • **4. 数据配置**
      • **5. 模型训练**
        • 训练脚本
      • **6. 配置超参数**
      • **7. 模型推理**
        • 单张图片推理
        • 批量推理
      • **8. 性能评估**
        • 使用验证集评估
        • 绘制 PR 曲线

首先同学们,你们现有自己的数据集,自己标注,然后按照下面这个来被。
我说,假设,你有下面这个来进行训练。

快递纸箱数据集YOLO格式|智能物流专用

在这里插入图片描述

2664张图片(训练集1864张,验证集532张,测试集268张) 在这里插入图片描述

数据集规格​: ①标注格式:txt(YOLO格式) ②类别标签:0:Box(快递盒检测,7096个框) 数据来源:真实物流场景采集在这里插入图片描述 从数据准备、格式转换、数据划分到模型训练、推理和性能评估逐步讲解,并附上详细代码。


1. 数据准备

数据结构

假设你的数据集目录结构如下:

dataset/
├── images/
│ ├── train/ # 训练集图片
│ ├── val/ # 验证集图片
│ └── test/ # 测试集图片
└── labels/
├── train/ # 训练集标签 (YOLO格式)
├── val/ # 验证集标签 (YOLO格式)
└── test/ # 测试集标签 (YOLO格式)

YOLO格式标注文件示例

每个标注文件是一个 .txt 文件,内容如下:

0 0.5 0.5 0.3 0.4

  • 第一列:类别标签(0 表示快递盒)
  • 第二列:目标中心点的 x 坐标(归一化值,范围 [0, 1])
  • 第三列:目标中心点的 y 坐标(归一化值,范围 [0, 1])
  • 第四列:目标宽度(归一化值,范围 [0, 1])
  • 第五列:目标高度(归一化值,范围 [0, 1])

2. 数据划分

如果数据尚未划分,可以使用以下代码将图片和标注随机划分为训练集、验证集和测试集。

import os
import random
import shutil

# 数据划分函数
def split_dataset(image_dir, label_dir, output_dir, train_ratio=0.7, val_ratio=0.2):
images = os.listdir(image_dir)
random.shuffle(images)

train_size = int(len(images) * train_ratio)
val_size = int(len(images) * val_ratio)

train_images = images[:train_size]
val_images = images[train_size:train_size + val_size]
test_images = images[train_size + val_size:]

for dataset, img_list in zip(['train', 'val', 'test'], [train_images, val_images, test_images]):
for img in img_list:
shutil.copy(os.path.join(image_dir, img), os.path.join(output_dir, 'images', dataset, img))
label_file = img.replace('.jpg', '.txt')
shutil.copy(os.path.join(label_dir, label_file), os.path.join(output_dir, 'labels', dataset, label_file))

# 调用函数
split_dataset(
image_dir='path/to/images',
label_dir='path/to/labels',
output_dir='dataset'
)


3. 环境搭建

安装依赖

确保安装了必要的库:

pip install torch torchvision opencv-python matplotlib tqdm

下载 YOLOv11s 模型

假设你使用的是 Ultralytics 的 YOLO 实现(如 YOLOv8 或更高版本),可以通过以下命令安装:

pip install ultralytics


4. 数据配置

创建一个 data.yaml 文件来描述数据集:

train: dataset/images/train
val: dataset/images/val
test: dataset/images/test

nc: 1 # 类别数
names: ['Box'] # 类别名称


5. 模型训练

训练脚本

使用 Ultralytics 提供的接口进行训练:

from ultralytics import YOLO

# 加载预训练模型
model = YOLO('yolov11s.pt') # 替换为实际路径

# 开始训练
results = model.train(
data='data.yaml',
epochs=50,
batch=16,
imgsz=640,
device=0, # 使用 GPU
workers=8,
name='exp_yolov11s_box'
)


6. 配置超参数

你可以通过修改 args 参数调整超参数,例如学习率、优化器等:

results = model.train(
data='data.yaml',
epochs=50,
batch=16,
imgsz=640,
lr0=0.01, # 初始学习率
lrf=0.01, # 最终学习率
momentum=0.937, # 动量
weight_decay=0.0005,
device=0, # 使用 GPU
workers=8,
name='exp_yolov11s_box'
)


7. 模型推理

单张图片推理

from PIL import Image
from ultralytics import YOLO

# 加载训练好的模型
model = YOLO('runs/train/exp_yolov11s_box/weights/best.pt')

# 推理单张图片
img_path = 'path/to/test_image.jpg'
results = model(img_path)

# 可视化结果
results[0].show()

批量推理

from glob import glob

# 获取测试集图片路径
test_images = glob('dataset/images/test/*.jpg')

# 批量推理
for img_path in test_images:
results = model(img_path)
results[0].save(f'output/{os.path.basename(img_path)}') # 保存结果


8. 性能评估

使用验证集评估

metrics = model.val() # 在验证集上评估 mAP50 和其他指标
print(metrics.box.map50) # 输出 mAP50

绘制 PR 曲线

import matplotlib.pyplot as plt

plt.plot(metrics.box.p, metrics.box.r)
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title('Precision-Recall Curve')
plt.show()


赞(0)
未经允许不得转载:171主机测评 » 如何利用深度学习框架 在智能物流包裹快递中_自动学习训练快递包裹纸箱数据集 构建基于深度学习卷积神经网络的Yolov8的物流快递包裹快速识别
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址