1. 项目背景与核心价值
这个模塑玻璃瓶缺陷识别数据集解决了工业生产中一个非常实际的问题——玻璃瓶表面缺陷的自动化检测。在饮料、化妆品、药品包装等行业,玻璃瓶的外观质量直接影响产品档次和消费者体验。传统的人工检测方式不仅效率低下(每分钟最多检测20-30个),而且受工人疲劳度影响,漏检率常高达15%-20%。
我们团队耗时8个月,在3条实际产线上采集了超过12万张高清样本图像,覆盖28种常见缺陷类型。特别值得一提的是,这个数据集不仅包含常规的黑点、气泡等显性缺陷,还专门收录了"泡泡颈"这种特殊工艺缺陷(玻璃瓶颈部因冷却不均产生的环状气泡群),这类样本在公开数据集中极为罕见。
2. 数据集技术细节解析
2.1 缺陷类别全览
数据集涵盖的28种缺陷可分为5大类:
- 材料缺陷(8种):包括黑点(碳化物夹杂)、结石(耐火材料颗粒)、条纹(成分不均)等
- 成型缺陷(6种):如泡泡颈、歪颈、厚薄不均等
- 表面缺陷(7种):刮痕、擦伤、模具印等
- 结构缺陷(4种):裂缝、缺口、崩边等
- 特殊缺陷(3种):二次成型瑕疵、回收玻璃杂质等
提示:泡泡颈缺陷的标注采用"环形区域+密度分级"的双重标注法,在YOLO格式中用特殊标签
bubble_neck_L1-L3表示严重程度
2.2 数据采集方案
采集环境采用特制的多光源成像箱,配置方案如下:
- 正面:6500K环形LED(检测表面缺陷)
- 侧向:450nm蓝光(增强刮痕对比度)
- 底部:漫射背光(检测内部杂质)
- 相机:2000万像素工业相机,帧率120fps
# 示例采集脚本(触发拍照+自动编号) import cv2 cap = cv2.VideoCapture(0) for i in range(120000): ret, frame = cap.read() cv2.imwrite(f"batch3_{i:06d}.png", frame) # 同步触发旋转台和光源切换 send_trigger_signal()2.3 标注规范详解
标注过程遵循严格的质检流程:
- 一级标注:用LabelImg标注边界框,要求包含缺陷周围2-3mm安全边际
- 二级验证:由10年经验的质检组长复核,特别关注:
- 裂缝类缺陷必须标注延伸方向
- 黑点需区分表面附着物和内部杂质
- 刮痕要标注是否贯穿瓶身
- 数据增强:对稀有缺陷(如<1%的"星形裂")进行镜像+旋转扩充
标注文件示例(COCO格式):
{ "images": [{ "id": 10482, "file_name": "defect_10482.jpg", "width": 4096, "height": 3072 }], "annotations": [{ "id": 1, "image_id": 10482, "category_id": 15, "bbox": [1256, 884, 56, 42], "area": 2352, "segmentation": [[1260,885,1305,887...]], "attributes": { "severity": 2, "process_stage": "molding" } }] }3. 模型训练与性能优化
3.1 基准测试结果
在YOLOv7x模型上的表现:
| 缺陷类别 | Precision | Recall | F1-Score |
|---|---|---|---|
| 黑点 | 0.812 | 0.784 | 0.798 |
| 泡泡颈_L1 | 0.753 | 0.682 | 0.716 |
| 贯穿性刮痕 | 0.921 | 0.895 | 0.908 |
| 微裂纹 | 0.653 | 0.597 | 0.624 |
| 平均 | 0.785 | 0.740 | 0.762 |
3.2 关键调参技巧
通过500+次实验验证的有效方案:
输入分辨率:必须≥1600x1600(低于此值微裂纹识别率下降37%)
Anchor优化:针对细长型缺陷(裂缝/刮痕)添加[6,24][8,32]特殊anchor
损失函数:
loss = 0.7*CIoU + 0.2*Focal + 0.1*EdgeLossEdgeLoss是我们设计的边缘惩罚项,专门提升对模糊缺陷的敏感度
测试时增强(TTA):采用多尺度翻转组合,可使泡泡颈识别率提升8.2%
3.3 实际部署方案
在产线部署时需特别注意:
- 光照补偿:每4小时用标准色卡校准一次白平衡
- 动态ROI:根据瓶型自动调整检测区域,避免误检瓶口螺纹
- 后处理规则:
- 黑点直径<0.3mm且不在商标区→放行
- 泡泡颈密度>3个/cm²→强制剔除
- 刮痕角度与灌装线方向一致→可能为输送带造成,需单独记录
4. 常见问题解决方案
4.1 标注相关
Q1:如何处理重叠缺陷?
- 物理重叠(如黑点+刮痕):分别标注,添加
overlap属性 - 光学重叠(如瓶身折射造成的虚影):标注真实缺陷,忽略虚影
Q2:模糊边缘缺陷怎么标?
- 用3px宽度的多边形标注(常规标注+1px安全边际)
- 在VOC XML中添加
<blur_level>1-3</blur_level>标签
4.2 模型训练
Q3:样本不均衡怎么处理?对稀有缺陷采用动态采样:
if defect_type in ['star_crack', 'neck_split']: sample_prob = min(1.0, base_prob * 3) elif defect_type == 'bubble_neck_L3': sample_prob = min(1.0, base_prob * 2)Q4:如何避免将瓶身弧度误检为缺陷?
- 数据增强时加入10%的正常样本负例
- 在模型最后添加弧度补偿层:
class CurveCompensate(nn.Module): def forward(self, x): return x * self.curve_mask
4.3 产线适配
Q5:不同瓶型的切换怎么处理?建议方案:
- 建立瓶型模板库,提前录制标准图像
- 检测前先进行3D配准(需要额外安装激光传感器)
- 在YOLO检测前加入Siamese网络进行瓶型匹配
Q6:高速产线下的处理延迟?实测在RTX 3060上可达到的处理速度:
- 2000万像素图像:83ms/帧(含预处理)
- 通过以下优化可降至56ms:
// 使用TensorRT的FP16量化 builder.setFp16Mode(true); // 启用DLAC加速 config.setDLACore(0);
5. 数据集扩展建议
对于想进一步提升性能的用户,建议:
- 增加环境样本:收集不同工厂的产线背景噪声数据
- 多光谱扩展:尝试添加近红外通道(对内部杂质更敏感)
- 时序分析:对连续10帧图像进行光流分析,可识别间歇性出现的模具损伤缺陷
我们正在开发2.0版本,将包含:
- 热成像数据(检测应力集中区域)
- 3D点云数据(用于深度缺陷分析)
- 在线学习模块(持续优化模型)
这个数据集已在GitHub开源,包含完整的标注工具链和基线模型。在实际产线测试中,相比传统视觉方案,使用本数据集训练的模型使漏检率从15.6%降至4.3%,每年可为中型饮料厂节省约120万元的人工复检成本。