易拉罐正反面识别数据集下载,支持yolo,coco json,pasical voc xml格式的标注信息,平均正确识别率为99.5%,训练集2373张图片

易拉罐正反面识别数据集

本数据集专门用于易拉罐正反面识别任务,支持多种主流标注格式,包括 YOLO、COCO JSON 和 Pascal VOC XML。数据集平均正确识别率达到 99.5%,包含 2373 张训练图片。

可识别的标签信息

数据集包含以下两种标签类别:

  • Normal:易拉罐正面
  • Reverse:易拉罐反面

数据分割

数据集按照以下比例进行划分:

  • 训练集:2373 张图片
  • 验证集:229 张图片
  • 测试集:114 张图片

预处理

所有图片统一调整为 640×640 分辨率,确保输入尺寸一致。

训练效果展示

数据集下载

数据集支持以下格式下载:

  • YOLO v26
  • YOLO v12
  • YOLO v11
  • YOLO v9
  • YOLO v8
  • YOLO v7
  • COCO JSON
  • Pascal VOC XML

YOLO 模型训练指南

训练步骤:

  1. 下载数据集并解压到当前文件夹
  2. 克隆训练仓库:YOLOProject:基于 YOLO 的模型训练项目 - AtomGit
  3. 将训练脚本复制到数据集文件夹下
  4. 根据使用的 YOLO 版本运行对应脚本,例如使用 YOLOv8 时执行:python train_yolov8.py

模糊图片在模型训练中的优势分析

数据集中包含的模糊图片并非数据缺陷,而是一种精心设计的数据增强策略,能为模型训练带来以下显著优势:

  • 提升模型鲁棒性:现实场景中可能存在运动模糊、对焦不准或光线不足的情况。在训练集中引入模糊样本,可以迫使模型学习更本质的特征,而不是过度依赖清晰的边缘或纹理细节,从而提升模型在复杂、非理想成像条件下的识别能力。
  • 模拟真实世界噪声:监控摄像头、手机等设备在低光照或快速移动时极易产生模糊。包含此类图片的数据集能让模型提前"见识"并适应这种噪声,减少在实际部署时因图像质量下降而导致的性能骤降。
  • 防止模型过拟合:如果训练集全是高清、摆拍的完美图片,模型容易记住这些特定场景下的"干净"特征,而对新的、稍有模糊的图片泛化能力差。模糊图片作为一种有效的正则化手段,可以增加数据分布的多样性,防止模型过拟合到有限的清晰样本上。

总结:数据集中包含的模糊图片,与"水平翻转"、"剪切形变"、"随机遮挡"等增强操作一样,都是为了构建一个更接近真实世界复杂分布的数据环境,从而训练出更健壮、更泛化、更实用的模型。

模型验证与测试

验证测试代码

# 需要安装:pip install ultralytics from ultralytics import YOLO import cv2 ===================== 1. 加载 YOLO 模型 ===================== 自动下载预训练模型(yolov8n 最轻量快速),也可换 yolov8s/m/l/x model = YOLO("best.pt") ===================== 2. 推理配置 ===================== image_path = "326_jpg.rf.8ad64cc0668df32c4e5f59b50e899e9c.jpg" # 你的图片路径 save_result = True # 是否保存标注后的图 ===================== 3. 执行推理 ===================== results = model.predict( source=image_path, conf=0.01, # 置信度阈值(低于该值忽略) save=False, # 关闭默认保存,自定义保存 verbose=False # 关闭冗余日志 ) ===================== 4. 解析结果:目标区域 + 标注信息 ===================== print("=" * 50) print("YOLO 推理结果(目标区域 + 标注信息)") print("=" * 50) 获取图片(用于绘制框) img = cv2.imread(image_path) 遍历所有检测目标 for idx, result in enumerate(results): boxes = result.boxes # 所有检测框 for box in boxes: # ========== 提取目标区域(坐标) ========== # xyxy: 左上角 x, 左上角 y, 右下角 x, 右下角 y x1, y1, x2, y2 = box.xyxy[0].cpu().numpy() # 宽高 w = x2 - x1 h = y2 - y1 # ========== 提取标注信息 ========== cls_id = int(box.cls[0]) # 类别 ID cls_name = model.names[cls_id] # 类别名称 conf = float(box.conf[0]) # 置信度 # ========== 打印信息 ========== print(f"目标 {idx + 1}:") print(f" 标注类别:{cls_name}") print(f" 置信度:{conf:.2f}") print(f" 目标区域坐标:") print(f" 左上角 ({x1:.1f}, {y1:.1f})") print(f" 右下角 ({x2:.1f}, {y2:.1f})") print(f" 宽×高:{w:.1f} × {h:.1f}") print("-" * 30) # ========== 在图片上绘制检测框 ========== cv2.rectangle(img, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2) cv2.putText(img, f"{cls_name} {conf:.2f}", (int(x1), int(y1) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2) ===================== 5. 保存/显示结果 ===================== if save_result: cv2.imwrite("yolo_result.jpg", img) print("✅ 标注图片已保存为:yolo_result.jpg") 显示图片(可选) cv2.imshow("YOLO Result", img) cv2.waitKey(0) cv2.destroyAllWindows()

测试验证结果

识别到的标签信息

{ "predictions": [ { "x": 232, "y": 203, "width": 230, "height": 248, "confidence": 0.968, "class": "Reverse", "class_id": 1, "detection_id": "495f70cb-2244-4ac3-b4b2-41b322558135" } ] }