☰
基于YOLOv8的象棋棋子检测系统:从数据标注到Web部署全流程实战
2026/10/19 14:06:02 网站建设 项目流程

简介:本资源是一套面向人工智能初学者与计算机视觉实践者的中国象棋棋子智能识别系统完整实现,聚焦于特定小目标、高相似度场景下的精准检测与分析难题,适用于课程设计、毕业项目、AI+传统文化交叉研究及象棋辅助教学工具开发。压缩包共27个文件(2.99MB),含4个核心Python脚本(train.py/val.py/predict.py/ui.py)支撑训练-验证-推理-前端全流程,19张标注样本PNG用于数据理解与可视化调试,2份Word文档(附赠资源.docx/README.docx)详述70项创新点、标注规范与部署指南,另含README.md和说明文件.txt提供快速上手路径。目前已有223人学习下载,读者可直接复现改进YOLOv8模型的轻量化结构设计、棋子实例分割自适应加载机制、Web界面集成方案,并获得配套标注数据集与端到端训练调参经验,显著降低领域专用目标检测系统的开发门槛。

1. 项目概述与核心价值

最近在整理过往项目时,翻出了一个我觉得挺有意思的“老活儿”——一个基于改进版YOLOv8的中国象棋棋子检测与识别系统。这不仅仅是一个简单的目标检测应用,而是一个从数据标注、模型训练、算法优化到最终Web前端可视化展示的完整闭环项目。当时做这个的初衷,一方面是想深入啃一啃YOLOv8这个当时刚发布不久的新架构,另一方面也是觉得象棋这类规整的棋盘游戏,是验证目标检测模型在特定场景下鲁棒性和精度的绝佳试验场。毕竟,棋子种类固定(红黑双方各7种共32子)、背景相对可控(棋盘),但同时又存在棋子遮挡、旋转、光照变化等实际挑战,非常适合用来打磨一个端到端的AI项目流程。

这个项目包里,我不仅提供了完整的源代码,还打包了那条龙式的教学:从如何用高效的工具标注你自己的象棋数据集,到一步步训练模型,再到我针对这个场景做的近70处细节改进与创新点(这些改进思路同样适用于其他细粒度目标检测任务),最后是一个轻量级的Web前端,让你能实时上传图片或视频,看到模型自动识别棋子、分析棋局状态。无论是刚入门计算机视觉的新手想找个有成就感的实战项目,还是有一定经验的开发者想深入理解YOLOv8的改进与部署,我觉得这个项目都能提供不少干货。下面,我就把这个项目的里里外外拆解一遍,分享其中的关键技术和踩过的坑。

2. 项目整体架构与设计思路

2.1 为什么选择YOLOv8作为基础框架

在项目启动时,YOLOv8刚发布不久,它继承了YOLO系列“快、准、狠”的基因,同时在易用性和灵活性上有了巨大提升。对于象棋棋子检测这个任务,我主要看中它几点:首先是Anchor-Free的设计。传统的YOLO需要聚类先验框(Anchor),而象棋棋子虽然大小固定,但在不同拍摄距离和角度下,在图像中的尺度变化还是有的。Anchor-Free机制让模型直接预测目标的中心点和宽高,省去了匹配Anchor的麻烦,简化了训练流程,对于棋子这种形状相对固定的目标,收敛起来更直接。

其次是它的多任务头结构。YOLOv8原生支持分类、检测和分割。在这个项目中,我主要用检测头(Detection),但它的架构清晰,模块化程度高,这为我后续添加注意力机制、改进损失函数等“魔改”操作提供了极大的便利。我不需要从零开始搭建网络,而是可以像搭积木一样,在它强大的骨干网络(Backbone)和特征金字塔(FPN)基础上进行优化。

最后是活跃的社区和丰富的文档。Ultralytics官方维护的版本迭代快,Bug修复及时,而且提供了从训练到导出一整套完善的Python API。这对于需要快速迭代实验、对比不同改进方案的项目来说,能节省大量底层开发时间,让我能把精力集中在解决象棋棋子的特定问题上。

2.2 系统核心流程拆解

