编注: 本文是「2024 年度征文」共创赛道的入围文章。文章代表作者个人观点,少数派仅对标题和排版略作修改。
本文参加年度征文活动共创赛道
从今年一月末开始,我尝试将 Switch 上的 Sports 网球游戏(后称「Switch 网球」)加入我的专注力管理流程。
我在家里独自工作,每当高强度用脑一段时间之后,就会面临着专注力短缺、注意力游走的问题。神经科学知识和自身的过往体验告诉我,不应该借助社交网络(尤其是推荐系统)摄取碎片化信息来放松大脑,这种休息只是一种饮鸩止渴的假象,回过神来之后,往往更加疲惫。在我们无所事事或者注意力来回游走时,大脑激活的默认模式网络 (DMN) 甚至比专注工作学习更耗能。正如《深度工作》中所说,大脑不需要休息,只需要改变。
我不想一直跑去湖边或公园散步,每天早晚两小时用于亲近大自然的额度已经足够,所以把目光转向了 Switch 网球。对我来说,它的大部分优势恰恰来自于对真实网球体验的削减:
- 启动零成本,不用换衣服,走到客厅按一下 Switch 电源键就能随时开始。
- 游戏角色自动跑位,不需要玩家跟着跑动,只需要手臂挥动手柄,控制发球时机、力度和加旋转即可。因此,身体只是微微发热(有点像做热身运动),不怎么出汗,所以结束后也不用洗澡,可以迅速回到工作上。
- 节奏快,时间短,即便打「五局三胜」制,在有来有回的情况下,十分钟内也能结束战斗,很适合和工作穿插进行。
- 即便是削减了大量真实体验的体感游戏,它仍然要求我全神贯注,观察网球的轨迹、思考击球的方向、预测对方球员的行为。这份专注已经足够化解工作项目中积累的阻力感。
我最多一天会打十几场比赛,从新手区开始,能够逐渐连续三局零封「强力 NPC」,便开始信心满满地挑战「超强 NPC」,没想到被打得毫无还手之力,最开始时连球都接不到。随着更多的练习,我逐渐能够适应超强 NPC 的球速和更多样化的攻防模式,进而能够偶尔打得有来有回,甚至有时候还会录个屏,反复欣赏打出的好球。
这让我想起了高中时学物理的经历。
我对物理非常不在行,还记得某次力学周测,面对整张考卷上上下下的滑轮,大脑彻底停止了思考,只考了 3 分——这 3 分还是蒙对了一道选择题。我压力巨大,无论刷了多少道题,脑子都是一团浆糊,只能根据经验去套公式,尽量拿一点分数。可不知怎么的,在小高考前一个月,我突然之间什么都懂了,题目能够在我脑海中变成动画,我以一个文科生的身份去参加理科实验班的竞赛课,居然每道题都能轻松解决。就这样我安然无恙地度过了小高考,从此不用学物理了。但那之后,我又忽然不懂物理了,直到现在为了工作读一些硬核科普书籍,还是会觉得云里雾里 (物理)。
这个过程,让我非常理解《献给阿尔吉侬的花束》中主人公查理的变化——两个不同时期的自我之间,在智识上有着巨大的鸿沟,相互不理解对方到底是怎么回事。在学习的过程中,我们往往会陷入「知识的诅咒」中——一旦掌握了某种知识,就难以理解自己当时「不太懂」的状态了。
所以,当我在 Switch 网球中能同时感受到屡战屡败和点滴进步时,就产生了一个想法:这是一种很难得的体验,为何不买个采集卡,认真记录一下我是如何进步的呢?也许这份记录,能够让我更加确认努力的意义和方法,在未来某个时刻支撑我走过一段艰难的时光呢?
为自己寻找进步的「口径」
不知道大家是否留意过类似「A 产品在 B 行业以 C 指标全行业第一」的广告,它们有时候出现在地铁站灯箱上,有时候出现在短视频台词里。这种广告背后一般有一份宣发性质的行业研究报告做支撑,以报告发布方的声誉做背书,用数据给客户整出一个「行业第一」出来——不管这个「第一」是何口径。
有时候太直接的指标捞不出来,那就交叉一下,比如「X 行业新生代品牌 Y 近三年 GMV 复合增长率第一」,「新生代品牌」「近三年」「GMV 增长率」这些口径的选择都有很大操作空间。不过,拿数据说话,在这个口径下,「行业第一」完全没有造假。
做数据分析师时,我对这种行为嗤之以鼻,认为这是自欺欺人的表现,消费者会用真金白银投票。但为自己寻找在 Switch 网球上进步的「口径」时,却不得不承认这确实是一个值得参考的策略,因为它让评价的标准变得更加细腻和柔软。即便仍然经常 0:3 落败,我也能真切地感受到自己 Switch 网球技术真的在进步,比如:
- 从一开始连 NPC 发来的球都接不住,到逐渐一个回合可以来来回回好多次才丢掉这一分
- 球速在我眼中变慢了,当我回头去打低等级 NPC 时,仿佛进入了子弹时间
- 能和超强 NPC 争夺局点,有时候局点会拉扯七八个回合
- 能够和对方的网前选手来来回回,预判能力提高,反应速度加快
- 偶尔能赢一局,甚至破发超强 NPC,并且输掉的三局也有不错的得分
- 尽管大比分还是 1:3 落败,但赢下来的那一局,偶尔会是第一局,这说明我的适应能力增加了,不需要先输掉一两局来进入状态
对任何领域的组织和个人,社会都有一条硬性的衡量标准,比如考试成绩分数线、职场晋升排名、体育竞赛的晋级线。要么跨过这条线、获得成功,要么被这条线挡在外面、面对失败,不存在中间地带。当然,我并非要责怪谁,如果没有硬性标准的残酷筛选,也许世界就很难运转起来。
但这和我们作为个体的进步模式并不匹配。正如前面所提到的,尽管我从未赢过一场比赛,但我越来越能够应对超强 NPC,这种进步是细腻、微小但真实存在的,并能够提供极强的正反馈,激励着我继续打下去。而社会的衡量标准,远远大于个体进步的尺度。在过于宏观的尺度上,如果个体只盯着那条泾渭分明的分数线,便会忽略自身的微小进步,甚至觉得关注这些「皮毛」只是自我安慰,最终只能在遥远的硬性标准前一次次验证自己是「失败者」,并提前退出赛场。
屡战屡败,是面对硬性标准时不得不承认的现实。接纳自身进步的度量衡,则是支撑个体屡败屡战的数据导向策略。
于是,我对 Switch 网球的记录有了更详细的目标:在观察过足够多场比赛的录屏后,尽可能地将记录细化到每一个回合的每一次挥拍。数据记录得越细致,后续就越有可能发现常规分析之外的衡量维度,在交叉维度分析时也就有更多的观察视角。
由于我是一名 Switch 国行勇士,无法联机和真人对打,因此被动获得了适合「实验」的特质:我未来只和传奇 NPC 对打,这更好地将进步的因素孤立出来(虽然我的个人技术有陷入对传奇 NPC 过拟合的风险);同时我无法获得各种服饰和道具,这也减轻了机器学习任务的复杂度。悲壮地说一句,我的变量,只有时间。
快速验证想法的关键节点
对于工具类产品,一旦能够确认需求真实存在(这个产品至少有作者本人这个用户),我的一贯逻辑是先验证关键节点,然后考虑如何将节点串成工作流,最后提供用户友好的 UI 界面。
我也大致调研了一下现有的网球分析 APP(例如 SwingVision),但是是对真人做跟踪,这和游戏中的人物建模有一定差距,并且游戏中的相机镜头不断移动,也不满足其对固定摄像机位的要求。因此,有些轮子还是得自己造。
由于三月初才有了「记录自己每一球」的念头,已经接近征文截稿时间,所以目前先完成了部分节点的验证,还有一些尚未准备好数据集去微调模型,但根据我的一些调研以及与 AI 的探讨,验证这些节点应该不算太大的问题。
数据处理流程 | 是否已经验证 | 目前的问题 | 预想的解决方案 |
---|---|---|---|
画面分类 | 逻辑上没有问题 | 无 | 根据固定的画面元素做分类 |
网球轨迹追踪 | 部分验证,逻辑上没有问题 | 在草地球场,网球也是绿色的,和背景融为一体,仅偶尔能被识别出来 | 1. 换成红土球场,背景是红棕色,网球时黄蓝色,对比明显 2. 增加训练集数据量 3. 网球有一个在地面上的椭圆形投影,可以被检测并使用 |
人物追踪 | 已验证 | 偶尔追踪会丢失 | 1. 后续加入更多训练数据 2. 通过线性插值逻辑补全 |
网球场关键点检测 | 部分验证 | 开源方案会丢失或误判一些关键点 | 1. 对开源方案的模型进行微调 2. 通过其他非机器学习方法来判断(网球场的几个点特征过于明显,也许有更简单的方案) |
网球场标准化 | 逻辑上没有问题 | 暂无 | 暂无 |
人物、网球轨迹投影到标准化网球场 | 逻辑上没有问题 | 暂无 | 暂无 |
数据整合 | 无需验证 | 暂无 | 暂无 |
数据分析框架搭建、可视化设计 | 无需验证 | 暂无 | 暂无 |
画面分类

