将 3 个连续视频帧输入 CNN 以跟踪网球

数据挖掘 美国有线电视新闻网 迁移学习 更快的rcnn 不同之处
2021-09-24 04:48:14

我想使用 CNN 迁移学习来跟踪网球比赛电视广播中的网球。我使用了 VGG 注释工具注释工具链接(使用该工具的版本 1 以与物质端口代码兼容)并且有大约 200 帧注释了球位置和由工具给出的边界圆的 x,y 坐标。

像这样:

网球视频帧上的 VGG 标注工具 但是,球有时会被底部球员的身体或网带挡住,而在其他时候几乎看不见,因为它移动得太快(其他时候,它的移动方向是椭圆形的)。

我看到使用的一个潜在解决方案是在一个名为 Tracknet 的算法中。Tracknet: Tracknet ball tr​​acking我联系了它的创建者,并被告知他们将开源,但已经一年多了,所以我想尝试模仿它。

编辑:我的 Q 和 A 通过电子邮件与 Tracknet 团队:

向 Tracknet 团队提问

不。

我们将总共 9 个切片的三个图像连接起来,然后将它们一起输入到一个网络中,但保持网络的其余部分相同。在这种方法中,计算开销只在第一层。

如果您想要像上一封电子邮件中的图一样的设计,我们建议您应用 RNN 或 LSTM 来跟踪球。

最好的,Tsi-Ui

“总共 9 个切片”...这是否意味着 3 个连续帧中的每一个都是 RGB?

另外,我从 Karpathy Pong 那里知道,如何输入不同的帧,但我如何像在 Tracknet 中那样输入 3 个连续的帧?

我知道手动浏览 2 帧是不够的,而且 3 帧似乎是至少需要一个可见网球的最低要求。

此外,pyimage 的 Adrian Rosebrock 建议我需要轨迹估计和高 FPS 相机,因此这是另一种研究途径,尽管 Tracknet 似乎没有这些功能。

编辑:我正在阅读关于 CNN 的深度学习书籍章节,以了解更多关于它们如何在低级别处理输入信息的信息,以便我可以弄清楚连接 9 个切片的含义。书籍章节: CNN 章节
就像一个想法,我正在考虑计算 t - (t-1), t - (t-2),...,t- (tn) 处的差异帧的集合,这可能有助于近似球的位置。

编辑:我刚刚看到 Andrew Ng 的这个视频,关于从 nn 输出实数以进行对象检测和定位: coursera 视频 所以,如果这是可能的,那么我可以输出 y =[x_0, y_0, x_1, y_1, x_2, y_2] ,它们是球中心在 t, t+1, t+2 和取 y-hat 和 y 之间的均方误差作为损失。注意:当输入网络时,我可能会有重叠的帧,即。喂[t, t+1, t+2] 然后喂[t+1, t+2, t+3] 有t+1, t+2的交点。同样对于球太模糊的帧,我将训练一个单独的 nn,它在 t_0 和 t+n 连接的球位置输入,并在 t_j 输出球位置,其中 j 有时介于 0 和 n 之间。使用这些输出来注释“不可见球”帧,然后使用这个“完整”的地面实况帧集作为主要的训练集,用于跟踪视频中的球。

2个回答

制作 Tracknet 的研究人员最终开源了他们的代码,并将在解决版权问题后立即使用数据集。

以下是链接:

Arxiv 论文: Tracknet Arxiv 论文

Tracknet 回购

如果链接损坏,请告诉我,我会将ziptar.gz自述文件一起上传到 Dropbox。

这是带有跟踪球的生成视频的链接。
美联储纳达尔演示

它并不完美,因此可能会将这种方法与其他论文中使用的 blob 检测、差异帧结合起来。还需要取出线路、播放器等背景不被检测到。

这是他们连接三个帧的代码片段predict_video.py

#combine three imgs to  (width , height, rgb*3)
X =  np.concatenate((img, img1, img2),axis=2)

你通常喂三个颜色层。所以添加额外的帧,比如颜色,这样你就有 9 个“颜色”帧用于图像。然后,神经网络将自动估计如何处理每个“颜色”层。