news 2026/6/25 4:18:56

深度学习框架如何训练纸箱堆叠计数检测数据集 构建基于深度学习框架YOLOV8纸箱检测系统 高精度智能仓储纸箱计数系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深度学习框架如何训练纸箱堆叠计数检测数据集 构建基于深度学习框架YOLOV8纸箱检测系统 高精度智能仓储纸箱计数系统

1


📦 纸箱堆叠计数检测数据集概览表

项目内容
数据集名称纸箱堆叠计数检测数据集(Cardboard Carton Counting Dataset)
总图像数量21,199 张
目标类别数1 类
类别名称(英文)cardboard-carton
类别名称(中文)纸箱 / 瓦楞纸箱
标注工具LabelImg(生成 PASCAL VOC 格式,后转为 YOLO 格式)
标注格式YOLO 格式.txt文件,每行:class_id x_center y_center width height,坐标归一化)
应用场景- 仓储物流自动化盘点- 智能叉车/AGV 货物识别- 电商仓库纸箱堆叠高度与数量统计

📊 数据划分详情表

数据集类型图像数量占比说明
训练集(train)16,959 张80%用于模型参数学习
验证集(val)2,119 张10%用于超参数调优与早停
测试集(test)2,121 张10%用于最终性能评估(不参与训练)
总计21,199 张100%

✅ 划分比例严格遵循8:1:1,符合工业级数据集标准。


📁 推荐目录结构(YOLO 格式)

cardboard_carton_dataset/ ├── images/ │ ├── train/ # 16,959 张 │ ├── val/ # 2,119 张 │ └── test/ # 2,121 张 ├── labels/ │ ├── train/ # 对应 .txt 标签 │ ├── val/ │ └── test/ └── data.yaml # 配置文件

📄data.yaml配置文件示例

# cardboard_carton_dataset/data.yamltrain:./images/trainval:./images/valtest:./images/testnc:1names:['cardboard-carton']

💡 补充说明

  • 单类检测优势:模型专注学习纸箱的尺度、遮挡、堆叠形态,收敛更快、精度更高。
  • 计数实现方式
    • 直接通过检测框数量 = 纸箱数量(适用于可分辨单个纸箱)
    • 若严重堆叠不可分,可结合实例分割(如 YOLOv8-seg)回归头预测堆叠层数
  • 典型挑战
    • 纸箱颜色/尺寸多样
    • 高度堆叠导致遮挡
    • 光照变化与反光(尤其在仓库环境)

该数据集规模大(>21k)、划分规范、标注统一,非常适合用于工业仓储自动化、智能物流机器人、AI 盘点系统等场景的模型训练与部署。


✅ 一、数据集目录结构(确认无误)

cardboard_carton_dataset/ ├── images/ │ ├── train/ # 16,959 张 │ ├── val/ # 2,119 张 │ └── test/ # 2,121 张 ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ └── data.yaml

data.yaml内容:

train:./images/trainval:./images/valtest:./images/testnc:1names:['cardboard-carton']

✅ 二、YOLOv8 完整训练代码

保存为train_cardboard.py

