🍁 作者:知识浅谈,CSDN签约讲师&博客专家,华为云云享专家,阿里云专家博主,InfoQ签约作者
📌 擅长领域:全栈工程师、爬虫、ACM算法,大数据,深度学习
💒 公众号:知识浅谈
🔥 微信:zsqtcyl 联系我领取福利
本教程将带你实现一个实时手势猜拳游戏识别系统,使用Kaggle公开的「Rock-Paper-Scissors」数据集(包含石头、剪刀、布三种手势),全程仅需CPU即可运行。最终效果可通过摄像头实时识别手势,并与电脑进行猜拳对战!
🎈项目亮点
-
趣味互动:通过摄像头实现真人猜拳对战
-
轻量模型:专为CPU优化的微型卷积神经网络(仅0.5MB)
-
即用数据集:使用TensorFlow官方维护的公开数据集
-
工业级技巧:包含数据泄露预防、类别平衡处理等实战技巧
🎈环境准备
- 打开Pycharm,新建项目文件夹
- 安装所需依赖库
# 安装所需库(Python 3.8+) pip install numpy matplotlib opencv-python tensorflow-cpu
🎈数据集说明
使用TensorFlow Datasets内置的「Rock-Paper-Scissors」数据集:
-
总样本量:2,892张RGB图像(300x300像素)
-
类别分布:
-
Rock(石头): 840张
-
Paper(布): 840张
-
Scissors(剪刀): 1212张
-
-
数据特点:包含不同肤色、手势角度和背景环境
🎈完整实现代码
📍自动下载并加载数据集
import tensorflow as tf
import tensorflow_datasets as tfds
# 自动下载数据集(首次运行需要等待)
dataset, info = tfds.load('rock_paper_scissors',
split=['train', 'test'],
as_supervised=True,
with_info=True,
shuffle_files=True)
# 提取训练集和测试集
train_ds, test_ds = dataset[0], dataset[1]
# 查看数据集信息
print(f"训练集样本数: {
info.splits['train'].num_examples}")
print(f"测试集样本数: {
info.splits['test'].num_examples}")
📍数据预处理与增强
def preprocess(image, label):
# 统一尺寸 + 归一化
image = tf.image.resize(image, (150, 150))
image = tf.image.rgb_to_grayscale(image) # 转为灰度图减少计算量
return image/255.0, label
# 配置数据管道
BATCH_SIZE