基于深度学习的石头剪刀布手势识别系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
<span data-cke-copybin-start="1"><span data-cke-copybin-start="1"></span></span><h1 id="%E8%A7%86%E9%A2%91%E6%BC%94%E7%A4%BA">视频演示</h1>
<div class="cke_widget_wrapper cke_widget_block cke_widget_csdnvideo cke_widget_wrapper_csdn-data-video cke_widget_selected" data-cke-display-name="div" data-cke-filter="off" data-cke-widget-id="13" data-cke-widget-wrapper="1">
<div class="csdn-data-video cke_widget_element" data-cke-widget-data="%7B%22cover_img%22%3A%22%22%2C%22player_url%22%3A%22%22%2C%22provider%22%3A%22%22%2C%22title%22%3A%22%22%2C%22id%22%3A%22%22%2C%22classes%22%3A%7B%22csdn-data-video%22%3A1%7D%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-mediaembed="bilibili" data-video-cover="https://i-blog.csdnimg.cn/img_convert/8c311e3a6f68bfb17a37546610d8f103.jpeg" data-video-id="9EY7w5Xr-1756713605163" data-video-title="基于深度学习的石头剪刀布手势识别系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)" data-video-url="https://player.bilibili.com/player.html?aid=115118478204758" data-widget="csdnvideo">
<p class="cke_widget_editable" data-cke-enter-mode="2" data-cke-widget-editable="content">基于深度学习的石头剪刀布手势识别系统演示与介绍_哔哩哔哩_bilibili</p>
</div>
<span class="cke_reset cke_widget_drag_handler_container"><img width="15" height="15" class="cke_reset cke_widget_drag_handler lazyload" title="点击并拖拽以移动" data-cke-widget-drag-handler="1" data-src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250822165457676-1808144825.gif"></span></div>
<p> <span style="font-size: 2em; color: rgba(0, 0, 0, 1)">1.前言</span></p>
<p> 随着人机交互技术的快速发展和智能设备的广泛应用,自然、直观的手势交互已成为提升用户体验的重要方向。石头剪刀布作为一种经典的手势游戏,其识别任务融合了计算机视觉与模式识别的核心技术,对实时性和准确性提出了双重挑战。高效的石头剪刀布手势识别系统不仅能为人机交互提供新颖的交互方式,还可应用于娱乐、教育、智能控制等多个领域。因此,开发基于深度学习的高精度、实时手势识别系统具有重要的研究意义和应用价值。</p>
<h1 id="2.%E9%A1%B9%E7%9B%AE%E6%BC%94%E7%A4%BA">2.项目演示</h1>
<h2 id="2.1%20%E7%99%BB%E9%99%86%E7%95%8C%E9%9D%A2">2.1 登陆界面<span class="cke_reset cke_widget_drag_handler_container" style="font-size: 14px"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><span class="cke_widget_edit_container" title="编辑图片"><br></span></span></span></h2>
<p><img alt="登陆界面" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202509/3687401-20250901180411687-1846897410.png" class="lazyload"></p>
<p> </p>
<p> </p>
<p>登陆界面比较有特色,需要输入用户名和密码进行登录,同时还有验证码机制,整体界面简洁美观,左侧还增加了关于石头剪刀布的logo。</p>
<h2 id="2.2%C2%A0%E7%94%A8%E6%88%B7%E6%B3%A8%E5%86%8C">2.2 用户注册</h2>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="11" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><img width="15" height="15" class="cke_reset cke_widget_drag_handler lazyload" title="点击并拖拽以移动" data-cke-widget-drag-handler="1" data-src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250822165457676-1808144825.gif"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><span class="cke_widget_edit_container" title="编辑图片"><img alt="注册界面" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202509/3687401-20250901180426747-1735650748.png" class="lazyload"></span></span></span></span></p>
<p> </p>
<p> 注册的时候输入用户名、密码,另外还可以设置用户的头像信息,如果头像不选择,则默认使用默认头像。</p>
<h2 id="2.3%C2%A0%E4%B8%BB%E7%95%8C%E9%9D%A2">2.3 主界面</h2>
<p><img alt="主界面" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202509/3687401-20250901180442341-1279375115.png" class="lazyload"></p>
<p> </p>
<p> 主界面大体分为3个区域,左边侧边栏是功能选择,中间是识别结果展示,右边是结果详细信息展示。</p>
<h2 id="2.4%20%E8%AF%86%E5%88%AB%E7%BB%93%E6%9E%9C%E7%95%8C%E9%9D%A2">2.4 识别结果界面</h2>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="9" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><img alt="识别界面" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202509/3687401-20250901180455217-869814198.png" class="lazyload"></span></span></span></p>
<p> </p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="9" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><span class="cke_widget_edit_container" title="编辑图片"><br></span></span></span></span></p>
<p> 选择图片后结果会显示到中间的图像区域中,下边的列表会列出每一个识别的目标信息,选择表格的不同行数,会单独对当前选择的目标进行展示。如下图所示:<span class="cke_reset cke_widget_drag_handler_container"><img width="15" height="15" class="cke_reset cke_widget_drag_handler lazyload" title="点击并拖拽以移动" data-cke-widget-drag-handler="1" data-src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250822165457676-1808144825.gif"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><span class="cke_widget_edit_container" title="编辑图片"><br></span></span></span></p>
<p><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><img alt="列表点击变化" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202509/3687401-20250901180515068-450095581.gif" class="lazyload"></span></span></p>
<p> </p>
<h2 id="2.5%C2%A0%E6%A8%A1%E5%9E%8B%E9%80%89%E6%8B%A9">2.5 模型选择</h2>
<p> 我们可以选择其他已经训练好的权重模型文件,方便用新的模型进行系统的检测识别。</p>
<p><img alt="模型选择" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202509/3687401-20250901180533119-1454141892.gif" class="lazyload"></p>
<p> </p>
<p> </p>
<h2 id="2.6%20%E6%8A%80%E6%9C%AF%E6%A0%88">2.6 技术栈</h2>
<p> <strong> 语言:</strong>python3.10</p>
<p> <strong>前端界面:</strong>pyqt5</p>
<p> <strong> 数据库:</strong>sqlite(存放用户信息)</p>
<p> <strong> 模型</strong>:yolov5、yolov8、yolov11、yolov12</p>
<h1 id="3.YOLO%E6%A8%A1%E5%9E%8B%E5%AF%B9%E6%AF%94%E5%92%8C%E8%AF%86%E5%88%AB%E6%95%88%E6%9E%9C%E8%A7%A3%E6%9E%90">3.YOLO模型对比和识别效果解析</h1>
<h2 id="3.1%20yolov5%E3%80%81yolov8%E3%80%81yolov11%E6%A8%A1%E5%9E%8B%E5%AF%B9%E6%AF%94">3.1 yolov5、yolov8、yolov11、yolov12模型对比</h2>
<p> 如下表格是Ultralytics官方在<strong>COCO数据集</strong>上进行训练后得到的结果对比:</p>
<table border="1" cellspacing="1" cellpadding="1">
<tbody>
<tr><th>模型</th><th>尺寸<br>
(像素)</th><th>mAPval<br>
50-95</th><th>速度<br>
CPU ONNX<br>
(毫秒)</th><th>参数<br>
(M)</th><th>FLOPs<br>
(B)</th>
</tr>
<tr>
<td>YOLO12n</td>
<td>640</td>
<td>40.6</td>
<td>-</td>
<td>2.6</td>
<td>6.5</td>
</tr>
<tr>
<td>YOLO11n</td>
<td>640</td>
<td>39.5</td>
<td>56.1 ± 0.8</td>
<td>2.6</td>
<td>6.5</td>
</tr>
<tr>
<td>YOLOv8n</td>
<td>640</td>
<td>37.3</td>
<td>80.4</td>
<td>3.2</td>
<td>8.7</td>
</tr>
<tr>
<td>YOLOv5nu</td>
<td>640</td>
<td>34.3</td>
<td>73.6</td>
<td>2.6</td>
<td>7.7</td>
</tr>
</tbody>
</table>
<p> <strong>1.精度最高:YOLO12n</strong><br>
•在 mAP 指标上达到 40.6%,显著领先其他模型,尤其比 YOLOv5nu 高出约6.3个百分点,显示出其更强的目标识别能力。<br>
<strong> 2.速度最优:YOLO11n</strong><br>
•在 CPU 上推理速度最快(56.1 ms),比 YOLOv8n 快约42%,适合对实时性要求高的轻量级部署场景。<br>
<strong> 3.参数与计算效率:YOLO12n / YOLO11n / YOLOv8n/YOLOv5nu</strong><br>
•三者参数量均为 2.6M,且 FLOPs 较低(YOLO12n/11n仅为6.5B),表明模型结构紧凑,计算负担小。<br>
•YOLOv8n 参数量(3.2M)和计算量(8.7B)最高,但其精度并未显著优于YOLO12n/11n。<br>
<strong>4.综合推荐:</strong><br>
•若追求高精度:推荐 YOLO12n(mAP最高,且效率不输同类);<br>
•若需要高速度与低资源消耗:推荐 YOLO11n(速度最快,精度与YOLO12n接近);<br>
•YOLOv5nu 和 YOLOv8n 在精度和速度上均逊于新一代模型,若无特殊兼容需求,可不作为首选。</p>
<h2 id="3.2%20%E6%95%B0%E6%8D%AE%E9%9B%86%E5%88%86%E6%9E%90">3.2 数据集分析</h2>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="6" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><span class="cke_widget_edit_container" title="编辑图片"><img alt="数据集" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202509/3687401-20250901180549717-1438540123.jpg" class="lazyload"></span></span></span></span></p>
<p> </p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="6" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><span class="cke_widget_edit_container" title="编辑图片"> </span></span></span></span></p>
<p> 数据集中训练集和验证集一共大概7000多张,数据集目标类别主要是三类:石头、剪刀、布。其中石头数据集最多,箭头和布的数据差不多一样。数据集配置代码如下:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="5" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22names%3A%5Cn-%20Paper%5Cn-%20Rock%5Cn-%20Scissors%5Cnnc%3A%203%5Cnpath%3A%20train_data%5Cntest%3A%20test%2Fimages%2F%5Cntrain%3A%20train%2Fimages%2F%5Cnval%3A%20valid%2Fimages%2F%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"></pre>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">names:
</span>-<span style="color: rgba(0, 0, 0, 1)"> Paper
</span>-<span style="color: rgba(0, 0, 0, 1)"> Rock
</span>-<span style="color: rgba(0, 0, 0, 1)"> Scissors
nc: </span><span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">
path: train_data
test: test</span>/images/<span style="color: rgba(0, 0, 0, 1)">
train: train</span>/images/<span style="color: rgba(0, 0, 0, 1)">
val: valid</span>/images/</pre>
</div>
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22names%3A%5Cn-%20Paper%5Cn-%20Rock%5Cn-%20Scissors%5Cnnc%3A%203%5Cnpath%3A%20train_data%5Cntest%3A%20test%2Fimages%2F%5Cntrain%3A%20train%2Fimages%2F%5Cnval%3A%20valid%2Fimages%2F%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"></pre>
<p><img alt="train_batch0" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202509/3687401-20250901180727441-1973657095.jpg" class="lazyload"></p>
<p><img alt="train_batch1" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202509/3687401-20250901180732703-1227679969.jpg" class="lazyload"></p>
<p> </p>
<span class="cke_reset cke_widget_drag_handler_container"><img width="15" height="15" class="cke_reset cke_widget_drag_handler lazyload" title="点击并拖拽以移动" data-cke-widget-drag-handler="1" data-src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250822165457676-1808144825.gif"></span></div>
<p> </p>
<h2 id="3.3%20%E8%AE%AD%E7%BB%83%E7%BB%93%E6%9E%9C">3.3 训练结果</h2>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="2" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><img width="15" height="15" class="cke_reset cke_widget_drag_handler lazyload" title="点击并拖拽以移动" data-cke-widget-drag-handler="1" data-src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250822165457676-1808144825.gif"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><img alt="confusion_matrix_normalized" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202509/3687401-20250901180751888-675500121.png" class="lazyload"></span></span></span></p>
<p> </p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="2" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"> </span></span></span></p>
<p> 石头、剪刀、布的混淆矩阵显示中,三种类别识别准确度分别是:94%,91%,94%。</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="1" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><img width="15" height="15" class="cke_reset cke_widget_drag_handler lazyload" title="点击并拖拽以移动" data-cke-widget-drag-handler="1" data-src="https://img2024.cnblogs.com/blog/3687401/202508/3687401-20250822165457676-1808144825.gif"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><img alt="BoxF1_curve" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202509/3687401-20250901180800329-273230287.png" class="lazyload"></span></span></span></p>
<p> </p>
<p> F1指数(F1 Score)是统计学和机器学习中用于评估分类模型性能的核心指标,综合了模型的精确率(Precision)和召回率(Recall),通过调和平均数平衡两者的表现。 </p>
<p> 当置信度为0.658时,所有类别的综合F1值达到了0.94(蓝色曲线)</p>
<p><img alt="BoxPR_curve" loading="lazy" src="https://img2024.cnblogs.com/blog/3687401/202509/3687401-20250901180810826-1153691349.png" class="lazyload"></p>
<p> </p>
<p> mAP@0.5:是目标检测任务中常用的评估指标,表示在交并比(IoU)阈值为0.5时计算的平均精度均值(mAP)。其核心含义是:只有当预测框与真实框的重叠面积(IoU)≥50%时,才认为检测结果正确。</p>
<p> 图中可以看到综合mAP@0.5达到了0.961(96.1%),几乎识别都是准确的。</p>
<h1 id="%E9%A1%B9%E7%9B%AE%E5%AE%8C%E6%95%B4%E4%BB%A3%E7%A0%81%E6%96%87%E4%BB%B6%E8%AF%B7%E8%A7%81%E8%A7%86%E9%A2%91%E7%9A%84%E7%AE%80%E4%BB%8B%E5%A4%84%E7%BB%99%E5%87%BA%EF%BC%9A"> </h1>
<h1 id="%E7%BB%93%E6%9D%9F%E8%AF%AD">结束语</h1>
<p> 以上便是博主开发的基于深度学习的石头剪刀布手势识别系统的全部内容,由于博主能力有限,难免有疏漏之处,希望小伙伴能批评指正</p>
<p><br>
<strong> 关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!</strong></p>
<span data-cke-copybin-start="1">
<span data-cke-copybin-end="1"></span></span><br><br>
来源:https://www.cnblogs.com/codingtea/p/19068695
頁:
[1]