整个系统的运作流程可以概括为四个核心阶段,形成了一个完整的工作流闭环:

  1. 数据制备与标注阶段:这是所有AI项目的基石。我们需要收集大量包含中国象棋棋盘的图片,图片要涵盖不同棋盘材质(木质、塑料、纸质)、不同光照条件(室内自然光、灯光、侧光)、不同拍摄角度(俯拍、斜拍)以及各种棋局状态(开局、中局、残局,包含大量遮挡)。然后使用标注工具(如LabelImg、CVAT或我项目里推荐的Roboflow)精确框出每一个棋子,并标注其类别(如“红车”、“黑卒”等)。

  2. 模型训练与改进阶段:使用标注好的数据集在YOLOv8框架下进行训练。这一阶段的核心不是简单地跑通训练脚本,而是基于初步训练结果进行分析,针对性地引入改进点。例如,针对棋子间严重遮挡导致漏检的问题,引入注意力机制让模型更关注棋子区域;针对“帅”和“将”、“仕”和“士”等字形极其相似的红黑棋子对,设计更精细的分类损失函数。

  3. 模型导出与部署阶段:训练得到最优的.pt权重文件后,需要将其转换为适合部署的格式。对于Python后端,可以直接使用PyTorch的.pt文件或转换为TorchScript。考虑到未来可能部署到边缘设备,我也提供了导出为ONNX格式的脚本,并测试了在TensorRT下的推理速度。这是连接AI模型与实际应用的关键桥梁。

  4. Web前端展示与交互阶段:为了让非技术用户也能直观地体验效果,我开发了一个轻量级的Web前端。用户可以通过网页上传一张棋盘图片,后端服务调用训练好的模型进行推理,将检测结果(棋子类别、位置坐标)返回,前端再将这些结果以可视化的方式(如用框标出棋子并显示类别和置信度)渲染在图片上,甚至可以进行简单的棋局状态分析(如统计双方剩余子力)。

这个流程的设计,确保了从数据到最终用户交互的每一步都是可控、可复现的,并且每个环节都有可以深入优化的空间。

3. 数据集构建:从零开始打造高质量棋谱库

3.1 数据采集策略与来源

高质量的数据集是模型性能的天花板。对于象棋棋子检测,单纯从网上下载标准棋盘图片是远远不够的,因为那太“干净”了,模型容易过拟合。我的数据来源主要有三个:

  • 开源数据集与网络爬虫:首先收集现有的公开棋盘图像数据集作为基础。同时,编写定向爬虫,从象棋教学网站、棋谱分享平台、视频截图等渠道,获取多样化的真实对局画面。这部分数据提供了丰富的棋局状态和背景。
  • 模拟生成与数据增强:利用Python的图形库(如PIL、OpenCV),我编写了脚本,可以程序化地生成棋盘和棋子。可以自定义棋盘纹理、棋子字体、光照阴影效果,甚至模拟棋子被部分遮挡的情况。这种方法可以低成本、大批量地生成标注绝对精确的样本,非常适合补充稀有场景(如某个特定棋子被完全包围)。
  • 真实环境拍摄:这是提升模型泛化能力的关键。我用手机和相机,在不同时间、不同地点、对不同材质的实体象棋进行多角度拍摄。特意制造了一些挑战,如反光强烈的塑料棋盘、光线昏暗的环境、棋子倒伏等。这部分数据虽然标注成本高,但能让模型真正“认识”现实世界中的象棋。

最终,我构建了一个超过5000张图像的数据集,并按照7:2:1的比例划分为训练集、验证集和测试集。验证集用于训练过程中调参,测试集则完全留到最后,用于公正地评估模型的最终性能。

3.2 高效标注实战与工具选型

手动标注几千张图片是项繁重的劳动,选对工具能事半功倍。我对比了几款主流工具:

  • LabelImg:老牌经典,本地运行,XML格式标注。适合小规模、入门使用。但对于大批量任务,其效率较低。
  • CVAT:功能强大的开源Web工具,支持团队协作、自动标注、视频标注。部署稍复杂,但一旦搭建好,对于大型项目非常高效。我主要用它来处理视频流中截取的连续帧。
  • Roboflow:我的最终选择。它是一个在线平台,提供了从数据上传、预处理、标注、增强到版本管理的一站式服务。它的“智能标注”功能(基于已有模型预标注)极大地提升了效率。我通常先手动标注几百张,训练一个初版模型,然后用这个模型在Roboflow上对剩余图片进行预标注,我再进行快速检查和修正,效率提升了数倍。Roboflow还能直接导出为YOLOv8所需的TXT格式(每个图像一个文件,内容为<class_id> <x_center> <y_center> <width> <height>,坐标已归一化),无缝对接训练流程。