# -*- coding: utf-8 -*-""" 纸箱堆叠计数检测 - YOLOv8 训练脚本 类别:1 类(cardboard-carton) 图像数:21,199 张(8:1:1 划分) 作者:AI助手 """importosfromultralyticsimportYOLOimporttorch# -----------------------------# 1. 配置路径与设备# -----------------------------DATASET_PATH="cardboard_carton_dataset"ifnotos.path.exists(DATASET_PATH):raiseFileNotFoundError(f"❌ 数据集路径 '{DATASET_PATH}' 不存在!")device='cuda'iftorch.cuda.is_available()else'cpu'print(f"🚀 使用设备:{device}")# -----------------------------# 2. 加载预训练模型# -----------------------------# 推荐 yolov8s(平衡速度与精度)# 若部署到边缘设备(如 Jetson),可用 yolov8nmodel=YOLO('yolov8s.pt')# -----------------------------# 3. 启动训练(针对纸箱堆叠优化)# -----------------------------results=model.train(data=os.path.join(DATASET_PATH,'data.yaml'),# ⏱️ 训练参数epochs=100,imgsz=1280,# 关键!提升密集小纸箱检出率batch=16,# 根据 GPU 调整(RTX 3060 可设 16~32)name='cardboard_yolov8s_1280',device=device,# 🎨 数据增强(仓库场景定制)hsv_h=0.015,# 色调扰动(应对不同纸箱颜色)hsv_s=0.7,# 饱和度hsv_v=0.5,# 亮度(应对仓库光照不均)degrees=10.0,# 旋转(模拟叉车视角)translate=0.2,scale=0.5,mosaic=1.0,# ✅ 必开!将小纸箱拼接到新背景,提升召回mixup=0.1,flipud=0.0,fliplr=0.5,# 🧠 训练策略patience=25,# 早停save_period=10,workers=8,cache=False# 若内存充足可设 True)print("✅ 训练完成!")print(f"📌 最佳模型路径: runs/detect/cardboard_yolov8s_1280/weights/best.pt")

💡命令行替代方案

yolo detect traindata=cardboard_carton_dataset/data.yamlmodel=yolov8s.ptepochs=100imgsz=1280batch=16

✅ 三、纸箱计数系统核心代码

保存为carton_counter.py

# -*- coding: utf-8 -*-""" 纸箱堆叠计数系统 支持:单图 / 视频 / 摄像头 实时计数 输出:带计数结果的图像 + JSON 作者:AI助手 """importcv2importosfromultralyticsimportYOLOfromcollectionsimportdequeimporttimeclassCartonCounter:def__init__(self,model_path='best.pt',conf_thres=0.4):""" 初始化计数器 :param model_path: YOLOv8 模型路径 :param conf_thres: 置信度阈值 """self.model=YOLO(model_path)self.conf_thres=conf_thres self.font=cv2.FONT_HERSHEY_SIMPLEXdefcount_from_image(self,image_path,save_result=True):"""单图计数"""img=cv2.imread(image_path)results=self.model(img,conf=self.conf_thres)forrinresults:boxes=r.boxes count=len(boxes)# 每个检测框 = 1 个纸箱# 绘制检测框annotated_img=r.plot()# 添加计数文本cv2.putText(annotated_img,f'Cartons:{count}',(20,50),self.font,1.5,(0,255,0),3)ifsave_result:output_path=f"counted_{os.path.basename(image_path)}"cv2.imwrite(output_path,annotated_img)print(f"✅ 计数完成:{output_path}| 数量:{count}")returncount,annotated_imgreturn0,imgdefcount_from_video(self,video_path,output_path="counted_output.mp4"):"""视频流计数"""cap=cv2.VideoCapture(video_path)fps=int(cap.get(cv2.CAP_PROP_FPS))width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))# 视频写入器fourcc=cv2.VideoWriter_fourcc(*'mp4v')out=cv2.VideoWriter(output_path,fourcc,fps,(width,height))frame_count=0whilecap.isOpened():ret,frame=cap.read()ifnotret:breakresults=self.model(frame,conf=self.conf_thres)forrinresults:count=len(r.boxes)annotated_frame=r.plot()cv2.putText(annotated_frame,f'Cartons:{count}',(20,50),self.font,1.5,(0,255,0),3)out.write(annotated_frame)ifframe_count%30==0:# 每秒打印一次print(f"🕒 视频帧{frame_count}: 纸箱数量 ={count}")frame_count+=1cap.release()out.release()print(f"✅ 视频处理完成:{output_path}")defcount_from_camera(self,camera_id=0):"""实时摄像头计数"""cap=cv2.VideoCapture(camera_id)print("📷 按 'q' 退出摄像头")whileTrue:ret,frame=cap.read()ifnotret:breakresults=self.model(frame,conf=self.conf_thres)forrinresults:count=len(r.boxes)annotated_frame=r.plot()cv2.putText(annotated_frame,f'Cartons:{count}',(20,50),self.font,1.5,(0,255,0),3)cv2.imshow('Carton Counter',annotated_frame)ifcv2.waitKey(1)&0xFF==ord('q'):breakcap.release()cv2.destroyAllWindows()# -----------------------------# 使用示例# -----------------------------if__name__=="__main__":counter=CartonCounter(model_path='runs/detect/cardboard_yolov8s_1280/weights/best.pt')# 1. 单图计数count,img=counter.count_from_image("warehouse.jpg")# 2. 视频计数# counter.count_from_video("warehouse_video.mp4")# 3. 摄像头实时计数# counter.count_from_camera()