除了比赛画面,游戏中还有不少其他类型的画面会被一并录制下来,例如准备画面、分数画面和回放画面。这些画面都有如上图所示固定的特征,可以被用来排除画面,或者从画面中提取有用的数据(例如比赛得分)。
画面中还有一些其他元素,例如失分 / 得分类型(出界、没过网、两次落地),也可以通过机器学习进行提取。
整体来讲,这里没有难度。
人物追踪和网球轨迹追踪
我之前虽然做了一段时间的数据分析师和研发工程师,但没有真正上手过机器学习项目,更是对「计算机视觉」这听起来就十分艰深的领域望而却步。久闻 YOLO 大名,这次在 AI(以及投稿 DDL)的加持下,居然也能磕磕绊绊地上手了。
YOLO(You Only Look Once)是一种实时目标检测算法,广泛应用于计算机视觉领域,通过海量的真实世界数据集,对 80 个大类进行了预训练,其中就包含了 person
和 sport ball
。作为一名调包侠,我最先想到的,就是试试 YOLO 的基础模型表现如何,能少做一点是一点。

游戏角色的设计更有卡通风格,和真实人类有一定不同,不过对每一帧画面识别出来「这是一个人」没有问题,置信度也在 90% 左右。但对于连续的多帧画面之间追踪「这是同一个人」,就有些问题了。可以发现,随着时间的推移,每隔几秒钟,游戏角色被分配到的 ID 就会变化。这就说明,虽然 YOLO 仍然认为「这是一个人」,但却不认为前后两帧是「同一个人」。这就会给后期的数据分析带来麻烦。
解决问题的思路有两个:
第一,降低 IoU
的门槛值。
虽然 AI 帮我写了代码,但仍需我们研究一下 YOLO 是如何跨帧追踪人物的,理解了模型的工作原理,才有可能提高其表现。模型中有一个参数是 IoU
(Intersection over Union),意为「前后两帧的检测对象之间,交叉重合部分占整体并集的比例」,取值范围在 0 到 1 之间,默认为 0.5。
IoU
设置得越高,越要求前后两帧检测对象之间变化较小(很符合直观逻辑)。 IoU=1
代表两帧的检测对象完全重合,那么自然可以判定为同一个对象;IoU=0
则意味着两帧中的检测对象毫无交集,例如严重跳帧的画面,尽管视觉上我们能肯定这就是同一个人,但模型无法识别。
将 IoU
降低至 0.1 后,问题并没有得到任何改善。我想到 Switch 录屏只有 720P30 帧,将视频转化为一帧帧的图像后,确实能发现前后帧之间同一个角色的变化较大,有时候是动作忽然大幅变化,有时候是人物角度发生变化。我想到,也许提高清晰度和帧率能够改善问题,便去 B 站上下载了其他玩家通过采集卡录制的 1080P60 帧的视频,拿来做分析,发现是同样有这个问题。于是放弃了这个方案。
第二,不再关心 ID,只关心场上的四个球员。
YOLO 能够对画面中每一个出现的潜在对象进行检测,这就导致了一个副作用:游戏中的观众也会被识别并标注出来,一些圆形的元素也会被识别为网球。虽然可以通过一些方法(例如球场内外的坐标)将其过滤出去,但最好能在一开始就确保输出数据的精简干净,减少后续不必要的工作量。
于是我想到,不如对模型进行训练,训练它认识我球场上的每一个球员,而不是把他们统一识别为 person
而后赋予一个随时变化的 ID。但如何微调模型,这又涉及到了我的知识盲区,AI 给出了完整的工作流程,并告诉我可以试试 Label Studio 进行数据标注,这是一个开源项目,可以部署到本地使用。
我将一个 30s 录屏转化为每帧一张图片,便得到了大约 900 张图片,然后从中每 10 张抽取一张进行数据标注。

