YOLOv11超市货架牛奶目标检测数据集-463张-Milk-1

YOLOv11超市货架牛奶目标检测数据集-463张-Milk-1 YOLOv11超市货架牛奶目标检测数据集 数据集基本信息目标类别 [‘ID-01_pascual_sin-lactosa_violet’, ‘ID-02-asturiana-desnatada-green’, ‘ID-03-asturiana-semi-blue’, ‘ID-04-bottle_fresca’, ‘ID-05-consum_entera_green’, ‘ID-06-desnatada_no-lactosa_violet’, ‘ID-07-montar_blue’, ‘ID-08-pascual_entera_blue’, ‘ID-09-semi-desnatada_green’, ‘ID-10-smetana’]中文类别[‘帕苏阿尔无乳糖紫盒’, ‘阿斯图里亚纳脱脂绿盒’, ‘阿斯图里亚纳半脱脂蓝盒’, ‘新鲜瓶装牛奶’, ‘康松全脂绿盒’, ‘脱脂无乳糖紫盒’, ‘蒙塔尔蓝盒’, ‘帕苏阿尔全脂蓝盒’, ‘半脱脂绿盒’, ‘斯梅塔娜’]训练集324 张验证集93 张测试集46 张总计463 张 data.yaml 配置信息该数据集提供了data.yaml文件内容如下train:../train/imagesval:../valid/imagestest:../test/imagesnc:10names:[ID-01_pascual_sin-lactosa_violet,ID-02-asturiana-desnatada-green,ID-03-asturiana-semi-blue,ID-04-bottle_fresca,ID-05-consum_entera_green,ID-06-desnatada_no-lactosa_violet,ID-07-montar_blue,ID-08-pascual_entera_blue,ID-09-semi-desnatada_green,ID-10-smetana]️ 标注可视化 数据集分析YOLOv11超市货架牛奶目标检测数据集该数据集专注于超市货架上各类牛奶产品的目标检测涵盖了多种品牌、类型和包装规格的牛奶商品。通过精确标注不同形态的牛奶包装包括盒装和瓶装该数据集为自动化识别和管理零售环境中牛奶产品提供了高质量的视觉数据支持。从数据分布来看该数据集包含463张图像其中训练集324张、验证集93张、测试集46张比例分配合理。这种划分确保了模型在不同场景下的泛化能力同时为模型调优和性能评估提供了充足的数据基础。数据标注工作细致规范所有牛奶产品均被准确框选并分类标注。标注边界框紧密贴合产品轮廓标签信息完整且与实际产品特征高度吻合为深度学习模型的高效训练奠定了可靠基础。该数据集可广泛应用于零售业的智能货架管理、库存盘点自动化以及无人商店的商品识别系统在提升运营效率和优化顾客购物体验方面具有显著的应用价值。YOLOv11训练步骤一、环境安装pipinstallultralytics依赖要求Python≥3.8PyTorch≥1.8。安装完成后可通过yolo checks验证环境。二、数据集准备YOLO格式1. 目录结构数据集必须严格按以下结构组织dataset/ ├── train/ │ ├── images/ # 训练图片jpg/png │ └── labels/ # YOLO格式标注txt ├── val/ │ ├── images/ │ └── labels/ └── data.yaml # 数据集配置文件2. YOLO标注格式每个*.txt文件对应一张图片每行格式为class_id center_x center_y width height所有数值均为相对于图片宽高的归一化值0~1。3. data.yaml 配置文件# data.yamlpath:../dataset# 数据集根目录相对或绝对路径train:train/images# 训练集图片路径val:val/images# 验证集图片路径test:test/images# 测试集图片路径可选# 类别信息nc:2# 类别数量names:[class1,class2]# 类别名称列表三、模型选择YOLO11 提供 5 种尺度官方命名规则为yolo11{n/s/m/l/x}.pt模型参数量适用场景yolo11n2.6M边缘设备、速度优先yolo11s9.4M平衡精度与速度yolo11m20.1M常规GPU训练yolo11l25.3M高精度需求yolo11x56.9M极致精度、算力充足四、模型训练方式1Python API推荐创建train.pyfromultralyticsimportYOLOdefmain():# 加载预训练模型推荐基于COCO预训练权重微调modelYOLO(yolo11m.pt)# 训练参数train_params{data:data.yaml,# 数据集配置文件epochs:100,# 训练轮次imgsz:640,# 输入图像尺寸batch:16,# 批次大小根据显存调整device:0,# GPU设备号cpu表示CPU训练workers:8,# 数据加载线程数optimizer:SGD,# 优化器SGD/Adam/AdamWlr0:0.01,# 初始学习率patience:50,# 早停耐心值save:True,# 保存模型project:runs/train,# 项目保存路径name:exp,# 实验名称single_cls:False,# 单类别检测设为Trueclose_mosaic:10,# 最后N轮关闭马赛克增强}# 开始训练resultsmodel.train(**train_params)# 输出最佳模型路径print(fBest model saved at:{results.best})if__name____main__:main()三种模型加载方式对比# 方式A从YAML构建全新模型从头训练适合网络结构改进modelYOLO(yolo11m.yaml)# 方式B加载预训练权重最常用推荐modelYOLO(yolo11m.pt)# 方式C构建新模型并迁移预训练权重改进网络后使用modelYOLO(yolo11m.yaml).load(yolo11m.pt)方式2命令行 CLI# 基础训练yolo detect traindatadata.yamlmodelyolo11m.ptepochs100imgsz640batch16device0# 多GPU训练yolo detect traindatadata.yamlmodelyolo11m.ptepochs100device0,1# 从YAML预训练权重训练yolo detect traindatadata.yamlmodelyolo11m.yamlpretrainedyolo11m.ptepochs100五、关键训练参数说明参数说明建议值epochs训练总轮次100~300imgsz输入尺寸640标准batch批次大小8/16/32根据显存device训练设备0单GPU、0,1多GPU、cpu、mpsApple芯片workers数据加载线程8~16Windows建议≤8optimizer优化器SGD默认、Adam、AdamWlr0/lrf初始/最终学习率0.01 / 0.01momentumSGD动量0.937weight_decay权重衰减0.0005single_cls单类别模式True/Falseresume恢复中断训练True需指定last.ptamp自动混合精度True默认开启省显存六、模型验证创建val.pyfromultralyticsimportYOLOdefmain():# 加载训练好的最佳权重modelYOLO(runs/train/exp/weights/best.pt)# 验证metricsmodel.val(datadata.yaml,splitval,# 验证集val 或 testimgsz640,batch16,iou0.6,# NMS IoU阈值device0,save_jsonFalse,# 是否保存COCO格式JSON)# 输出关键指标print(fmAP50-95:{metrics.box.map})# mAP0.5:0.95print(fmAP50:{metrics.box.map50})# mAP0.5print(fmAP75:{metrics.box.map75})# mAP0.75if__name____main__:main()CLI 方式yolo detect valmodelruns/train/exp/weights/best.ptdatadata.yaml七、模型推理/预测创建predict.pyfromultralyticsimportYOLOimportcv2defmain():modelYOLO(runs/train/exp/weights/best.pt)# 单张图片推理resultsmodel.predict(sourcetest_images/,# 图片路径、文件夹、URL或摄像头索引0imgsz640,conf0.25,# 置信度阈值iou0.45,# NMS IoU阈值device0,saveTrue,# 保存结果图showFalse,# 是否弹窗显示)# 遍历结果forresultinresults:boxesresult.boxes# 检测框masksresult.masks# 分割掩码如使用分割模型probsresult.probs# 分类概率# 获取坐标、置信度、类别forboxinboxes:x1,y1,x2,y2box.xyxy[0].tolist()confbox.conf[0].item()clsint(box.cls[0].item())print(fClass:{cls}, Conf:{conf:.2f}, Box: [{x1:.1f},{y1:.1f},{x2:.1f},{y2:.1f}])if__name____main__:main()CLI 方式yolo detect predictmodelruns/train/exp/weights/best.ptsourcetest_images/saveTruem())print(fClass: {cls}, Conf: {conf:.2f}, Box: [{x1:.1f}, {y1:.1f}, {x2:.1f}, {y2:.1f}])ifname ‘main’:main()CLI 方式 bash yolo detect predict modelruns/train/exp/weights/best.pt sourcetest_images/ saveTrue