【前言】

前段时间做了点网球相关的简单的工作,那段时间我还顺带去学习了一下怎么打网球,这多点运动还是挺好的,起码不会因为代码写太久搞得腰酸背痛。最近正好是东京奥运会,这次我来蹭一下热点,找到了一篇做乒乓球分析的paper,非常有意思,而且作者团队们还给了ios的sdk,诚意满满。不掌握点技术来练球,怎么打得过公园的大爷?

以下解读与见解均为我的个人理解,要是我有哪里曲解了,造成了不必要的麻烦,可以联系我删除文章,也可以在评论区留言,我进行修改。也欢迎大家在评论区进行交流,要是有什么有意思的paper也可以留言,我抽空看一下也可以写一些。正文内容中的“作者”二字,均是指paper的作者,我的个人观点会显式的“我”注明。而文中的图基本都是从paper上cv过来的,我也没本事重做这么多的图,况且作者的图弄得还挺好看的。

Paper基本信息

题目:TTNet: Real-time temporal and spatial video analysis of table tennis

作者:Roman Voeikov, Nikolay Falaleev, Ruslan Baikulov, 是来自一个叫做OSAI专做乒乓球分析的公司

链接:CVPR 2020 Open Access Repository​openaccess.thecvf.com

Github:GitHub - osai-ai/table-tennis-ios-sdk​github.com

总结:提供了时间-事件级+空间-检测级的120fps的乒乓球数据集以及baseline TTNet

Paper内容介绍

这里有一点我要提前说明一下,paper中有一个短语“net hits”,原谅小弟文化水平不行,我查了半天乒乓球术语,还有百度google啥的,愣是没查到这个什么意思,我都怀疑是作者的俚语啥的,这里我暂时翻译成“打网”,要是有hxd知道是什么意思的,还请提醒一下,我改一下。

【Introduction】

最近基于深度学习的CV工作开始在体育分析中发挥作用,比如有:球员和运动器材的跟踪、球员的姿势估计、与比赛有关高层次检测等。最近奥运会看新闻,中国跳水队好像用了百度的分析系统,田径队的短跑训练有次看宣传片也看到了用CV的姿势分析来分析跑步步伐的,不过具体是谁家的技术就不知道了。

乒乓球运动比赛过程中的基本事件就是球的反弹和触网,但是由于乒乓球运动节奏快、球速快、球小等特点,要在比赛过程中收集球的弹跳次数、落在球桌上的坐标等信息是十分困难的,需要有分辨率高、帧率高的视频数据才能检测到球的运动轨迹和相应事件。

因此作者们设计了一个有较低推理时间能实时处理高帧率视频每一帧的多任务TTNet网络,用以检测人、桌子、记分牌,以及球的坐标和比赛事件。同时还开源了一个数据集。

【相关工作】

虽然乒乓球很多,但是给CV领域乒乓球有关的工作少得可怜。

  • Tamaki和Saito等人的工作中,用轮廓分析方法来找候选球,但这种方法遇到球状物体的时候就不行了。
  • Myint等人的工作中,用自适应颜色阈值和背景减法做立体图像的球分割,还做了一个用4个高速摄像机系统重建球3D规矩的工作,但这种设备太复杂。
  • Reno等人,提出了CNN架构来检测图像小patch是否包含求来检测网球比赛视频中的球,但这种有大量重叠patch,实时不了。
  • Komorowski等人,提出了DeepBall,找足球比赛中的球,球慢的时候,有SOTA的性能,但是乒乓球快得多,不适用。

但有个很尴尬的地方,这些工作都在找球,但是体育视频不仅仅只有球,还有球员、比赛事件、环境条件等信息。考虑到现在还没有做跟踪图像中小目标并结合多类语义分割和时间事件检测的工作,OSAI就吃了这个螃蟹,做了TTNet。

【OpenTTGames数据集】

OpenTTGames数据集,包含以120fps录制的乒乓球比赛的全高清视频。

每个视频的注释包括帧编号和该帧对应的目标:人工标注的比赛事件(球反弹击网,已经避免CNN过拟合的空事件)、球坐标分割mask

提供了5个不同比赛的视频用来训练,7个其他比赛的短视频用来测试。如下图所示:

数据集的下载链接:https://lab.osai.ai/datasets/openttgames/​lab.osai.ai

【TTNet】

TTNet的架构如上图所示。网络的输入是来自120fps采样视频的9个连续帧组成的stack,输出比赛中各个事件的概率、球桌的mask、人的mask、记分板的mask、球的位置。

