---
title: 没想到，学棋五年的我竟然输给了昇腾CANN！-官方技术文章-昇腾社区
description: 近日，一位神秘“人物”亮相华为昇腾CANN技术开放日现场，引得众人簇拥，吸粉无数。从现场AI棋艺大战的画面中我们可以看到，一边是眉头紧锁苦苦思考的玩家，一边则是本场的主角----基于昇腾CANN开发的AI对弈机器人。 和一筹莫展的小棋友相比，我们的主角着实看起来起来轻松不少，不仅能在短短十几秒内化解玩家攻势，还能防不胜防精心布局，让胜利的天平逐渐向自己倾斜。整整两天，上百场对弈，竟然未尝一败，真是
keywords: 没想到,CANN,学棋五年的我,竟然输给了昇,官方技术文章,昇腾社区,五大模块功能解读,火眼金睛精准
url: https://www.hiascend.com/developer/techArticles/20220223-3?envFlag=1
section: (其他)
---

# 没想到，学棋五年的我竟然输给了昇腾CANN！-官方技术文章-昇腾社区

URL: https://www.hiascend.com/developer/techArticles/20220223-3?envFlag=1
描述: 近日，一位神秘“人物”亮相华为昇腾CANN技术开放日现场，引得众人簇拥，吸粉无数。从现场AI棋艺大战的画面中我们可以看到，一边是眉头紧锁苦苦思考的玩家，一边则是本场的主角----基于昇腾CANN开发的AI对弈机器人。 和一筹莫展的小棋友相比，我们的主角着实看起来起来轻松不少，不仅能在短短十几秒内化解玩家攻势，还能防不胜防精心布局，让胜利的天平逐渐向自己倾斜。整整两天，上百场对弈，竟然未尝一败，真是
关键词: 没想到,CANN,学棋五年的我,竟然输给了昇,官方技术文章,昇腾社区,五大模块功能解读,火眼金睛精准