开始标注的时候,我一边有点焦躁(因为很抗拒做这类数据苦力工作,并且还不知道费时标注的数据能不能用),一边却逐渐进入一种类似心流的状态。在做这些工作的时候,我完全不需要思考,只要鼠标在画面上拉上一个个边界框,然后点击「提交」即可,颇有种《人生切割术》中 Innies 们跟着直觉收集数字的沉浸感。
一个半小时后,我标注了 30 张图片,远远少于 AI 给到的几百张的建议。但我决定到此为止,先试试再说。毕竟,几百张图片的标注少说要耗掉一整天,万一最后还没效果,那可亏大了。

不知道是因为游戏画面的特质,还是 YOLO 的基础模型太优秀了,我这 30 张图片的微量数据集,居然起到效果了,我换了另一段录屏来做人物追踪,可以发现四个球员基本都被标注上了,虽然 ID 在变化,但我可以直接用球员名字来定位了。追踪偶尔有丢失,这应该可以通过后续更丰富的数据集来解决,也可以通过线性插值的方式填补上。

另外,我在标注的选手时候还顺手标注了网球,查看标注。但上文中的 GIF 可以看到,网球几乎没有被识别出来。通过模型训练后返回的 Confusion Matrix 可以发现,网球基本都被识别为了 background
,也就是和背景网球场混到一起了——这时候我才发现自己选择场地失误了,网球和草地球场都是绿色的,在 720P 的分辨率下确实模糊一团,有时我自己都看不清球在哪里。

