正文字数:4004  阅读时长:8分钟

在本文中,我们将学习一种新颖的自监督目标跟踪方法。自我监督是模型自我学习的一种方法,这本身就使得这个话题非常有趣。在这里,我们将看到如何学会自己跟踪对象。我们将从基本的目标跟踪开始,然后讨论什么是计算机视觉的自我监督学习,最后详细讨论这种方法。

Posted by Tushar Kolhe

url : https://towardsdatascience.com/self-supervised-tracking-via-video-colorization-7b2b066359d5

方法的实现可以访问链接了解:

https://github.com/hyperparameters/tracking_via_colorization

目标跟踪概述

简单地说,它可以理解为在整个视频序列中识别唯一的对象。要跟踪的对象通常称为目标对象,跟踪可以通过边界框或实例分割来完成,有两种类型的公共对象跟踪挑战。

1. 单目标跟踪:在整个视频序列中跟踪感兴趣的目标,例如VOT挑战

2. 多目标跟踪:在整个视频序列中跟踪多个感兴趣的目标。例如:MOT挑战

研究趋势

一些著名的经典的用于解决目标跟踪CV算法的是:

1. Mean shift

2. Optical flow

3. Kalman filters

其中最著名的一种多目标跟踪算法是SORT,是以卡尔曼滤波器为核心,并且非常成功的一种算法。

随着深度学习时代的到来,社会上出现了非常有创新性的研究并且深度学习方法成功地胜过了传统的CV方法来应对公共跟踪挑战。尽管在公共挑战方面取得了巨大成功但深度学习仍在努力为现实世界中的问题陈述提供通用的解决方案。

深度模型的挑战

在训练深度CNN模型时,我们面临的主要挑战之一是训练数据。

训练数据:深度学习方法需要大量的数据,这几乎每次都会成为一个瓶颈。此外,像多目标跟踪这样的任务很难注释,而且这个过程变得不切实际而且成本高昂。

深度模型数据永远不嫌多

用自监督学习来拯救

我们都知道有监督和非监督学习技术。这是一种被称为自监督学习的新型学习方式。在这些类型的学习中,我们试着利用数据中已经存在的信息,而不是任何外部标签,或者有时我们说模型是自己学习的。实际上,我们所做的就是训练CNN模型去完成一些其他的任务,间接地帮助我们实现我们的目标,这个模型自我监督。这些任务被称为“代理任务”或“借口任务”。

代理任务的示例如下:

  • 颜色化