官方技术文章 [了解详情](https://www.hiascend.com/zh/developer/techArticles)

没想到，学棋五年的我竟然输给了昇腾CANN！

没想到，学棋五年的我竟然输给了昇腾CANN！

实战经验

发表于: 2022/02/23

近日，一位神秘“人物”亮相华为昇腾CANN技术开放日现场，引得众人簇拥，吸粉无数。从现场AI棋艺大战的画面中我们可以看到，一边是眉头紧锁苦苦思考的玩家，一边则是本场的主角----基于昇腾CANN开发的AI对弈机器人。

和一筹莫展的小棋友相比，我们的主角着实看起来起来轻松不少，不仅能在短短十几秒内化解玩家攻势，还能防不胜防精心布局，让胜利的天平逐渐向自己倾斜。整整两天，上百场对弈，竟然未尝一败，真是让人拍案叫绝。

<v:shapetype>
 <v:stroke>
 <v:formulas>
  <v:f>
  <v:f>
  <v:f>
  <v:f>
  <v:f>
  <v:f>
  <v:f>
  <v:f>
  <v:f>
  <v:f>
  <v:f>
  <v:f>
 </v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:formulas>
 <v:path>
 <o:lock>
</o:lock></v:path></v:stroke></v:shapetype><v:shape>
 <v:imagedata>
</v:imagedata></v:shape>

据了解，这款对弈机器人搭载Atlas 200 AI加速模块，其内集成昇腾310 AI处理器，可实现图像、视频等多种数据分析与推理计算，广泛用于智能监控、机器人、无人机、视频服务器等场景。

更重要的是，研发人员借助华为昇腾AI异构计算架构CANN（Compute Architecture for Neural Networks）提供高效易用的AscendCL编程接口，可针对多样化应用场景快速构建基于昇腾平台的AI应用和业务，并通过软硬件协同优化，大幅提升昇腾AI处理器的计算效率。

## 五大模块功能解读

机器人主要包含五个部分：中心控制、棋盘理解、对弈引擎、机械臂和UI界面。

<v:shape>
 <v:imagedata>
</v:imagedata></v:shape>

·中心控制，好比人大脑中负责逻辑的部分，它主要用来协调各个模块的调用流程。

·棋盘理解，好比人类的视觉系统，通过安装在上方的摄像头采集当前对局信息，通过图像处理程序来理解“看到”的内容。

·对弈引擎，好比人脑中负责思考的部分，用来思考下一步最好的走法是什么。

·机械臂，就是机器人的手了，用来执行AI聪慧的走法，把棋盘上的棋子移动到正确的位置。

·UI界面，则是给用户提供一个方便交互的界面，玩家方执红，通过平板的UI交互界面，由代表红方的机械臂将棋子移动到指定位置；AI方执黑，通过上方的摄像头看到当前的棋局，并通过搭载的AlphaZero算法软件计算出走法，由代表黑方的机械臂来执行。

当然你也可以抛弃UI和其中一个机械臂，亲自上阵和机械臂面对面大战三百回合，获得沉浸式的体验。此对弈机器人还提供了观棋模式，切换此模式就会让AI来执行计算，在当前的局面下为执棋方提供参考走法。

和机器人对弈是不是很酷？其实，基于异构计算架构CANN开发这款对弈机器人并不是很复杂，成功的关键就是控制好机器人的眼睛、大脑和手臂的功能。

## 火眼金睛精准识别棋子位置

机器人要想掌控全局，就要对整个棋盘的状态有认知能力，棋盘理解模块就是为此而存在的。位于上方的摄像头就像是机器人的眼睛一样，作为传感器捕捉当前的棋盘信息，并且将图像传入后台进行处理。

图像处理程序主要包含畸变矫正等预处理手段，以及圆检测算法用来获得当前全部棋子的坐标位置。最后，根据棋子的位置裁剪出一小块56x56的图片按批次传入分类模型进行推理，得到每一个位置上棋子的颜色和种类。

为实现这一过程，研发团队借助异构计算架构CANN，能够很容易将推理模型部署在Atlas 200上；同时在推理过程中，通过CANN内置的高性能算子自动加速计算，让机器人能快速精准地识别棋子位置，为后续博弈计算打下坚实的基础。

## 聪慧大脑快速进行博弈计算

如果说棋盘理解模块是机器人的眼睛，那么核心的对弈引擎就是机器人的大脑了，研发团队选择基于强化学习的AlphaZero算法作为对弈引擎的基础。AlphaZero算法是谷歌的DeepMind实验室在2017年提出的，主要流程包含蒙特卡洛搜索树（MCTS）以及神经网络构成。

MCTS全称 Monte Carlo Tree
Search，是博弈决策规划中非常实用的一种算法。它根据模拟的最终输出结果，按照每一步节点构造搜索树，从而将随机性和完整性统一起来，为最优化决策提供帮助。

神经网络则是用来拟合通过自对弈生成的数据，不断迭代训练来优化模型。网络结构主要包含了两个head，一个是policy head，用来预测下一步走某一着的概率；另一个是 value head，用来预测当前局面下的胜率。训练流程就比较直接了，在得到了使用当前最优模型模拟自对弈的棋局记录之后，用这些数据作为训练样本，把当前最优模型作为预训练模型进行训练。

如此复杂的过程依赖超高的计算算力，否则对弈机器人将会是一个让你抓狂的迟钝选手。而Atlas 200能提供最高22 TOPS的算力，也就是能达到每秒钟22万亿次计算，这让团队成员欣喜若狂，这个算力足够应付绝大多数玩家，同时也很好地解决了项目成本问题。

为了更为充分释放硬件算力，研发团队在软件层面借助异构计算架构CANN，对神经网络进行图级和算子级的编译优化和自动调优，让对弈引擎实际性能大大超出预期。

<v:shape>
 <v:imagedata>
</v:imagedata></v:shape>

然而，目前对弈引擎的参数设置都比较小，感兴趣的读者可以参考文末的开源代码自行调整参数，让机器人拥有更强大的棋力。另外，倘若搭载Atlas系列更强算力硬件，再让异构计算架构CANN对对弈算法进行一轮深度优化和加速，下过世界冠军也是指日可待了！

## 灵活手臂精准控制运动细节

除此之外，展示中小巧灵活的机械臂有没有让你眼前一亮的感觉？项目中采用的是开塔米罗研发的的桌面级六轴机械臂，主要面向的是K12教育，其有效范围内精度可达0.2mm。结合厂商提供的API接口，研发团队对控制流程精心设计并且进行了优化，控制气泵开关来让吸盘提子落子，结合棋盘理解模块信息作为反馈，采用棋子的真实坐标，让机械臂“睁着眼睛”操作棋子，进一步减小了定位误差。

## 昇腾社区丰富资源助力高效开发

当然，整个开发过程也不是一气呵成的，研发团队也是遇到了不少困难。幸运的是，昇腾社区上有丰富的资源，让整个开发过程一路披荆斩棘。

昇腾社区提供了包括计算机视觉（CV）、自然语言处理（NLP）等在内的400+模型，能够全面覆盖典型场景应用，并可直接部署在昇腾系列硬件且高效执行。还有丰富的AI应用案例，为开发者打开思绪，助力开发者快速构建AI应用和业务。

而社区论坛更是为开发者们提供了相互交流的平台，并且响应迅速。遇到的bug、经验、成果等等都可以在论坛上分享，如果遇到了困难，先看看是不是有前人也遇到过，没准问题就解决了。

## 对弈机器人带来的启示

该项目的对弈机器人代码全部开源，感兴趣的小伙伴单击文末链接即可获取，欢迎大家参与项目交流和改进。

可能有小伙伴会说，何必这么麻烦呢，直接和人对弈它不香么？

这款简单的对弈机器人只是灵感的开始，实际上不光是下棋，通过AI加持的机器人可以协助人类完成更多领域的工作。如今，人工智能正在深刻改变我们的学习、工作和生活，并依然成为了数字经济发展的核心动力，只要你们有一颗澎湃的心，想要参与到AI改变世界的队伍中，借助昇腾AI软硬件平台，一定可以做出许许多多让人眼前一亮的项目。

CANN作为昇腾AI基础软硬件平台的核心，以极致性能、极简开发、开放生态为目标，助力昇腾构筑业界最强AI算力平台，同时也为每一个开发者点亮梦想，助力开发者在未来舞台上大放异彩，踏浪前行！

参考链接：

1. 项目代码：

https://gitee.com/ascend/samples/tree/master/python/level3_multi_model/Robot_Play_Chess [了解详情](https://gitee.com/ascend/samples/tree/master/python/level3_multi_model/Robot_Play_Chess)

2. 昇腾社区：https://www.hiascend.com/ [了解详情](https://www.hiascend.com/)

3. 昇腾论坛：https://bbs.huaweicloud.com/forum/forum-726-1.html [了解详情](https://bbs.huaweicloud.com/forum/forum-726-1.html)

本页内容
