od体育App分析视频很慢怎么办?分辨率、帧率和手机性能怎么影响AI 示意图
原创示意图,用于说明分析思路,非实拍画面

动作识别不是把视频“播放”一遍。它要对每一帧(或按策略抽出的帧)做人体姿态估计,篮球、网球、羽毛球还要检测和追踪球、球拍,之后再做时间序列分析。所以慢的原因可以出现在很多层。下面按“先易后难”的顺序,一层层排查。

为了知道时间花在哪里,可以把一次分析大致拆成四段:视频解码(把压缩视频还原成一帧帧图像)、预处理(缩放、裁剪出人物区域)、模型推理(姿态估计、球与器材的检测追踪)、后处理(关键点平滑、生成时间序列和报告)。其中推理通常最耗算力,解码在高分辨率、高帧率视频上也不轻,后处理一般较快。看清这一点,后面每一层的排查才有的放矢。

第一层:先算一算,这段视频到底有多少帧

最容易被忽略的是视频本身的体量。处理量大致正比于总帧数,而总帧数等于时长乘以帧率。

模拟示例说明:下面的数字只用于说明帧数的算术关系,不代表真实设备的处理速度,也不是od体育App的实际参数。
拍摄方式(模拟示例)时长 总帧数
30帧每秒,普通拍摄10秒300帧
120帧每秒,慢动作 10秒 1200帧
240帧每秒,慢动作 10秒 2400帧
30帧每秒,整段训练不裁剪5分钟 9000帧

同样是“一段视频”,帧数可以差出一个数量级。如果一次挥杆只有两秒,却拍了五分钟连续训练,模型要处理的绝大部分帧里其实没有动作。这是最常见、也最容易修复的慢因:先把视频剪到动作前后各留一两秒。

第二层:分辨率和帧率,选“够用”而不是“最高”

手机相机里往往有“4K、1080p、720p”和“30、60、120、240帧”的多种组合。公开资料中,不少手机的高帧率慢动作通常在1080p下提供,更高的帧率有时会以更低的分辨率为代价,具体因机型而异。

对AI分析来说,两个量的作用不同:

  • 分辨率决定单帧里人物和器材是否看得清。但多数姿态模型的输入图像会被缩放到固定的较小尺寸再送进网络,4K和1080p在模型看来差别没有想象中大,代价却是解码更慢、文件更大、上传更久。
  • 帧率决定快动作被采样了多少次。羽毛球杀球、高尔夫下杆这类瞬间,帧率不足会让关键姿态缺失,帧率高了则处理量线性增长。

od体育App的设计取向是让不同项目采用不同的拍摄建议:篮球战术看的是较长时间尺度上的位置变化,通常不需要超高帧率;高尔夫和羽毛球更需要高帧率。所以“开到最高”不是好办法,建议按项目选择。羽毛球的帧率难题可以进一步阅读《羽毛球飞得太快,普通手机视频还能分析吗?od体育AI面对的帧率难题》。

第三层:手机本身的性能,在于芯片、内存和硬件加速

端侧推理主要吃三类资源:CPU、GPU或专用的NPU、内存。公开资料中,主流的端侧姿态方案会提供CPU与GPU等不同的运行路径,同一个模型在不同芯片上速度可能差很多,而且硬件加速路径也存在设备和驱动差异,个别情况下还会出现兼容问题。这意味着:

  • 同样的视频,旧手机慢并不意外,因为加速单元少、内存带宽低。
  • 可用内存不足时,系统会频繁回收后台,分析任务被打断或降速。
  • 存储空间几乎满了,视频解码和中间结果写入也会变慢。

检查方法很朴素:看手机剩余存储是否充足,关闭不用的应用,重启一次释放内存。至于旧手机到底能不能胜任,以及CPU、GPU、NPU分别扮演什么角色,见《旧手机能不能运行od体育AI?动作识别真正吃的是CPU、GPU还是NPU》。

第四层:越算越慢,可能是发热降频

一个典型现象是:第一段视频分析得很快,连续分析第二、第三段就明显变慢,机身发烫。这通常是热管理在起作用。公开的Android文档提到,在没有持续性能模式的情况下,设备可能一开始高帧率运行,长时间负载后因为发热而降频;系统同时提供热状态接口,应用可以据此主动降低负载。苹果的开发文档则把系统热状态分成正常、轻度、严重、危急几档,并建议在严重及以上时减少CPU、GPU和读写的工作量。

用户能做的事情:

  1. 连续分析之间留几分钟,让手机散热,不要一边充电一边分析。
  2. 摘下保护壳,避免在阳光直射或高温车内使用。
  3. 分批处理,一次只分析一个训练片段,而不是把整个下午的录像一起丢进去。

发热降频是物理限制,App能做的是降低处理量或者放慢节奏,用户很难靠设置绕开。若发现总是一到某个进度就慢下来,很可能就是这个原因。

第五层:后台处理、网络和排队

还有两种“看起来是慢,其实是等”的情形。

后台被系统限制。很多手机在切到后台之后,会限制应用的CPU时间。如果你在分析途中切去别的应用,分析可能被暂停或放慢。建议分析时保持App在前台并且屏幕常亮,等待完成之后再切走。

需要上传时,等的是网络。如果某类分析需要把视频上传,进度条会先卡在上传阶段。这与手机算力无关,要查的是网络与视频体积,详见《od体育App视频上传失败怎么办?格式、文件大小和网络问题逐层检查》。

自己做一次对照测试,比猜原因更快

不确定慢在哪一层,可以做一个小实验:同一个动作,各拍一段10秒以内的视频,一段用1080p、30帧,一段用1080p、较高帧率;先在手机凉的时候分析一次,记下用时;再连续分析几次,对比后面几次是否明显变慢。前两段的差异说明是帧数问题,后面几次的差异说明是发热问题。这个测试只需要十分钟,也不需要任何专业工具,得到的结论比“可能是手机旧了”可靠得多。

什么时候该改设置,什么时候该接受限制

综合起来,可以用下面的顺序判断:

  • 先裁剪时长,几乎没有代价。
  • 再把分辨率降到1080p或更低,帧率按项目需要选,不必最高。
  • 清理存储,关闭后台,避免边充电边分析。
  • 做完前三步仍然很慢,而且同一段视频在这台手机上稳定地慢,多半是硬件上限。此时可以换一台手机分析,或者把拍摄参数调低,拿一个“够用但不完美”的结果。

还需要提醒:降低分辨率和帧率会带来精度代价。比如高尔夫下杆的杆头,在低帧率下可能真的丢帧,这不是App慢,而是信息已经没有了。所以对精度要求高的动作,宁可少拍一些、剪短一些,也不要把帧率降到失真。拍摄本身的问题,比如机位和距离,则可以先回头看《od体育App拍篮球和拍高尔夫为什么机位完全不同?》,好的机位能让模型更稳,也就少一些重复重算的可能。

如果你想知道这个分析在项目层面到底做了什么,可以回到《第一次使用od体育App,为什么系统要先问你练什么项目?》,那里解释了不同项目启用的模型为什么处理量不同。