麻将识别-图像识别-麻将数据集-深度学习(YOLO)
本文介绍了一个基于YOLOv11的麻将牌识别项目,包含多个模型变体(nano/small/medium/large)以适应不同需求。项目支持检测真实照片中的麻将牌、识别牌型和花色,并能处理复杂光照和背景。文章详细说明了项目结构、模型性能差异(速度/精度平衡)、安装部署方法(支持PyTorch和ONNX格式)、以及训练流程(包括数据准备、配置文件设置和模型验证)。提供了完整的代码下载链接,方便开发者
·
麻将识别-图像识别-麻将数据集-深度学习(YOLO)
1、项目介绍
-
计算机视觉项目,使用 YOLO(You Only Look Once)模型从真实照片中检测和识别麻将牌。该项目包含多个模型变体(纳米、小型、中型、大型、超大型),并针对不同用例进行了优化。
-
本项目使用 YOLOv11 实现麻将牌识别,能够:
- 1.检测真实照片中的麻将牌
- 2.识别不同的牌型和花色
- 3.处理具有各种光照条件和背景的图像
- 4.提供 PyTorch (.pt) 和 ONNX 模型格式以供部署
2、项目结构
3、模型性能说明
Nano(YOLOv11n):最快的推理,针对移动部署进行了优化
small(YOLOv11s):速度和准确度的良好平衡,适合实时应用
medium(YOLOv11m):推荐用于大多数用例,最佳准确度/速度权衡
large(YOLOv11l):适用于生产应用的高精度
4、使用说明
4.1、安装
pip install ultralytics opencv-python matplotlib torch torchvision
安装依赖:
pip install jupyter notebook albumentations numpy
4.2、快速上手
from ultralytics import YOLO
# Load a trained model
model = YOLO('models/medium/mahjong-yolom-best.pt')
# Run inference on an image
results = model.predict('path/to/mahjong/image.jpg')
# Display results
results[0].show()
4.3、使用QNNX模型
import onnxruntime as ort
import cv2
import numpy as np
# Load ONNX model
session = ort.InferenceSession('models/mahjong-yolom-best.onnx')
# Preprocess image
img = cv2.imread('path/to/image.jpg')
img_resized = cv2.resize(img, (640, 640))
img_normalized = img_resized.astype(np.float32) / 255.0
img_transposed = np.transpose(img_normalized, (2, 0, 1))
img_batch = np.expand_dims(img_transposed, axis=0)
# Run inference
outputs = session.run(None, {'images': img_batch})
4.4、模型转换
将 PyTorch 模型转换为 ONNX 格式:
python scripts/convert_yolo_to_onnx.py models/medium/mahjong-yolom-best.pt
批量转换
python scripts/convert_yolo_to_onnx.py models/ --batch
5、训练
5.1、以 YOLO 格式组织数据集
5.2、创建数据配置文件(data.yaml)
train: path/to/train/images
val: path/to/val/images
test: path/to/test/images
nc: 34 # number of classes (mahjong tile types)
names: ['1m', '2m', '3m', ..., 'red', 'green', 'white']
5.3、训练不同大小的模型
from ultralytics import YOLO
# Train nano model
model = YOLO('models/nano/yolo11n.pt')
model.train(data='data.yaml', epochs=500, batch=24, name='mahjong-yolon')
# Train small model
model = YOLO('models/small/yolo11s.pt')
model.train(data='data.yaml', epochs=500, batch=16, name='mahjong-yolos')
# Train medium model
model = YOLO('models/medium/yolo11m.pt')
model.train(data='data.yaml', epochs=500, batch=12, name='mahjong-yolom')
# Train large model
model = YOLO('models/large/yolo11l.pt')
model.train(data='data.yaml', epochs=500, batch=10, name='mahjong-yolol')
5.4、模型验证
# Validate trained model
model = YOLO('models/medium/mahjong-yolom-best.pt')
metrics = model.val()
print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")
6、代码下载
点击下载:https://download.csdn.net/download/m0_51061483/91467575

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)