标注心得:标注时,框(Bounding Box)要尽可能紧贴棋子边缘,但不必追求像素级完美,适当留一点边缘有助于模型学习一些上下文。对于严重遮挡的棋子,如果可见部分超过50%,则正常标注;如果不足,则根据实际情况决定是否标注或归为“困难样本”。统一的标准至关重要。

3.3 数据增强的针对性技巧

数据增强是提升模型鲁棒性的廉价且有效的方法。我使用了YOLOv8内置的增强功能(如mosaic、mixup),并针对象棋场景进行了定制:

  • 几何变换:随机水平翻转(棋盘通常对称)、小角度的旋转(±15度内,模拟拍摄不水平)和缩放。
  • 色彩空间扰动:调整亮度、对比度、饱和度和色调。特别是亮度调整,用来模拟不同光照条件;轻微的色彩抖动,让模型不依赖于特定的棋子颜色(比如深红和浅红都识别为红子)。
  • 模拟遮挡与噪声:随机在图像上添加灰色方块模拟遮挡,添加高斯噪声模拟低质量拍摄。这对于提高模型在复杂环境下的稳定性非常有效。
  • 背景替换:将棋盘区域随机粘贴到不同的背景图片上(如桌面、地毯、书本),强制模型学习关注棋盘和棋子本身的特征,而非固定的背景环境。

所有这些增强操作,在Roboflow平台上都可以通过可视化界面轻松配置和预览效果,确认无误后再应用到整个数据集上,非常方便。

4. YOLOv8模型训练与核心改进点解析

4.1 基础训练配置与超参数调优

拿到标注好的数据集后,就可以开始训练了。YOLOv8的命令行接口非常简洁:

yolo task=detect mode=train model=yolov8n.pt data=xiangqi_dataset.yaml epochs=100 imgsz=640

但这只是起点。关键的调优在于配置文件xiangqi_dataset.yaml和超参数:

  • data.yaml配置:这个文件定义了数据集的路径和类别。
    path: /datasets/xiangqi train: images/train val: images/val test: images/test nc: 14 # 类别数:红方7类,黑方7类 names: ['red_ju', 'red_ma', 'red_xiang', 'red_shi', 'red_jiang', 'red_pao', 'red_bing', 'black_ju', 'black_ma', 'black_xiang', 'black_shi', 'black_jiang', 'black_pao', 'black_zu']
  • 关键超参数:
    • imgsz(图像尺寸):从640开始尝试。如果棋子在小尺寸图像中像素太少,可以尝试增大到832或1024,但会显著增加显存消耗和训练时间。我的实验表明,对于大部分场景,640已经足够。
    • batch(批大小):在显存允许的前提下尽可能设大(如16, 32)。这能提供更稳定的梯度估计。我的GTX 1660 Ti上,yolov8s模型可以跑到batch=16。
    • lr0(初始学习率):使用默认的0.01作为起点。如果训练初期损失震荡剧烈,可以调低至0.001。
    • cos_lr(余弦退火调度器):建议开启。它让学习率随着训练过程从初始值缓慢下降,有助于模型在后期更精细地收敛。
    • patience(早停耐心值):设为50或100。如果验证集指标在连续这么多轮次内没有提升,则自动停止训练,防止过拟合。

4.2 针对棋子检测的70+创新点精要

这里不可能展开全部70多个改进点,但可以分享几个最具代表性、效果最显著的思路,它们主要围绕网络结构、损失函数和训练策略三个方面:

1. 网络结构改进:引入注意力机制棋子在棋盘上是一个个局部性很强的目标,但棋子之间的空间关系(如“车”在同一条线上)对于减少误检也有帮助。我尝试了多种注意力模块:

  • CBAM(卷积块注意力模块):将其嵌入到Backbone(C2f模块之后)和Neck(FPN层)中。CBAM同时进行通道注意力和空间注意力,能让模型更关注“棋子”所在的通道和图像区域。实测对遮挡情况下的召回率(Recall)提升约3%。
  • SimAM(无参数注意力):这是一个计算高效的无参数注意力模块。我将其添加到特征金字塔的融合层。它通过能量函数来评估神经元的重要性,让网络自适应地强调关键特征。对于区分红黑棋子(颜色是关键特征)有不错的效果。
  • 自注意力(Transformer Block):在Neck的最后,我替换了一个C2f模块为一个小型的Transformer编码器。这赋予了模型一定的全局上下文建模能力,有助于理解棋盘的整体布局,减少在棋盘边缘或角落的棋子漏检。