✅ 四、高级功能扩展(可选)

1. 堆叠高度估算(基于 YOLOv8-seg 实例分割)

# 需先训练分割模型model_seg=YOLO('yolov8s-seg.pt')results=model_seg("image.jpg")forrinresults:masks=r.masks# 获取分割掩码ifmasksisnotNone:# 通过掩码垂直方向像素高度估算层数formaskinmasks.data:height_pixels=mask.sum(dim=2).max().item()estimated_layers=int(height_pixels/avg_carton_height)

2. Web API 接口(FastAPI)

# api.pyfromfastapiimportFastAPI,File,UploadFilefromcarton_counterimportCartonCounterimportcv2importnumpyasnp app=FastAPI()counter=CartonCounter()@app.post("/count")asyncdefcount_cartons(file:UploadFile=File(...)):contents=awaitfile.read()nparr=np.frombuffer(contents,np.uint8)img=cv2.imdecode(nparr,cv2.IMREAD_COLOR)count,_=counter.count_from_image(None)# 修改 count_from_image 支持 numpy 输入return{"carton_count":int(count)}

✅ 五、部署建议

场景方案
仓库固定摄像头NVIDIA Jetson AGX Orin + TensorRT(yolov8s.engine
移动盘点终端Android App(ONNX Runtime + CameraX)
云平台分析AWS/Azure 上部署 Docker 容器(含 FastAPI)
PLC 联动通过 Modbus TCP 发送计数结果到产线控制系统

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

AI教材写作必备!高效工具助力,产出低查重优质教材!

在编写教材的过程中,我总是能精准踩到“慢节奏”的各种雷点。即使框架和资料都有了,却常常被内容创作所困扰——一段话反复推敲半小时,仍觉得表达不够准确;章节之间的连接总是难以找到合适的词汇,导致创作频频暂停。更…

作者头像 李华
网站建设 2026/6/25 1:37:12

KIHU 快狐|65 寸横屏落地广告机 车站候车厅商业展示

在当今数字化时代,车站候车厅作为人流量密集的公共场所,成为了商业展示的重要场所。[KIHU快狐]推出的65寸横屏落地广告机,凭借其卓越的技术实力和多样化的应用场景,为车站候车厅带来了全新的商业展示解决方案。产品特点与技术优势…

作者头像 李华
网站建设 2026/6/25 1:40:06

计算机毕设Java基于web的园区车辆出入管理系统 基于Java Web的园区车辆智能出入管理解决方案 Java Web技术驱动的园区车辆通行管理系统设计与实现

计算机毕设Java基于web的园区车辆出入管理系统7iz8s9 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着城市化进程的加速,园区的车辆管理成为了一个亟待解决的问题…

作者头像 李华
网站建设 2026/6/24 19:01:10

AI之Agent:Moltbot的简介、安装和使用方法、案例应用之详细攻略

AI之Agent:Moltbot的简介、安装和使用方法、案例应用之详细攻略 目录 Moltbot的简介 1、特点 Moltbot的安装与使用方法 1、安装 2、使用方法 3、从源码(开发者 ) 4、安全默认与注意点(仓库强调) Moltbot的案例…

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

白茶类品牌全案营销咨询公司哪家靠谱?

摘要:茶类竞争格局中,白茶曾因“无体感特点、无消费价值感、无独立产品形态”沦为弱势品类,品品香也深陷“卖白茶等于白送”的认知困境,为了解决市场困境,他们找到了品牌全案营销咨询公司奇正沐古,奇正沐古…

作者头像 李华