字幕组双语原文:通过视频着色进行自监督跟踪
英语原文:Self-Supervised Tracking via Video Colorization
翻译:雷锋字幕组(李珺毅)
在本文中,我们将学习一种新颖的自监督目标跟踪方法。自我监督是模型自我学习的一种方法 ?,这本身就使得这个话题非常有趣。在这里,我们将看到如何学会自己跟踪对象。我们将从基本的目标跟踪开始,然后讨论什么是计算机视觉的自我监督学习,最后详细讨论这种方法。
此方法的实现可以在这里找到。
目标跟踪简介
用简单的语言描述它,可以理解为识别整个视频序列中唯一的对象。要跟踪的对象通常被称为目标对象。跟踪可以通过边界框或实例分割来完成。有两种类型的公共对象跟踪挑战。
单目标跟踪:在整个视频序列中跟踪感兴趣的目标。如VOT挑战。
多目标跟踪:在整个视频序列中跟踪多个感兴趣的目标,例如 MOT 挑战。
研究趋势
一些著名经典的用于解决目标跟踪CV算法的是 :
Mean shift
Optical flow
Kalman filters
SORT是最著名的多目标跟踪算法之一,它以卡尔曼滤波器为核心,并且非常成功。
随着深度学习时代的到来,非常创新的研究进入了该研究领域,并且深度学习方法成功地胜过了传统的CV方法来应对公共跟踪挑战。 尽管在公共挑战方面取得了巨大成功,但深度学习仍在努力为现实世界中的问题陈述提供通用的解决方案。
深度模型的挑战
在训练深度CNN模型时,我们面临的主要挑战之一是训练数据。
训练数据:深度学习方法需要大量数据,而这几乎每次都成为瓶颈。此外,像多目标跟踪这样的任务很难注释,而且这个过程变得不切实际,而且代价昂贵。
深度模型数据永远不嫌多
用自监督学习来拯救
我们都知道监督和非监督学习技术。这是一种被称为自监督学习的新型学习方式。在这些类型的学习中,我们试着利用数据中已经存在的信息,而不是任何外部标签,或者有时我们说模型是自己学习的。 在现实中,我们所做的是训练CNN模型去完成一些其他的任务,这些任务间接地帮助我们实现目标,这个模型自我监督。这些任务称为”代理任务”或“借口任务”。
代理任务的几个例子是:
颜色化
CNN模型学习从灰度图像预测颜色。[资源链接]
将图像补丁放在正确的位置
从图像中提取补丁并将其打乱。模型学习如何解开拼图并按照正确 的顺序排列,如图3所示。[资源链接]
按正确的顺序放置视频帧
该模型学习在视频序列中对打乱的帧进行排序。[资源链接]
许多这样的任务可以用作计算机视觉问题的代理任务。此类训练的一个主要好处是,训练不需要手动注释数据,并且适合解决现实生活中的用例。
通过视频着色进行自监督跟踪
我们已经了解了什么是自监督模型,您一定已经猜到了我们将使用着色作为代理任务的名称。
简介
着色是代理任务或借口任务,目标跟踪是主要任务或下游任务。采用大规模的无标记视频对模型进行训练,不需要人工进行任何单一像素的标注。该模型利用视频的时间相干性对灰度视频进行着色。这看起来可能有点混乱,但我会慢慢给大家讲明白。
模型将如何学习跟踪
我们将取两个帧,一个目标帧(时刻t),一个参考帧(时刻t-1),并通过模型。该模型期望通过对参考帧颜色的先验知识来预测目标帧的颜色。通过这种方式,模型内部学会了指向正确的区域,以便从参考框架复制颜色,如图所示。这种指向机制可以用作推理期间的跟踪机制,我们将很快看到如何做到这一点。
模型接收一个彩色帧和一个灰度视频作为输入,并预测下一帧的颜色。模型学会从参考系复制颜色,这使得跟踪机制可以在没有人类监督的情况下学习。[资源链接]
我们不复制网络中的颜色,而是训练我们的CNN网络学习目标帧的像素与参考帧的像素之间的相似度(相似度在灰度像素之间),然后线性组合时使用此相似度矩阵参考帧中的真实颜色会给出预测的颜色。从数学上讲,令Cᵢ为参考帧中每个像素i的真实颜色,而Cⱼ为目标帧中每个像素j的真实颜色。 该模型给出了目标框架和参考框架之间的相似度矩阵Aᵢⱼ。 我们可以通过线性组合获得预测的颜色yᵢ。
公式1:预测颜色与参考颜色的线性组合
如何计算相似度矩阵
无论是图像、参考帧还是目标帧都经过模型学习后对每个像素进行了低层次的嵌入,这里fᵢ是像素i在参考帧中的嵌入,类似地,f是像素j在目标帧中的嵌入。然后,计算相似度矩阵:
公式2:用softmax归一化的内积相似度。
相似度矩阵中的每一行代表参考帧的所有像素i和目标帧的像素j之间的相似性,因此为了使总权重为1,我们对每一行应用softmax。
Lets look an example with dimension to make it clear,we try to find a similarity matrix of 1 pixel from target frame. An illustration of this example is shown below.Consider reference image and target image, size (5, 5) => (25,1)for each pixel, cnn gives embedding of size (64, 1) , embedding for reference frame, size (64, 25) , embedding for target frame, size (64, 25) , embedding for 3rd pixel in target frame, size (64, 1)Similarity Matrix, between reference frame and target pixel, j=2 =softmax , size (25, 64) (64, 1) => (25,1) => (5, 5) we get a similarity between all the ref pixels and a target pixel at j=2.Colorization, To copy the color (here, colours are not RGB but quantized colour of with 1 channel) from reference frame, , Colors of reference frame size (5, 5) => (25, 1) , Similarity matrix, size (5, 5) => (1, 25)Predicted color at j=2, , size (1, 25) (25, 1) => (1, 1)From the similarity matrix in below figure, we can see reference color at i=1 is dominant(0.46), thus we have a color copied for target, j=2 from reference, i=1PS:1. ᵀ denotes transpose2. matrix indices starts from 0 |
(a)为2帧大小(5,5),(b)为参考帧嵌入与目标像素在j =2处嵌入的内积,(c) softmax后的相似度矩阵,(d)相似度矩阵与参考帧真颜色的线性组合[资源链接]
类似地,对于目标帧中的每个目标像素((5,5)=> 25个像素),我们将具有大小为(5,5)的相似度矩阵,即大小为(5,5,25)的完整相似度矩阵Aᵢⱼ =(25,25)。
在实现中,我们将使用(256 x 256)图像扩展相同的概念。
图像量化
第一行显示原始帧,第二行显示来自实验室空间的ab颜色通道。第三行将颜色空间量化到离散的容器中,并打乱颜色,使效果更加明显。[资源链接]
颜色的空间频率较低,因此我们可以处理低分辨率的帧。 我们不需要C(255,3)颜色组合,因此我们创建16个聚类并将颜色空间量化为这些聚类。 现在,我们只有16种独特的颜色簇(请参见上图的第三列)。聚类使用k均值完成。 16个群集将丢失一些颜色信息,但足以识别对象。 我们可以增加聚类的数量来提高着色的精度,但要以增加计算为代价。
为了将图像量化为簇,我们将使用LAB颜色空间而不是RGB颜色空间的AB通道。 上图显示了RGB和LAB通道间的相关性,我们可以从图中得出结论:
RGB往往比LAB具有更多的相关性。
LAB将迫使模型学习不变性,它将迫使其学习更强大的表示形式,而不是依赖于本地颜色信息。
可以使用sklearn的KMeans软件包进行聚类。
这类将用于制作颜色的簇,我们将把它存储为一个pickle。
实现
注意:我使用pytorch来实现,它遵循(N,C,H,W)格式。 处理矩阵重塑时,请记住这一点。 如果您对形状有任何疑问,请随时与我们联系。
该模型学习从参考帧为视频帧着色。 [资源链接]
输入
该模型的输入是四个灰度视频帧,其下采样为256×256。三个参考帧和一个目标帧。
预处理
首先,我们将所有培训视频减少到6fps。 然后预处理框架以创建两个不同的集合。 一种用于CNN模型,另一种用于着色任务。
- Video fps is reduced to 6 fpsSET 1 - for CNN Model- Down sampled to 256 x 256- Normalise to have intensities between [-1, 1]SET 2 - for Colourization- Convert to LAB colour space- Downsample to 32 x 32- Quantize in 16 clusters using k-means- Create one-hot vector corresponding to the nearest cluster centroid |
模型结构
使用的主干是ResNet-18,因此结果与其他方法相当。ResNet-18的最后一层被更新为尺寸输出为32 x 32 x 256 然后将ResNet-18的输出传递到3D转换网络中,最终输出为32 x 32 x64。(下面的代码块显示了从ResNet-18网络获取输入的3D网络)
训练
训练可以分为以下三个步骤:
1.网络传递
我们将使用SET 1的预处理帧,即通过网络传递大小为(256 x 256)的4个灰度帧,以获得具有64个通道的(32 x 32)空间图。 对于(32 x 32)图像的每个像素,这可以解释为64维嵌入。 因此,我们有四个这样的像素级嵌入,三个用于参考图像,一个用于目标图像 。
2. 相似度矩阵
通过这五个嵌入,我们在参考帧和目标帧之间找到了一个相似矩阵。 对于目标帧中的像素,我们将获得一个相似度值,其中所有三个参考帧中的所有像素均通过softmax归一化为1。
3.色处理
我们将使用SET 2的预处理帧,即将四个降采样为(32 x 32)并量化的帧用于着色。 将三个参考帧与相似度矩阵组合以获得预测的量化帧。 我们发现了具有预测颜色的交叉熵损失(请记住,我们将帧量化为16个簇,现在我们有16种类别。我们发现了这些颜色的多类别交叉熵损失。)
推理
跟踪预测的例子 [资源链接]
在学习了着色任务之后,我们有了一个可以为一对目标框架和参考框架计算相似度矩阵Aᵢⱼ的模型。 现在,对于跟踪的实际任务,我们利用模型在标签空间中为非参数的属性。我们只是简单地使用等式1进行传播,但是我们传播类别的分布而不是传播颜色。对于第一帧,我们具有真实框掩码,我们将所有实例掩码布置为一独热矢量cᵢ(这类似于训练期间使用的量化颜色的一独热矢量)。将cᵢ与我们的相似性矩阵A相结合,以找到掩码的新位置,但请记住,随后几帧中的cⱼ预测将变得很柔和,表明模型的置信度。 要做出艰难的决定,我们可以简单地选择最自信的类别。 推理算法为:
WHILE (target frame, reference frames) in the videostep 1. Pass the target and reference frames through CNN modelstep 2. Find Similarity Matrixstep 3. Take ground truth object masks as one-hot encodingstep 4. Linear combine the object masks with similarity matrixstep 5. Update ground truth object masks by predicted masks |
失效模式
让我们讨论一下,在某些情况下模型何时倾向于失败(大多数情况下是着色失败),这意味着着色与跟踪具有高度的相关性。
在以下情况下会发现一些故障:
当光线在视频中剧烈或频繁变化时 。
该方法成功地跟踪了小到中等遮挡情况下的目标,但在大遮挡情况下仍然无法跟踪目标。
物体大小的突然变化 。
结论
在这里,我们看到了一个模型如何在没有任何手动注释数据的情况下学习自己的模型。我们学习了如何在一些代理任务上训练CNN模型,并利用这种学习来完成实际任务。我们使用着色作为代理,但这并不局限于此,各种新的方法正在出现作为新的代理任务。自我监督的方法是必要的,而且它们可以消除现实用例中昂贵的数据收集的主要约束。这种模式还不能击败当前的最顶尖的监督模型,但优于许多其他模式。
就其方法和灵活性而言,该方法前景一片大好,凭借其优势,自监督模型很快将成为解决机器学习问题的首选。 本文基于“ Google Research ”的研究成果, 我试图根据我的知识和理解来解释这项研究。
雷锋字幕组是一个由 AI 爱好者组成的翻译团队,汇聚五百多位志愿者的力量,分享最新的海外AI资讯,交流关于人工智能技术领域的行业变革与技术创新的见解。
团队成员有大数据专家、算法工程师、图像处理工程师、产品经理、产品运营、IT咨询人、在校师生;志愿者们来自IBM、AVL、Adobe、阿里、百度等知名企业,北大、清华、港大、中科院、南卡罗莱纳大学、早稻田大学等海内外高校研究所。
如果,你也是位热爱分享的AI爱好者。欢迎与雷锋字幕组一起,学习新知,分享成长。
雷锋网雷锋网(公众号:雷锋网)
雷锋网版权文章,未经授权禁止转载。详情见转载须知。