2. 损失函数优化:解决相似类别混淆最大的挑战是区分红方的“帅/仕/相”和黑方的“将/士/象”,它们在字形上几乎只有颜色和细微笔画差别。

  • 分类损失:将默认的BCE Loss(二元交叉熵)改为Focal Loss。Focal Loss通过降低易分类样本的权重,让模型更专注于难分的样本(即红黑对应的相似棋子)。这直接提升了难例的分类准确率。
  • 回归损失:将CIoU Loss替换为EIoU Loss。EIoU在CIoU的基础上,显式地分别计算宽高差异,使得边界框回归更精准。对于需要精确定位棋子中心点的任务(后续的棋局分析依赖于此),定位精度提升了约2%。
  • 增加语义分割辅助损失(可选):虽然主任务是检测,但我尝试在模型头部添加了一个轻量级的分割头,使用Dice Loss作为辅助损失。这个分割任务不输出精细的棋子轮廓,而是学习预测一个粗略的棋子前景掩膜。这个辅助任务作为一种“正则化”,迫使骨干网络学习更丰富的特征表达,间接提升了检测的稳定性,尤其是在棋子与棋盘背景对比度较低时。

3. 训练策略与后处理优化

  • 模型蒸馏:先训练一个较大的模型(如yolov8l)作为教师模型,然后用它来指导一个较小的模型(如yolov8n)训练。这样得到的小模型在精度上接近大模型,但推理速度更快,更适合部署。
  • Test Time Augmentation (TTA):在推理时,对输入图像进行多尺度、翻转等增强,将多次推理的结果进行融合。这能稳定提升精度,但会成倍增加推理时间。我在Web后端将其作为一个可选项,供用户在高精度模式下使用。
  • NMS优化:标准的NMS(非极大值抑制)在棋子密集且遮挡时,容易误删被部分遮挡的真阳性框。我尝试了Soft-NMS和DIoU-NMS。DIoU-NMS在计算重叠度时不仅考虑IoU,还考虑中心点距离,对于密集棋子场景更友好,有效减少了漏检。

4.3 训练过程监控与模型评估

训练过程中,要紧盯几个关键指标和可视化工具:

  • 损失曲线:使用TensorBoard或YOLOv8自带的日志功能,观察训练损失和验证损失的变化。理想的曲线是两者同步平稳下降,最后验证损失趋于稳定。如果验证损失中途开始上升,说明过拟合了,需要增加数据增强、减少模型复杂度或使用早停。
  • 性能指标:
    • mAP@0.5:最常用的指标,表示IoU阈值为0.5时的平均精度。这是我们的核心优化目标。
    • mAP@0.5:0.95:在多个IoU阈值(从0.5到0.95,步长0.05)下的平均mAP,更严格,衡量模型在不同定位精度要求下的综合性能。
    • Precision(精确率)和Recall(召回率):需要看P-R曲线。高精确率意味着模型很少误检(把背景当棋子),高召回率意味着模型很少漏检(没看到棋子)。我们的目标是让曲线下的面积(即AP)尽可能大。
  • 混淆矩阵:这是分析类别间错误的关键。通过混淆矩阵,我可以清晰地看到模型最容易把“红仕”误认为“黑士”,还是把“兵”误认为“卒”。这直接指导我下一步改进的方向——是增加这两类样本的数据,还是调整分类头的结构。

我通常采用“训练-评估-分析-改进”的循环。先进行一轮基础训练,然后分析验证集上的错误案例,针对性地引入一两个改进点,再进行下一轮训练,如此迭代,逐步将模型性能推向极限。

5. Web前端展示系统设计与实现

5.1 技术栈选型:轻量级全栈方案