第一个Ball detection的global stage因为用的是下采样过的输入检测的,所以位置不太准,因此要做第二个local stage,网络跟global stage的时候一样,但是输入是原始图像中围绕global stage检测的位置裁剪出来的。

这个网络咋一看设计的不错,但好像感觉有点不太深,设计的有点简陋,但这是因为作者他们要做实时,所以特地弄得比较浅的网络,按照作者的说法,这个能在2080Ti单卡上,推理时间在6ms内,计算量只有5.9GFLOPs。

球检测

这里作者假设了一下,场景中只有一个真的球,但可以有其他类似的小的白色圆形物体。同时考虑到球速较快,以及拍到的图像肯定是模糊的,因此要用视频帧stack来输入而不是单个帧。(这里我有个想法,能否简单的认为,能落到球桌上的球才是目标球,后面只追踪这个球呢,这样是否可以放宽球数量的限制?)

球最终的定位坐标以输入的帧stack的最后一帧为参考,并且输出的不是直接的坐标,而是两个表示长宽位置的一维向量,ground true是高斯分布曲线,曲线均值是球的x、y坐标,方差是与平均球半径相关的合理值,如下图所示:

球检测分两个stage,第一个stage是视频帧缩小到320×128做的,为的是快速定位,这里paper还将就了一下,说选用这个比例是为了保证球的直径至少是2个像素。第二个stage是在第一个stage检测出来的位置处,从原始视频帧crop一个320×128的区域出来。这两个stage的网络架构相同,最终的球坐标由两个stage的结果共同贡献,训练时用交叉熵loss。

这两个架构中的特征提取器,基于整个图像产生的特征用于后面的语义分割,基于裁剪图像产生的特征用于后面的事件检测。

事件检测

按照乒乓球的规则,与比分变动有关的事件只有发球、球弹跳、打网这三个。由于网络的输入是一个9帧组成的序列,时间跨度小于0.1秒,所以TTNet只能用来检测球弹跳跟打网这两个比较快的事件,发球这种需要加长序列,可以用其他的网络做,TTNet就不做了。

这个事件检测分支输入是全局检测器和局部检测器合并的特征图,有助于在BP的时候一起优化这两个特征提取器。值得注意的是,最后一个激活曾(Sigmoid)是允许这两个事件同时发生的,所以这是个多标签分类任务。同时由于球速快,可能没有准确的一帧能确定事件,因此label还要再smoothing一下。

考虑到类别不平衡问题,这个分支用反弹:打网=1:3的权重来加权交叉熵做训练。

当然这里还有一些没有事件的负样本,这里就不细说了。

语义分割

这个没什么特别的,主要就是用了LinkNet里面的一些方法,用了skip connection来保持空间分辨率,将encoder的三个最小尺度的特征旁路到对应尺度decoder以元素形式加起来。

这里同样需要注意,考虑到不同类别的语义mask可能会重叠,所以最后一个激活层用的是Sigmoid。这里的loss比较奇怪:

最终的多任务loss函数用的是每个任务的homoscedastic uncertainty(同方差不确定性)来做的。

模型效果

【后话】

这个工作还是很有意思的,但同样这个工作比较的原始,可改进的点很多,比如是否能够加入人体姿势识别,实时识别出球员的挥拍姿势进行辅助较正?是否可以考虑加入球拍识别和球轨迹识别进行球旋转的判断?是否可以考虑加入光流跟踪球确定当前击打球等?可做的工作还是有很多的,不过这些一作,就没法实时了。还是得看需求。

