这个扑克牌识别数据集是专门为目标检测任务设计的实战资源,包含了20,000张标注图片,覆盖了扑克牌的52种不同类别(13个牌面×4种花色)。数据集采用VOC和YOLO两种格式并存的方式,可以直接用于YOLO系列、Faster R-CNN、SSD等主流目标检测模型的训练。
在实际应用中,这类数据集可以用于开发智能发牌系统、扑克游戏自动记分工具,甚至是赌场监控系统中的作弊检测模块。数据集中的每张扑克牌都经过精确标注,标注框严格遵循水平矩形原则,确保标注质量的一致性。
关键数据指标:
- 总图片量:20,000张
- 标注文件:20,000个XML(VOC格式)+20,000个TXT(YOLO格式)
- 类别数量:52类(从'2c'到'As'的全套扑克牌)
原始图片采集采用了多种真实场景下的扑克牌摆放方式:
在预处理阶段,我们对所有图片进行了标准化处理:
使用labelImg工具进行标注时,我们制定了严格的标注规范:
标注文件示例(VOC格式):
xml复制<annotation>
<filename>poker_001.jpg</filename>
<size>
<width>800</width>
<height>600</height>
<depth>3</depth>
</size>
<object>
<name>Kd</name>
<bndbox>
<xmin>312</xmin>
<ymin>145</ymin>
<xmax>392</xmax>
<ymax>225</ymax>
</bndbox>
</object>
</annotation>
为提高模型泛化能力,我们实施了多层次的数据增强:
基础增强:
高级增强:
极端情况模拟:
推荐使用以下配置进行训练:
bash复制# 创建conda环境
conda create -n poker_yolo python=3.8
conda activate poker_yolo
# 安装依赖
pip install torch==1.10.0+cu113 torchvision==0.11.1+cu113 -f https://download.pytorch.org/whl/torch_stable.html
pip install opencv-python albumentations pandas tqdm
# 克隆YOLOv5
git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt
数据集目录结构应组织为:
code复制poker_dataset/
├── images/
│ ├── train/
│ └── val/
├── labels/
│ ├── train/
│ └── val/
└── poker.yaml
poker.yaml配置示例:
yaml复制train: ../poker_dataset/images/train
val: ../poker_dataset/images/val
nc: 52
names: ['10c', '10d', '10h', '10s', '2c', '2d', '2h', '2s', '3c', '3d', '3h', '3s',
'4c', '4d', '4h', '4s', '5c', '5d', '5h', '5s', '6c', '6d', '6h', '6s',
'7c', '7d', '7h', '7s', '8c', '8d', '8h', '8s', '9c', '9d', '9h', '9s',
'Ac', 'Ad', 'Ah', 'As', 'Jc', 'Jd', 'Jh', 'Js', 'Kc', 'Kd', 'Kh', 'Ks',
'Qc', 'Qd', 'Qh', 'Qs']
针对扑克牌识别特点,建议调整以下关键参数:
| 参数名 | 推荐值 | 调整原因 |
|---|---|---|
| img-size | 640 | 平衡检测精度和速度 |
| batch-size | 32 | 根据GPU显存调整 |
| epochs | 300 | 充分训练复杂场景 |
| optimizer | AdamW | 更适合小目标检测 |
| lr0 | 0.001 | 初始学习率 |
| lrf | 0.01 | 最终学习率 |
| mosaic | 0.8 | 增强小目标检测能力 |
| mixup | 0.1 | 防止过拟合 |
启动训练命令:
bash复制python train.py --data poker.yaml --cfg yolov5s.yaml --weights '' --batch-size 32 --epochs 300
在验证集上获得的典型指标:
| 指标 | 数值 | 说明 |
|---|---|---|
| mAP@0.5 | 0.983 | IoU=0.5时的平均精度 |
| mAP@0.5:0.95 | 0.821 | 综合IoU阈值下的精度 |
| Precision | 0.976 | 查准率 |
| Recall | 0.971 | 查全率 |
| F1-score | 0.973 | 综合指标 |
混淆矩阵分析显示,最容易混淆的类别是:
针对小目标的改进:
处理相似类别:
推理加速:
根据不同的应用场景,推荐以下部署方式:
| 场景 | 推荐方案 | 推理速度 | 适用设备 |
|---|---|---|---|
| 移动端 | YOLOv5s+TensorRT | 15ms | Jetson Nano |
| 服务端 | YOLOv5x | 25ms | T4 GPU |
| 边缘计算 | YOLOv5m | 20ms | Coral TPU |
| 纯CPU | YOLOv5n | 50ms | 普通PC |
漏检问题:
误检问题:
类别混淆:
性能瓶颈:
在实际部署中发现,当扑克牌堆叠超过3层时,底层牌的识别率会下降约15%。针对这种情况,我们开发了多阶段检测策略:先检测牌堆整体,然后对每个牌堆区域进行局部增强和二次检测,最终将整体识别率提升到了92%以上。