CNN模型学习从灰度图像预测颜色。(来源:https://arxiv.org/abs/1603.08511)

  • 将图像补丁放在正确的位置

从图像中提取补丁并将其打乱。模型学习如何解开拼图并按照正确  的顺序排列,如图3所示。(来源:https://arxiv.org/abs/1603.09246)

  • 按正确的顺序放置视频帧

该模型学习在视频序列中对打乱的帧进行排序。[来源:https://arxiv.org/abs/1708.01246]

许多这样的任务可以用作计算机视觉问题的代理任务。这种训练的一个主要好处是训练不需要手动注释数据,并且适合解决生活中实际的用例。

通过视频着色进行自监督跟踪

我们已经看到了并了解了什么是自监督模型,您一定猜到了我们将使用着色作为我们的代理任务的名称。

通过给视频着色来实现跟踪

我们使用大量未标记视频学习模型的视觉跟踪无需人工监督。

arxiv.org(https://arxiv.org/abs/1806.09594)

简介

着色是代理任务或借口任务,目标跟踪是主要任务或下游任务。采用大规模的无标记视频对模型进行训练,不需要人工进行任何单一像素的标注。该模型利用视频的时间相干性对灰度视频进行着色。这看起来可能有点混乱,但我会慢慢给大家讲明白。

模型将如何学习跟踪

我们将取两个帧,一个目标帧(时刻t),一个参考帧(时刻t-1),并通过模型。该模型期望通过对参考帧颜色的先验知识来预测目标帧的颜色。通过这种方式,模型内部学会了指向正确的区域,以便从参考框架复制颜色,如图所示。这种指向机制可以用作推理期间的跟踪机制,我们将很快看到如何做到这一点。

模型接收一个彩色帧和一个灰度视频作为输入,并预测下一帧的颜色。模型学会从参考系复制颜色,这使得跟踪机制可以在没有人类监督的情况下学习。[来源:https://ai.googleblog.com/2018/06/self-supervised-tracking-via-video.html]

我们不复制网络中的颜色,而是训练我们的CNN网络学习目标帧的像素和参考帧的像素之间的相似度(相似度是灰度像素之间),然后线性组合时使用此相似度矩阵参考帧中的真实颜色会给出预测的颜色。从数学上讲,设Cᵢ为参考帧中每个像素i的真实颜色,Cⱼ为目标帧中每个像素j的真实颜色。

[资源链接:https://arxiv.org/abs/1806.09594]

公式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)相似度矩阵与参考帧真颜色的线性组合[来源:https://github.com/hyperparameters/tracking_via_colorization]

同样,对于目标帧中的每个目标像素((5,5)=> 25个像素),我们将会有一个相似矩阵的大小(5,5),即大小为(5,5,25)的完整相似度矩阵Aᵢⱼ =(25,25)。

在实现中,我们将使用(256 x 256)图像扩展相同的概念。

像量化

第一行显示原始帧,第二行显示来自实验室空间的ab颜色通道。第三行将颜色空间量化到离散的容器中,并打乱颜色,使效果更加明显。[来源:https://arxiv.org/abs/1806.09594]

颜色是空间频率偏低,所以我们可以处理低分辨率的帧。我们不需要C(255,3)颜色组合,所以我们创建了16个聚类并将颜色空间量化为这些聚类。现在我们只有16种独特的颜色簇(见上图第3栏)。聚类是用k-均值完成的。16个群集会有一些颜色信息的丢失,但足以识别物体。我们可以增加聚类的数目来提高着色的精度,但代价是增加计算量。

[来源:https://arxiv.org/abs/2002.07793]

为了将图像量化成簇,我们将使用LAB颜色空间的AB通道而不是RGB颜色空间通道。上面的图显示了RGB和LAB通道间的相关性,从图中我们可以得出结论

RGB往往比LAB更具相关性。

LAB将强制模型学习不变性,它将强制其学习更强大的表示形式,而不是依赖于本地颜色信息。

可以使用sklearn的KMeans软件包进行聚类。

这个类将用于制作颜色的簇,我们将把它存储为一个pickle。

实现

注意:我使用pytorch来进行实现,它遵循(N, C, H, W)格式。在处理矩阵重塑时要记住这一点。如果你对形状有任何疑问,请随时与我们联系。

该模型从参考帧中学习为视频帧着色。[来源:https://ai.googleblog.com/2018/06/self-supervised-tracking-via-video.html]

输入

该模型的输入是四个灰度视频帧,其下采样为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-Conv网络,最终输出为32 x 32 x 64。(下面的代码块显示了从ResNet-18网络获取输入的3D网络)

训练

训练可分为以下3个步骤:

1. 网络传递

我们将使用SET 1的预处理帧,即通过网络传递大小为(256 x 256)的4个灰度帧,以获得具有64个通道的(32 x 32)空间图。对于(32 x 32)图像的每个像素,这可以解释为64维嵌入。因此,我们有四个这样的像素级嵌入,三个用于参考图像,一个用于目标图像 。

2. 相似度矩阵

利用这五个嵌入,我们找到了参考帧和目标帧之间的相似矩阵。对于目标帧中的像素我们将获得一个相似度值,其中所有三个参考帧中的所有像素均通过softmax归一化为1。

3. Colourization着色处理

我们将使用SET 2的预处理帧,即将四个降采样为(32 x 32)并量化的帧用于着色。将三个参考帧与相似度矩阵相结合,得到预测的量化帧。我们发现了具有预测颜色的交叉熵损失,(记住,我们量化帧到16个聚类,现在我们有16个类别。我们发现在这些颜色上有多类交叉熵损失。

推理

  

跟踪预测的例子[来源:https://ai.googleblog.com/2018/06/self-supervised-tracking-via-video.html]

在学习了着色的任务后,我们有了一个模型,可以计算一对目标框架和参考框架的相似矩阵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
失效模式

让我们来讨论一下,当模型在某些场景中趋于失败时,这主要是着色失败的情况,这意味着着色与跟踪有很高的相关性。

在以下情况下会发现一些故障:

  • 当光线在视频中剧烈或频繁变化时

  • 该方法成功地跟踪了轻微到中等遮挡情况下的目标,但当物体受到严重遮挡时无法进行对目标的跟踪

  • 物体尺寸大小突然发生变化

LiveVideoStackCon 2020 北京

2020年10月31日-11月1日

点击【阅读原文】了解更多详细信息

通过视频着色进行自监督跟踪相关推荐

  1. MPASNET:用于视频场景中无监督深度人群分割的运动先验感知SIAMESE网络

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯.小白决心每天为大家 ...

  2. 深度学习将灰度图着色_通过深度学习为视频着色

    深度学习将灰度图着色 零本地设置/ DeOldify / Colab笔记本 (Zero Local Setup / DeOldify / Colab Notebook) "Haal Kais ...

  3. 视频目标检测与轨迹跟踪代码案例

    前言 通过阅读相关文献及测试,找到了一种基于多模板匹配的改进方法,可以对遥感视频卫星中的移动目标进行探测,并绘制其轨迹.根据实验结果发现,可以比较有效的对运动目标进行跟踪. 一.原理 核心思想比较简单 ...

  4. c语言如何框出视频或图像中的车辆,[转载]视频图像中的车辆检测跟踪和分类

    摘要:介绍了一种在固定的单摄像头拍摄的交通图像序列中检测.跟踪.分类车辆的方法.该方法大致可分为三部分:抽取背景图像和图像分割:基于针孔模型的摄像机定标,计算透视投影矩阵:利用区域特性进行匹配跟踪,建 ...

  5. 最新综述:视频数据的无监督域适应

    ©作者 | 许悦聪 单位 | 新加坡科技研究局 研究方向 | 视频迁移学习.领域自适应 深度学习随着大数据的不断产生在日常生活生产中发挥着愈来愈重要的作用.针对视频分析的深度学习方法更是随着各类大型数 ...

  6. 核心坚果计划互相监督跟踪平台 (New)

    2012年捷报: 全国大学生数学建模竞赛(CUMCM)2012年9月全国成绩正式公布,协会创始成员在校数学建模教练组三位数学老师的指导(刘晓春,赖邦城,赵欢)下取得骄人成绩: 醒目版本: 文字版本(便 ...

  7. 百度工程师漫谈视频理解

    作者 | FesianXu 导读 AI算法已经渗入到了我们生活的方方面面,无论是购物推荐,广告推送,搜索引擎还是多媒体影音娱乐,都有AI算法的影子.作为多媒体中重要的信息载体,视频的地位可以说是数一数 ...

  8. 无需标注数据集,自监督注意力机制就能搞定目标跟踪

    选自towardsdatascience 作者:Rishab Sharma 机器之心编译 编辑:陈萍.杜伟 深度学习的蓬勃发展得益于大规模有标注的数据驱动,有监督学习推动深度模型向着性能越来越高的方向 ...

  9. 分享 | 无监督视觉目标跟踪

    第一次在知乎写文章,想谈谈博士期间比较熟悉的视觉目标跟踪.过去每一年的这个时候都在忙碌的赶CVPR,今年突然闲下来,有点不适.工作之余,写点文章当作是怀念科研的时光.步入正题,谈谈最近在CVPR202 ...

最新文章

  1. 在Ubuntu 14.04 64bit下玩转Qvod快播Linux山寨版本
  2. 如何反转“轨道生成”?
  3. [转]npm生成的package.json文件中依赖项版本号前的波浪号(~)和插入符号(^)是啥意思?
  4. 万字长文!java读取json文件数据给对象
  5. 标识为普通SQL语法
  6. python枚举是什么意思,什么是枚举python
  7. 天涯明月刀7月5号服务器维护,天涯明月刀7月5日更新_天刀7月5日版本改动_3DM网游...
  8. escharts 柱状图 百分比_Echarts柱状图百分比显示
  9. 怎么彻底删除users下的文件夹_users中的那些文件可以删除。。。。。。。有哪些文件是不能删除呢?...
  10. html传参,css接受?What 弄啥嘞?
  11. 文件上传插件WebUploader的使用
  12. 怎么把PDF文件拆分开来?教你两种拆分方法
  13. 135编辑器html点击图片播放音乐,怎么用135编辑器排版 公众号怎么做点击切换图片...
  14. iOS上传图片方向不对处理
  15. 【系统集成项目管理】之项目质量管理
  16. 算法中的大O是什么意思
  17. XP系统封装-2011年
  18. isis 网络 level 2 iih_ngspice实例介绍2--直流扫描分析
  19. idea gradle一直卡在initializing gradle projects data终极解决
  20. 计算机多媒体理论知识,计算机多媒体技术论文

热门文章

  1. 第四章:系统困境之 在归因错误下拼命努力
  2. KDE Applications 19.04 发布,包含大量更新
  3. Spark:使用partitionColumn选项读取数据库原理
  4. 超详细 Spring Boot 知识清单
  5. Robotframework集成jenkins执行用例
  6. CSVN部署安装,实现web管理svn
  7. 编程语言分类及python所属类型
  8. openlayers 2 高亮显示元素以及通过属性查询高亮某一元素
  9. 【转载】我心目中最好的框架组合是
  10. CSS清浮动处理(Clear与BFC)