为了让项目易于演示和传播,一个无需复杂安装、通过浏览器即可访问的界面是必要的。我选择了以下技术栈,旨在平衡开发效率、部署简便性和用户体验:

  • 后端:FastAPI。选择它而不是Django或Flask,是因为它现代、异步性能好,并且能自动生成OpenAPI交互文档,非常适合快速构建API。它的依赖注入系统也让代码结构很清晰。核心任务就是提供一个文件上传接口,接收图片,调用训练好的YOLOv8模型进行推理,并返回JSON格式的检测结果。
  • 前端:Vue 3 + Element Plus。Vue的响应式特性和组件化开发非常适合构建交互式应用。Element Plus提供了丰富的UI组件,让我能快速搭建出美观、实用的上传和展示界面。前端主要负责上传图片、显示加载状态、将后端返回的检测框和标签渲染到图片上。
  • 通信与可视化:前后端通过RESTful API通信。检测结果的可视化,我使用了Canvas API直接在原图上绘制矩形框和文本。为了更专业的可视化,也可以集成fabric.js这样的Canvas库,但原生Canvas对于这个需求已经足够。
  • 部署:整个应用可以轻松容器化(Docker),部署到任何支持Python的云服务器或本地机器上。

5.2 核心API与交互逻辑实现

后端的核心是一个FastAPI应用,主要端点如下:

from fastapi import FastAPI, File, UploadFile from fastapi.responses import JSONResponse from PIL import Image import io import cv2 import numpy as np from my_yolov8_inference import YOLOv8Detector # 自定义的推理类 app = FastAPI() detector = YOLOv8Detector("best.pt") # 加载训练好的最佳模型 @app.post("/predict/") async def predict_chess(file: UploadFile = File(...)): # 1. 读取上传的图片 contents = await file.read() image = Image.open(io.BytesIO(contents)).convert("RGB") image_np = np.array(image) # 2. 调用模型推理 results = detector.predict(image_np) # 3. 解析结果 predictions = [] for box, conf, cls_id in zip(results.boxes.xyxy, results.boxes.conf, results.boxes.cls): x1, y1, x2, y2 = box.tolist() class_name = detector.names[int(cls_id)] predictions.append({ "bbox": [x1, y1, x2, y2], "confidence": float(conf), "class": class_name }) # 4. 返回JSON return JSONResponse(content={"predictions": predictions, "image_size": image_np.shape[:2]})

前端的核心是处理文件上传,并将结果可视化:

<template> <div> <input type="file" @change="handleFileUpload" accept="image/*"> <button @click="uploadImage">识别棋子</button> <canvas ref="canvas" width="800" height="600"></canvas> </div> </template> <script setup> import { ref } from 'vue'; import axios from 'axios'; const canvas = ref(null); let originalImage = null; const handleFileUpload = (event) => { const file = event.target.files[0]; const reader = new FileReader(); reader.onload = (e) => { const img = new Image(); img.onload = () => { originalImage = img; const ctx = canvas.value.getContext('2d'); canvas.value.width = img.width; canvas.value.height = img.height; ctx.drawImage(img, 0, 0); }; img.src = e.target.result; }; reader.readAsDataURL(file); }; const uploadImage = async () => { if (!originalImage) return; const formData = new FormData(); // ... 将图片转为Blob并添加到formData const response = await axios.post('/predict/', formData); drawPredictions(response.data.predictions); }; const drawPredictions = (predictions) => { const ctx = canvas.value.getContext('2d'); ctx.drawImage(originalImage, 0, 0); // 重绘原图 predictions.forEach(p => { const [x1, y1, x2, y2] = p.bbox; ctx.strokeStyle = p.class.startsWith('red') ? '#ff0000' : '#000000'; ctx.lineWidth = 2; ctx.strokeRect(x1, y1, x2 - x1, y2 - y1); ctx.fillStyle = ctx.strokeStyle; ctx.fillText(`${p.class} (${p.confidence.toFixed(2)})`, x1, y1 - 5); }); }; </script>

5.3 前端展示的进阶功能

在基础检测框绘制之上,可以添加更多实用功能,提升用户体验和系统价值:

  • 棋局状态分析:在后端,收到检测结果后,可以编写逻辑来分析棋局。例如,根据棋子的位置和棋盘坐标映射,判断当前是开局、中局还是残局;统计双方“车”、“马”、“炮”等大子的剩余数量,给出简单的子力评估;甚至可以尝试识别一些简单的“将军”或“捉子”局面。这些分析结果可以一并返回给前端展示。
  • 交互式修正:模型不可能100%准确。前端可以允许用户点击错误的检测框进行删除,或者手动添加漏检的棋子框。修正后的结果可以发送回服务器,作为新的标注数据,用于后续的模型迭代训练,形成一个“人机闭环”的主动学习流程。
  • 批量处理与历史记录:支持用户一次上传多张图片或一个视频文件,进行批量处理。同时,将用户上传的图片和识别结果保存到数据库(如SQLite或小型MongoDB),方便用户查看历史识别记录,对比不同模型的识别效果。

6. 常见问题、避坑指南与项目扩展

6.1 训练过程中的典型问题与排查

  1. 损失不下降或NaN:
    • 可能原因:学习率设置过高;数据标注有严重错误(如坐标超出图像范围);数据集中存在大量损坏的图片。
    • 排查:首先检查数据集的YAML文件路径是否正确。然后,将学习率(lr0)大幅降低(如设为1e-4)重新训练几轮看损失是否开始下降。使用脚本遍历检查所有标注文件,确保坐标值在[0,1]范围内。
  2. 验证集mAP很低,但训练集损失正常:
    • 可能原因:严重的过拟合。模型只记住了训练集的特有噪声,而没有学到泛化特征。
    • 解决:增强数据多样性(使用更激进的数据增强);在模型中添加Dropout层;使用权重衰减(weight_decay)正则化;最根本的方法是收集更多、更丰富的训练数据。
  3. 某一类棋子(如“炮”)识别精度始终很低:
    • 可能原因:该类别的训练样本数量不足,或样本质量不高(遮挡严重、角度奇特)。
    • 解决:分析混淆矩阵,确认是“炮”被误认为其他类,还是其他类被误认为“炮”。针对性地补充“炮”的各类场景图片(特别是被其他棋子遮挡的情况)。也可以尝试使用类别权重,在损失函数中给样本少的类别更高的权重。
  4. 推理速度慢:
    • 可能原因:模型过大(如使用了yolov8x);输入图像尺寸过大;没有使用半精度(FP16)推理。
    • 优化:根据实际需求选择模型尺寸(n/s/m/l/x)。在Web后端,将模型和输入数据转换为半精度(model.half(),img = img.half())。对于固定场景,可以考虑将模型导出为TensorRT或OpenVINO等优化后的格式,能获得数倍的加速。

6.2 部署与工程化注意事项

  • 环境依赖管理:使用requirements.txt或environment.yml精确锁定所有Python库的版本,特别是PyTorch、TorchVision和Ultralytics的版本,避免因版本不兼容导致推理错误。
  • 模型版本管理:训练过程中会产生多个权重文件(best.pt,last.pt等)。在部署时,务必明确使用的是哪个版本。可以建立一个简单的版本命名规则,如yolov8s_xiangqi_v1.2.pt,并在代码或配置文件中记录其对应的性能指标和训练数据。
  • Web服务并发与性能:如果预计有多个用户同时使用,需要考虑Web服务的并发能力。FastAPI本身是异步的,但YOLOv8模型推理是计算密集型同步操作。可以使用asyncio.to_thread将推理任务放到线程池中执行,避免阻塞事件循环。对于高并发场景,可能需要引入任务队列(如Celery)或部署多个后端实例。
  • 安全性:文件上传接口要做好安全检查,限制上传文件的类型(如图片格式)和大小,防止恶意文件上传。对用户输入(如图片)进行基本的校验。

6.3 项目扩展方向

这个象棋棋子检测系统是一个很好的起点,可以在此基础上进行多种有趣的扩展:

  • 从检测到识别:当前系统识别的是“红车”、“黑卒”这类物理棋子。可以进一步集成OCR技术,识别棋盘上的棋谱坐标(如“炮二平五”),实现从图像到标准棋谱(FEN格式或PGN格式)的自动转换。
  • 实时对弈分析:结合摄像头,实现实时视频流分析。不仅可以检测静态棋子,还可以跟踪棋子的移动轨迹,自动记录一场真实对局的每一步棋,并连接象棋引擎(如Stockfish)进行实时胜率评估和着法推荐。
  • 移动端与嵌入式部署:将模型转换为TFLite或Core ML格式,集成到手机APP中,实现随时随地的棋盘扫描和分析。或者,使用更轻量的模型(如YOLOv8n经过深度剪枝量化后),部署到树莓派等嵌入式设备上,制作一个智能象棋棋盘。
  • 迁移到其他棋盘游戏:整个技术框架(数据标注、YOLOv8改进、Web展示)具有很强的通用性。可以尝试迁移到国际象棋、围棋、将棋等其他棋盘游戏的棋子检测上,只需更换数据集和类别定义即可。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询