换成红土球场后,网球是黄蓝的,对比相当明显。时间所限,我还没有对这个假设进行数据标注和模型训练,但我认为逻辑上是行得通的,特别是之后我会换成采集卡录屏,训练集数据量、画质和帧率的提升也会产生一定帮助。如果实在不行,网球还有地面上的深色投影可用,这个通过 OpenCV 的形状检测就可以识别,因此回溯其大致的轨迹还是能做到的。
识别网球场地关键点 & 形状透视变换 & 位置关系投射

右图:一个理想化进行网球轨迹分析的网球场平面图 (Photo by Maurits Bausenhart on Unsplash)
由于游戏中相机视角是在一定高度从我方俯视场地,并跟随我方球员的位置进行一定的前后左右平移,这导致网球场地是一个一直在画面中移动的梯形。为了使得在后续数据可视化中能够将球员位置和网球轨迹映射到一个标准长方形场地上,还需要采集每一帧中场地的关键点,并通过一定的透视变换算法将其标准化。

我找到了一个 开源项目,试着运行了一下,能够检测出部分关键点,但整体效果不太好,有一些关键点的缺失和误判。不过,这说明项目的思路是值得参考的,至少有一部分的节点通了,也许后续我也可以像借助 YOLO 的基础模型那样,标注一些数据集来进行微调。
由于视角变换,有时候球场位于我方的一部分会在画面之外,这个时候可以通过其他关键点的位置信息、线条的比例关系、直角的扭曲程度等,来计算球场中部分缺失线段的汇合点。
这些还需要进一步实现(我认为可以做到),主要目的是为了能够分析「谁在何时何地将网球以怎样的速度和方向击出」这一比较细致的数据。
关于后续的数据分析
按理来说,作为一个数据分析师,我应该在这里提供一份完善的数据分析框架,让大家知道我会对哪些维度进行怎样的分析,有什么值得关注的亮点。
一方面是时间所限,这几天投入在了 YOLO 的学习和应用上,没有留够时间来思考一个逻辑严密的框架。只有前面的流程走通了,才有后面可供分析的数据。另一方面是,我确实还没想好这些数据应该怎么分析——作为一名运动苦手,除了 Switch 网球,我几乎没有所谓的「领域知识」。必须得拿到数据之后,边打边思考,才能产出有指导价值的框架。若是照搬 AI 提供的分析框架,未免有些「为了完成任务而糊弄一下」,有敷衍读者之嫌。
但根据我这些年从事数据分析的经验,精彩的观点往往产自框架之外。
各位可以参考「为自己寻找进步的『口径』」这一小节里,我提及的各类进步。这些自我观察虽是不成体系、没有完整数据支持的「感受」,但也确实体现了某些模式——毕竟,我们的大脑时时刻刻都在进行深度神经网络学习。同时,若感兴趣,还可以参考 这篇文章,我自认为这篇文章一定程度上体现了「从看似平平无奇的数据中发掘有价值的洞察并转化为解决方案」的能力,相信我对 Switch 网球的数据分析也会有别出心裁之处。
项目的预计产出形式
一个应用 / 服务
一个输入 Switch 网球录屏后能够自动抽取、分析 NPC 对打的比赛数据(包括单场比赛和长期多维分析)的应用,这些分析会结合专业网球赛事的关注点和我在 2025 年打 Switch 网球积累的非常规维度,具有一定的个人特色。数据展现以可视化看板为主,并在网球平面图上还原对应轨迹,用户也可自行组合维度进行分析。
考虑到视频处理成本较高,如果是网页服务会按次 / 视频时长收费,如果是本地应用则支持买断。
几篇长文
2-4 篇长文,其中一篇会是我这一年在 Switch 网球上的进步(我相信到 2025 年年末至少能和传奇 NPC 打个有来有回🤔),比如这些进步是如何在每一个微观层面上累积的、我又如何在这些失败和进步中去体会专业运动员在纪录片中的表现;另一篇则会是文章开头提到的,我如何将 Switch 网球融入我的专注力工具箱,实现整体精力管理能力的提升。
其他文章的方向和主旨不太确定,读者可以参考这两篇个人成长领域的文章(1 & 2),大概率当我充分掌握一项新技能时,我的内在又会发生一些良性的转变,我希望在少数派传递这份「可复制的希望」。目前能想到的选题包括:
- 教练的本质:在豆瓣发现了一本书名为 《教练的本质——回放式探究的运用指南》,还没有买来读,看简介似乎是一种可泛化、迁移的概念,还不确定是否能对我产生帮助,但这个书名确实吸引到了我。我的项目要解决的一个问题就是将「回放」分类汇总,以帮助用户产生洞见,从而调整行为,并最终取得进步。这种「回放」技术能否被运用到更多领域、如何确保它在其他领域能够和运动领域同样有效?
- 陪练与刻意练习:传奇 NPC 非常难打,但我也能感受到,和他们对打几次之后,自己的反应速度提升了,再回头打超强 NPC,明显感觉比以前容易了,所以不少人把传奇 NPC 当高水平的陪练。而如何从陪练那里有效提升自己的水平,也是一个值得思考的话题。
- 热手效应:该游戏中有一个机制,在网球抛出的最高点击球,可以发出高速球。这个时机很难把握,但我发现如果有一次成功,那么后续就很容易连续多次都发出高速球,而如果失败了,就会很长时间不能触发。同理,在《塞尔达传说》中,面对守护者发射的激光,只要我成功一次,一般就能连续三次将其盾反,但如果失败了,就倾向于一直失败,这显然不是随机分布的。有一本同名书专门讲了这个话题(不过评分比较低),我会在阅读后看看是否有可延伸的话题。
- 与无意识合作:超强 NPC 和传奇 NPC 的前场选手会出其不意地截杀,当我思考要不要回击时,就会丢掉这一分,但其实我的手已经不自觉地抖动想要回击了——「自我」深思熟虑的倾向,破坏了身体的直觉——这让我想到了经典的网球书籍《身心合一的奇迹力量》所提到的「自我 1」和「自我 2」。在球场内外,我们的自我该如何与无意识合作?
以及一个不算产出的目标
如果第二代 Switch 能在今年按时推出且向前兼容旧游戏,我绝对不做国行勇士,并且要联机和真人对打,达到 A 段。
希望我们找到各自进步的度量衡,并在赛场较量一番!🎾
> 关注 少数派小红书,感受精彩数字生活 🍃
> 实用、好用的 正版软件,少数派为你呈现 🚀