共计 2451 个字符,预计需要花费 7 分钟才能阅读完成。
摘要: 本文提出了一种基于 Transformer 的端到端的线段检测模型。采纳多尺度的 Encoder/Decoder 算法,能够失去比拟精确的线端点坐标。作者间接用预测的线段端点和 Ground truth 的端点的间隔作为指标函数,能够更好的对线段端点坐标进行回归。
本文分享自华为云社区《论文解读系列十七:基于 Transformer 的直线段检测》,作者:cver。
1 文章摘要
传统的形态学线段检测首先要对图像进行边缘检测,而后进行后处理失去线段的检测后果。个别的深度学习办法,首先要失去线段端点和线的热力求特色,而后进行交融解决失去线的检测后果。作者提出了一种新的基于 Transformer 的办法,无需进行边缘检测、也无需端点和线的热力求特色,端到端的间接失去线段的检测后果,也即线段的端点坐标。
线段检测属于指标检测的领域,本文提出的线段检测模型 LETR 是在 DETR(End-to-End Object Detection with Transformers) 的根底上的扩大,区别就是 Decoder 在最初预测和回归的时候,一个是回归的 box 的中心点、宽、高值,一个是回归的线的端点坐标。
因而,接下来首先介绍一下 DETR 是如何利用 Transformer 进行指标检测的。之后重点介绍一下 LETR 独有的一些内容。
2、如何利用 Transformer 进行指标检测(DETR)
图 1. DETR 模型构造
上图是 DETR 的模型构造。DETR 首先利用一个 CNN 的 backbone 提取图像的 features,编码之后输出 Transformer 模型失去 N 个预测的 box,而后利用 FFN 进行分类和坐标回归,这一部分和传统的指标检测相似,之后把 N 个预测的 box 和 M 个实在的 box 进行二分匹配(N>M,多出的为空类,即没有物体,坐标值间接设置为 0)。利用匹配后果和匹配的 loss 更新权重参数,失去最终的 box 的检测后果和类别。这里有几个关键点:
首先是图像特色的序列化和编码。
CNN-backbone 输入的特色的维度为 C HW,首先用 1 1 的 conv 进行降维,将 channel 从 C 压缩到 d,失去 d H W 的特色图。之后合并 H、W 两个维度,特色图的维度变为 d HW。序列化的特色图失落了原图的地位信息,因而须要再加上 position encoding 特色,失去最终序列化编码的特色。
而后是 Transformer 的 Decoder
指标检测的 Transformer 的 Decoder 是一次解决全副的 Decoder 输出,也即 object queries,和原始的 Transformer 从左到右一个一个输入略有不同。
另外一点 Decoder 的输出是随机初始化的,并且是能够训练更新的。
二分匹配
Transformer 的 Decoder 输入了 N 个 object proposal , 咱们并不知道它和实在的 Ground truth 的对应关系,因而须要经二分图匹配,采纳的是匈牙利算法,失去一个使的匹配 loss 最小的匹配。匹配 loss 如下:
失去最终匹配后,利用这个 loss 和分类 loss 更新参数。
3、LETR 模型构造
图 2. LETR 模型构造
Transformer 的构造次要包含 Encoder、Decoder 和 FFN。每个 Encoder 蕴含一个 self-attention 和 feed-forward 两个子层。Decoder 除了 self-attention 和 feed-forward 还蕴含 cross-attention。注意力机制:注意力机制和原始的 Transformer 相似,惟一的不同就是 Decoder 的 cross-attention,上文曾经做了介绍,就不再赘述。
Coarse-to-Fine 策略
从上图中能够看出 LETR 蕴含了两个 Transformer。作者称此为 a multi-scale Encoder/Decoder strategy,两个 Transformer 别离称之为 Coarse Encoder/Decoder,Fine Encoder/Decoder。也就是先用 CNN backbone 深层的小尺度的 feature map(ResNet 的 conv5,feature map 的尺寸为原图尺寸的 1 /32,通道数为 2048)训练一个 Transformer,即 Coarse Encoder/Decoder,失去粗粒度的线段的特色(训练的时候固定 Fine Encoder/Decoder,只更新 Coarse Encoder/Decoder 的参数)。而后把 Coarse Decoder 的输入作为 Fine Decoder 的输出,再训练一个 Transformer,即 Fine Encoder/Decoder。Fine Encoder 的输出是 CNN backbone 浅层的 feature map(ResNet 的 conv4,feature map 的尺寸为原图尺寸的 1 /16,通道数为 1024),比深层的 feature map 具备更大的维度,能够更好的利用图像的高分辨率信息。
注:CNN 的 backbone 深层和浅层的 feature map 特色都须要先通过 1 * 1 的卷积把通道数都降到 256 维,再作为 Transformer 的输出
二分匹配
和 DETR 一样,利用 fine Decoder 的 N 个输入进行分类和回归,失去 N 个线段的预测后果。然而咱们并不知道 N 个预测后果和 M 个实在的线段的对应关系,并且 N 还要大于 M。这个时候咱们就要进行二分匹配。所谓的二分匹配就是找到一个对应关系,使得匹配 loss 最小,因而咱们须要给出匹配的 loss,和下面 DERT 的表达式一样,只不过这一项略有不同,一个是 GIou 一个是线段的端点间隔。
4、模型测试后果
模型在 Wireframe 和 YorkUrban 数据集上达到了 state-of–the-arts。
图 3. 线段检测办法成果比照
图 4、线段检测办法在两种数据集上的性能指标比照(Table 1); 线段检测办法的 PR 曲线(Figure 6)
[ 点击关注,第一工夫理解华为云陈腐技术~](https://bbs.huaweicloud.com/b…