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 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Lane-ATT:论文阅读 -> 正文阅读

[人工智能]Lane-ATT:论文阅读

0. 前言

读一遍论文,认识一所大学,一家机构,让我们知道,世界很大,你不是一个人在研究某个领域。今天我们看到的是Universidade Federal do Esp′?rito Santo (UFES)的成果,圣埃斯皮里托联邦大学,位于巴西东南部。好的,以后有机会去巴西,一定去这所大学门口拍照留念一下。

1. 论文摘要

其实是继LaneCNN之后,以anchor_based为核心的车道线检测方法,作者一直在强调global information对于车道线检测的影响,确实,如果基于这种思想的话,anchor其实本身就是对global information的提取或者说先验知识,车道线问题视为对anchor的回归问题,的确很有道理。

2. 网络构成

下图即为lane_ATT网络构成,先不用急的看网络,我们先理一下输入输出。
在这里插入图片描述

2.1 Lane的表示

本质上,车道线就是图中一些点集,回归的本质就是找到每一行上最符合这条车道线的点的位置,最简单的方法就是去遍历每一行,在这里,我们把图像的左下角为坐标原点,向上为Y轴正方向,向右为X轴正方向。一般来说,为了减少计算量,我们一般会采用等间距采样的方法,其实拟合一条三次方程的车道线至少需要4个点,所以我们只需要大于4个点的采样即可。Npts就是我们要采样的个数。
在这里插入图片描述
这样我们相当于固定了Y轴,那么车道线只需要一个X轴上的数组就可以表示
在这里插入图片描述
我们得到了一套(x,y)坐标,可以与我们提出anchor进行回归,最简单的回归可以求pred和label的二范数。这里其实要比较慎重处理一下,是否除以点数进行归一化再反传这部分误差,后续再看一下。

2.2 Anchor的表示

Anchor其实类比目标检测,就是我们提出的标准的先验的车道线,最简单的anchor是一条直线,只需要一个起点和一个角度就可以表达,作者也是这样来处理的
在这里插入图片描述
δback 是 backbone’s global stride,我理解其实anchor和lane的回归可能不是在原图大小的层级上,可能是1/4或者1/16大小,因为直接接的backbone的输出。但是我们x和y是原图level的,所以需要转换到特征图层面,这样才能将anchor给投影到feature map。

2.3 Attention 机制

为什么要用Attention,作者觉得由于池化下采样导致的采集的特征是局部的,不能很好的预测车道线的位置和相关属性,需要加入全局信息来解决。
首先将anchor[i] 投影到特征图上得到了这个anchor的局部特征 ailoc,我们需要通过一定的关系来求解这个anchor的全局特征 aiglob。现在问题到了如何求全局特征,作者的方法很简单,他讲这个anchor和其他任意的anchor通过全连接层加softmax,会获得一个概率,每一个anchor的投影特征和对应概率相乘,再SUM,得到了ailoc对应的全局的 aiglob。看一下这部分的代码

batch_features = self.backbone(x)['out']

这个是resnet34的主干,主干输出是8 * 512 * 12 * 20的feature map

 batch_features = self.conv1(batch_features)

然后经过1 * 1的conv进行降channel处理,输出是8 * 64 * 12 * 20的feature map

 batch_anchor_features = self.cut_anchor_features(batch_features)

这一步其实就是将预先设定好的anchor投影到feature map中,我们看一下作者提供的batch_anchor_features的维度信息,这是一个5维的信息,相比之前的特征图多了一个n_proposals,这个其实就是预先设置好的anchor数量,作者预留了1000条,n_fmaps是之前的channel,仍然是64。 featmap_h实际上是通过img_h // self.stride算出来的,360//32向下取整为11,代表1条车道线用11个点来量化。由于y轴上采样点固定的,所以描述一个点只需要一个维度就够了,因此最后一个维度为1。
cut_anchor_features这部分其实还涉及compute_anchor_cut_indices来获得x(w方向),y(h方向),z(channel方向)的index取值,作者通过这种方式,将1000个anchor下64channel 11个Width值同时访问操作,访问的对象就是batch_anchor_features,大大提高了处理速度。这里面涉及了很多数据维度的处理以及将不同维度信息保存在三个704 * 1000的数组里,分别存了三个方向的index,方便后期一次性对数据进行访问处理。

batch_anchor_features = torch.zeros((batch_size, n_proposals, n_fmaps, self.featmap_h, 1),
                                            device=features.device)

然后作者又奖channel和h方向进行合并,也就是将一个anchor的所有信息压缩到一起。batch_anchor_features此时已经是8000 * 704,8000是batch和n_proposals压缩了,704是channel和h压缩了。一个anchor的ailoc其实就是704长度的tensor。

batch_anchor_features = batch_anchor_features.view(-1, self.anchor_feat_channels * self.featmap_h)

通过attention layer, 又得到了scores,维度为8000 * 999,它代表的是任意一anchor和其他所有的anchor的关系,再通过softmax就可以得到attention,维度为81000999

scores = self.attention_layer(batch_anchor_features)
attention = softmax(scores).reshape(x.shape[0], len(self.anchors), -1)

attention里面是一个anchor和其他anchor的权重,但是由于没有和自己的权重,导致维度上很难计算,所以作者用了attention_matrix 维度为8 * 1000 * 1000。

batch_anchor_features = batch_anchor_features.reshape(x.shape[0], len(self.anchors), -1)
attention_features = torch.bmm(torch.transpose(batch_anchor_features, 1, 2),
                                       torch.transpose(attention_matrix, 1, 2)).transpose(1, 2)

batch_anchor_features之前是8000 * 704,现在重新将维度变为8 * 1000 * 704,通过bmm矩阵乘法的方法,最后我们获得的attention_features为8 * 1000 * 704。
此时,将attention_features其实是任何一个anchor都已经与其他anchor进行了一次交互,包含了全局的信息。将attention_features和batch_anchor_features进行向量cat拼接就可以得到最终的特征
在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-06-26 16:54:39  更:2022-06-26 16:56:27 
 
开发: 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/26 2:42:22-

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