1. 项目背景与价值解析
这个数据集专门针对智慧城市建设中的户外广告牌检测需求而生。在城管巡查、市容管理和商业分析等场景中,自动识别街道两侧的广告牌一直是个痛点。传统人工巡查方式效率低下,而通用目标检测模型对广告牌这类特殊目标的识别准确率往往不尽如人意。
我收集整理了1238张街头实景图片,涵盖不同时段(日/夜)、天气条件(晴/雨/雾)和拍摄角度(平视/俯视),使用labelImg工具手工标注了广告牌的精确位置。所有标注文件采用VOC格式存储,同时提供适配YOLO系列的txt格式标注,开箱即用。
关键价值:这是目前公开渠道能获取到的唯一专注城市广告牌检测的数据集,特别适合智慧城管、户外广告监管等垂直场景的模型训练。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据集技术细节拆解
2.1 数据采集与标注规范
原始图像分辨率统一为1920×1080,采用行车记录仪和定点监控两种方式采集。标注时遵循以下规则:
- 只标注完整可见的广告牌(被遮挡超过30%的舍弃)
- 标注框紧贴广告牌边缘(不留空白)
- 夜间低亮度场景需确保广告牌内容可辨识才标注
标注文件示例(VOC格式):
xml复制<object>
<name>billboard</name>
<bndbox>
<xmin>512</xmin>
<ymin>240</ymin>
<xmax>890</xmax>
<ymax>680</ymax>
</bndbox>
</object>
2.2 数据分布与增强建议
数据集包含:
- 白天场景:867张(70%)
- 夜间场景:371张(30%)
- 不同天气占比:晴天65%、雨天20%、雾天15%
建议训练时添加以下增强:
python复制augmentation = [
RandomBrightnessContrast(brightness_limit=0.3, contrast_limit=0.3),
HueSaturationValue(hue_shift_limit=20),
RGBShift(r_shift_limit=20, g_shift_limit=20, b_shift_limit=20)
]
3. YOLO模型训练全流程
3.1 环境配置与数据准备
推荐使用YOLOv8最新版:
bash复制pip install ultralytics
数据集目录结构:
code复制dataset/
├── images/
│ ├── train/
│ └── val/
└── labels/
├── train/
└── val/
3.2 关键训练参数
针对广告牌检测的特殊配置:
yaml复制lr0: 0.01 # 初始学习率(广告牌通常较大,可适当提高)
weight_decay: 0.0005
flipud: 0.3 # 上下翻转概率(广告牌存在倒挂情况)
mixup: 0.1 # 图像混合增强
3.3 模型优化技巧
- 输入尺寸调整:
python复制model = YOLO('yolov8n.yaml')
model.train(data='billboard.yaml', imgsz=1280) # 广告牌需要更大分辨率
- 针对小目标改进:
python复制# 修改anchors配置
anchors: [
[19,27, 44,40, 38,94], # P3/8
[96,68, 86,152, 180,137], # P4/16
[140,301, 303,264, 238,542] # P5/32
]
4. 实际部署注意事项
4.1 边缘设备优化
在K230等边缘芯片部署时:
python复制# 导出ONNX时添加动态轴
model.export(format='onnx', dynamic=True, simplify=True)
4.2 常见问题解决方案
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 误检交通标志 | 颜色特征相似 | 在训练数据中添加负样本 |
| 夜间检测率低 | 亮度不足 | 增加gamma校正预处理 |
| 斜向广告牌漏检 | 旋转变化不足 | 添加旋转增强(-15°~15°) |
4.3 性能优化记录
实测对比(Tesla T4 GPU):
| 模型 | 参数量 | mAP@0.5 | 推理速度 |
|---|---|---|---|
| YOLOv8n | 3.2M | 0.89 | 2.3ms |
| YOLOv5s | 7.2M | 0.91 | 3.1ms |
| YOLOv6n | 4.7M | 0.90 | 2.8ms |
5. 数据扩展与场景延伸
建议后续从三个方向扩展数据集:
- 增加极端天气样本(暴雨、大雪)
- 收集不同城市风格的广告牌(如古镇景区的木质招牌)
- 添加多视角广告牌图像(无人机俯拍视角)
对于商业分析场景,可以:
python复制# 提取广告牌位置信息
results = model.predict(source)
for box in results[0].boxes:
print(f"广告牌位置:{box.xywh}")
这个数据集已经成功应用于某省会城市的智慧城管系统,实现了对违规户外广告的自动巡查。在实际部署中发现,模型对霓虹灯广告牌的夜间检测准确率比人工巡查高出23%,大大降低了管理成本。