助力运动:实时乒乓球视频分析相关推荐

  1. AI视频分析技术是如何工作的?原理是什么?

    什么是实时 AI 视频分析技术? 实时 AI 视频分析是一种基于人工智能的技术,可分析视频流以检测特定行为和事件的展开.这种类型的系统通过人工智能机器学习引擎检查来自监控摄像头的视频流来进行相关工作. ...

  2. AI+视频分析:实时监测无处不在的安全风险

    来源丨Forbes 作者丨Louis Columbus 编译丨科技行者 纵观2020年运营层面的诸多挑战,公共事业企业已经意识到对其所运营的物理及网络安全体系进行360度全方位审视的重要意义.最近,由 ...

  3. NVIDIA DeepStream 5.0构建智能视频分析应用程序

    NVIDIA DeepStream 5.0构建智能视频分析应用程序 无论是要平衡产品分配和优化流量的仓库,工厂流水线检查还是医院管理,要确保员工和护理人员在照顾病人的同时使用个人保护设备(PPE),就 ...

  4. DeepStream: 新一代智能城市视频分析

    在Jetson TX2上试用TensorRT https://jkjung-avt.github.io/tensorrt-cats-dogs/ NVIDIA提供了一个名为TensorRT的高性能深度学 ...

  5. am335x linux内核烧写_实时 Linux 抖动分析 Step by step

    本文首次发表于 实时 Linux 抖动分析 Step by step 前段时间有同学问到: 大家有显卡方面实时性调优经验交流吗?我现在是 x86,不加显示任务实时性可以保持在 20us 内,如果加上显 ...

  6. Google又发大招:高效实时实现视频目标检测

    首发于极市平台微信号:Google又发大招:高效实时实现视频目标检测 作者:陈泰红 如有兴趣可以**点击加入极市CV专业微信群**,获取更多高质量干货 图像目标检测是图像处理领域的基础.自从2012年 ...

  7. 网易云信亮相LiveVideoStackCon 2019,分享BBR在实时音视频领域的应用

    8月23日,LiveVideoStackCon音视频技术大会在北京隆重举办.本届会议以"多媒体技术赋能新世界"为主题,聚焦音频.视频.图像.AI等技术的最新探索与应用实践.大会汇集 ...

  8. 【专场福利Part2】从多维度出发 保障提升实时音视频质量

    10月30日 | 北京 LiveVideoStack将携手七牛云共邀4位技术大咖,围绕着实时音视频场景下,七牛云如何从多个维度实现保障和提升音画质量,分享针对保障和提升音视频质量从编解码到网络传输,从 ...

  9. 解密华为云原生媒体网络如何保障实时音视频服务质量

    随着5G和AI的发展,内容表达视频化成为了当今的主流,很多行业对视频分发有非常旺盛的需求.我们非常荣幸地请到了华为云的资深视频架构师黄挺,为大家介绍基于互联网的实时音视频服务所面临的挑战,分享华为云原 ...

  10. 实时音视频技术的演进与应用

    本次分享我们邀请到了来自腾讯云实时音视频TRTC后台的研发负责人薛笛,他向我们分享了腾讯云TRTC在架构升级和产品实践中的经验.仔细讲解了混音引擎最初的制造源.在整个优化过程中发现的问题以及解决方法, ...

最新文章

  1. 【乱】乱,乱,乱,android真乱!
  2. RuntimeError: An attempt has been made to start a new process before the current pr
  3. 转)使用C/C++扩展Python
  4. java url utf 8_java中文乱码解决之道(八)—–解决URL中文乱码问题
  5. php实现我的购物以及订单,实现简单的php购物车代码
  6. Dsoframer注册方法
  7. 理解图像中基本概念:色调、色相、饱和度、对比度、亮度
  8. 电子科大考研经验分享
  9. div html 下边加横线_css字体下边横线 html超链接更改颜色和去掉下划线
  10. 163个人邮箱如何注册申请?vip邮箱有哪些优点?
  11. 【STM32】标准库-以太网外设-LAN8720A-LWIP-无操作系统
  12. 数据库编程:存储过程和储存函数
  13. 阴影(shadow mapping)(硬阴影)
  14. DHCP OPTION 82的原理
  15. 将多个npz文件合成成一个由list形式保存的npz文件
  16. TI杯2019年全国电子设计大赛总结
  17. 正态分布(高斯分布)介绍
  18. POSEIDON: A New Hash Function for Zero-Knowledge Proof Systems 学习笔记
  19. 数据可视化(一):解构数据可视化——学习笔记
  20. 这些诗词你知道一句,却不知全诗!

热门文章

  1. 你必须掌握的人生定律
  2. 小度加速破圈,智能音箱告别肉搏战
  3. 内网IP使用Https小记
  4. 十年前与十年后的我们,流着泪看完的经典语录!
  5. MySQL–ROW_NUMBER
  6. html的九宫格构图教学视频,构图的基本技巧之九宫格构图
  7. 亚马逊速卖通tro律所禁令冻结资金的解决方法
  8. 1-selenium-安装及模拟谷歌邮箱登录
  9. 计算机硬盘图标怎么更改,电脑磁盘图标的修改
  10. 华为社招嵌入式软件面试_华为社招面试流程分享