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

Logo

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

更多推荐