IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 目标跟踪中cross correlation的总结与实现 -> 正文阅读

[人工智能]目标跟踪中cross correlation的总结与实现

最近几篇目标跟踪文章都出现了对cross correlation方面的改进, 是因为发明新tracker的趋势已经过去了吗?其实我之前也思考过,一直直接拿来用的depth-wise correlation是否是最优的融合模板特征和搜索特征的操作,有没有或能不能找出比这个更有效的融合方式,但是一直停留在思考层面,但是就有好几篇工作都涉及到了这一点:
总共应该有以下几篇:

nameconferencepaper
naive correlationECCV2016WFully-Convolutional Siamese Networks for Object Tracking
depth-wise correlationCVPR2019SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks
pixel-wise correlationCVPR2021Alpha-Refine: Boosting Tracking Performance by Precise Bounding Box Estimation
pixel-to-global correlationECCV2020PG-Net: Pixel to Global Matching Network for Visual Tracking
saliency-associated correlationICCV2021Saliency-Associated Object Tracking
AutoMatchICCV2021Learn to Match: Automatic Matching Network Design for Visual Tracking

前两篇熟悉一点,后几篇没听说过一点,下面就其原理和实现分析一下:
在看下面之前,先放一个基础知识F.conv2d,看不懂的可以去这里看示意图:
官方的参数列表是这样的:

torch.nn.functional.conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1)

  • input – input tensor of shape (minibatch,in_channels,iH,iW)
  • weight – filters of shape(out_channels, i n _ c h a n n e l s g r o u p s \frac {in\_channels}{groups} groupsin_channels?,kH,kW)
  • output – output tensor of shape (minibatch,out_channels,oH,oW)

1、naive correlation

这个就出自最早的SiamFC啦,直接就是模板特征作为核去和搜索帧特征互相关,实现上就是一个卷积操作,示意图可看下面:
在这里插入图片描述
就是模板帧特征在搜索帧特征上滑动,逐通道之间互相作内积,最后输出的就是一个通道数为1的特征。
在这里插入图片描述代码实现:

def naive_xcorr(self, z, x):
        # naive cross correlation
        nz = z.size(0)
        nx, c, h, w = x.size()
        x = x.view(-1, nz * c, h, w)
        out = F.conv2d(x, z, groups=nz)
        out = out.view(nx, -1, out.size(-2), out.size(-1))
        return out

2、depth-wise correlation

这个就出自最早的SiamRPN++啦,思路上和naive correlation差不多,只不过一个是全部通道加和起来了,一个就是一个通道就输出一个通道,示意图可看下面:
在这里插入图片描述
在这里插入图片描述
代码实现:

def depthwise_xcorr(search, kernel):
    """depthwise cross correlation
    """
    batch = kernel.size(0)
    channel = kernel.size(1)
    search = search.view(1, batch * channel, search.size(2), search.size(3))
    kernel = kernel.reshape(batch * channel, 1, kernel.size(2), kernel.size(3))
    out = torch.nn.functional.conv2d(search, kernel, groups=batch * channel)
    out = out.view(batch, channel, out.size(2), out.size(3))
    return out

3、pixel-wise correlation

虽然Alpha-refine提到了这种correlation,其实采用的是Ranking Attention Network for Fast Video Object Segmentation这篇文章里的思想,因为两者最后都得预测mask,所以借鉴了一下。
在这里插入图片描述
就是让模板特征的HzWz个1x1xC特征与搜索帧特征进行卷积,最后的通道数是HzWz,大小因为核大小是1x1的,所以不会改变,就是Hx和Wx。这个甚至不需要用到卷积函数,直接tensor矩阵相乘就行。
在这里插入图片描述
代码实现:

def pixelwise_xcorr(kernel, search):
    b, c, h, w = search.shape
    ker = kernel.reshape(b, c, -1).transpose(1, 2)
    feat = search.reshape(b, c, -1)
    corr = torch.matmul(ker, feat)
    corr = corr.reshape(*corr.shape[:2], h, w)
    return corr

4、pixel-to-global correlation

这种相关方法在PG-Net: Pixel to Global Matching Network for Visual Tracking中提出来,目前还没有开源。但是还是比较简单能理解的,相当于经过了两次的pixel-wise correlation:
在这里插入图片描述
先让模板特征 Z f Z_{f} Zf?,维度为 h z ? w z ? c h_{z}*w_{z}*c hz??wz??c,分别从空间和通道两个方面来reshape成 n z = h z ? w z n_{z}=h_{z}*w_{z} nz?=hz??wz? 1 ? 1 ? c 1*1*c 1?1?c c c c 1 ? 1 ? n z 1*1*n_{z} 1?1?nz?的filter,然后搜索帧特征分别经过这两种filter,最后得到输出特征,具体shape如下变化:
在这里插入图片描述
可以自己实现一下:

def pg_xcorr(kernel, search):
    b, c, h, w = search.shape
    ker1 = kernel.reshape(b, c, -1)
    ker2 = ker1.transpose(1, 2)
    feat = search.reshape(b, c, -1)
    S1 = torch.matmul(ker2, feat)
    S2 = torch.matmul(ker1, S1)
    corr = S2.reshape(*S2.shape[:2], h, w)
    return corr

5、saliency-associated correlation

这种相关方法在ICCV2021 Saliency-Associated Object Tracking中提出来,目前还没有开源和复现。
在这里插入图片描述

6、AutoMatch

这种相关方法在ICCV2021 Learn to Match: Automatic Matching Network Design for Visual Tracking中提出来,目前还没有开源和复现。这里用到了NAS(Neural Architecture Search)的思路让网络自动选择6种相关方式中最优的进行,感觉是集大成者,做到头的感觉。
在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-28 09:00:22  更:2021-08-28 09:00:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 17:45:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码