相关文章推荐
活泼的海龟  ·  刘勇-教师系统·  7 月前    · 
活泼的海龟  ·  Blind ...·  7 月前    · 
活泼的海龟  ·  论文阅读“Deep Kernel ...·  7 月前    · 

Selective Kernel Networks
PDF: https://arxiv.org/pdf/1903.06586.pdf
PyTorch: https://github.com/implus/SKNet

SENet是对特征图的通道注意力机制的研究,之前的CBAM提到了对特征图空间注意力机制的研究。这里SKNet针对卷积核的注意力机制研究。

SKNet提出了一种机制,即卷积核的重要性,即不同的图像能够得到具有不同重要性的卷积核。

SKNet对不同图像使用的卷积核权重不同,即一种针对不同尺度的图像动态生成卷积核。

2 Selective Kernel Convolution

在这里插入图片描述
网络主要由Split、Fuse、Select三部分组成
Split: 对原特征图经过不同大小的卷积核部分进行卷积
文中分为了两个卷积,分别是 3∗3 和 5∗5 的卷积。且对于 5∗5的卷积,可以采用膨胀因子是 2 的 3∗3的空洞卷积;

Fuse: 计算每个卷积核权重的部分
a. 各个分支的特征进行元素间的相加
b.全局平均池化来获得提特征的全局信息
c. 生成一个压缩后的特征向量

Select: 根据不同权重卷积核计算后得到的新的特征图

PyTorch实现:

class SKConv(nn.Module):
    def __init__(self, features, WH, M, G, r, stride=1, L=32):
        super(SKConv, self).__init__()
        d = max(int(features / r), L)
        self.M = M
        self.features = features
        self.convs = nn.ModuleList([])
        for i in range(M):
            # 使用不同kernel size的卷积
            self.convs.append(
                nn.Sequential(
                    nn.Conv2d(features,
                              features,
                              kernel_size=3 + i * 2,
                              stride=stride,
                              padding=1 + i,
                              groups=G), nn.BatchNorm2d(features),
                    nn.ReLU(inplace=False)))
        self.fc = nn.Linear(features, d)
        self.fcs = nn.ModuleList([])
        for i in range(M):
            self.fcs.append(nn.Linear(d, features))
        self.softmax = nn.Softmax(dim=1)
    def forward(self, x):
        for i, conv in enumerate(self.convs):
            fea = conv(x).unsqueeze_(dim=1)
            if i == 0:
                feas = fea
            else:
                feas = torch.cat([feas, fea], dim=1)
        fea_U = torch.sum(feas, dim=1)
        fea_s = fea_U.mean(-1).mean(-1)
        fea_z = self.fc(fea_s)
        for i, fc in enumerate(self.fcs):
            print(i, fea_z.shape)
            vector = fc(fea_z).unsqueeze_(dim=1)
            print(i, vector.shape)
            if i == 0:
                attention_vectors = vector
            else:
                attention_vectors = torch.cat([attention_vectors, vector],
                                              dim=1)
        attention_vectors = self.softmax(attention_vectors)
        attention_vectors = attention_vectors.unsqueeze(-1).unsqueeze(-1)
        fea_v = (feas * attention_vectors).sum(dim=1)
        return fea_v	

3 Network Architecture

4 思维导图

在这里插入图片描述
图片来自:
【Deep Learning】SKNet : Selective Kernel Networks 学习

Selective Kernel NetworksPDF:https://arxiv.org/pdf/1903.06586.pdfPyTorch: https://github.com/implus/SKNet1 概述SENet是对特征图的通道注意力机制的研究,之前的CBAM提到了对特征图空间注意力机制的研究。这里SKNet针对卷积核的注意力机制研究。SKNet提出了一种机制,即卷积核的重要性,即不同的图像能够得到具有不同重要性的卷积核。SKNet对不同图像使用的卷积核权重不同,即一种针对不同尺 # selective kernel attention # 多个卷积核的通道注意力 # 方法出处 2019 CVPR 《Selective Kernel Networks》 class SKAttention(nn.Module): # 初始化层 def _.
论文题目:Selective Kernel Networks 发表于 CVPR 2019 论文地址:https://arxiv.org/pdf/1903.06586.pdf 作为一下对比,这里再附上SEnet的结构图: 总结:SK注意力机制和SE注意力机制的不同之处: SE注意力只是在通道上施加MLP学习权重,来体现每个权重之间的重要性差异; SE注意力机制只需要用到一个全局池化和两个全连接层; SK注意力机制是SE注意力机制的升级版,特色之处体现在通过网络自己学习来选择融合不同感受野的特征图信息; 此代码从RGBD帧中生成对象候选对象(在边界框中)。 如果您使用此软件,请引用以下文章: 金泽麻子和原田辰也。 3D选择性搜索以获取对象候选对象。 2015年IEEE / RSJ国际智能机器人和系统国际会议(IROS) 。 ( ) ROS靛蓝/玉 1.启动Kinect。 例如, $ roslaunch freenect_launch freenect.launch 在这种情况下,您将在rostopic / camera / depth_registered / points中获得点云,并在rostopic / camera / rgb / image_color中获得彩色图像。 2.运行3D选择性搜索。 $ rosrun selective_search_3d selective_search_3d -v 0.02 -d 1.0 points:=/ca
在目标检测时,为了定位到目标的具体位置,通常会把图像分成许多子块,然后把子块作为输入,送到目标识别的模型中。分子块的最直接方法叫滑动窗口法。滑动窗口的方法就是按照子块的大小在整幅图像上穷举所有子图像块。 和滑动窗口法相对的是另外一类基于区域(region proposal)的方法。selective search就是其中之一! 候选区域算法用分割不同区域的办法来识别潜在的物体。在分割的时候,我们要...
论文地址:Selective Kernel Networks 本文提出了一种在CNN网络中动态选择的机制,让每一个神经元可以根据输入信息自动调整感受野大小。作者设计了一个网络模块,称为Selective Kernel Unit,以此来实现这个目的。 作者这样设计的原因是在视觉皮质层中,同一个神经元对同一块区域有着不同大小的感受野,也就是说同一个神经元对于同一个输入信息可以同时提取到不同范围的...
  本节主要介绍这篇论文的核心部分,即 Selective kernel 的相关内容 上图给出的是 Selective Kernel Convolution 的示意图,可以看出,此结构主要由三个部分组成,即: Split: 深度学习论文: YOLC: You Only Look Clusters for Tiny Object Detection in Aerial Images及其PyTorch实现 DQYanZhixuan: 这篇开源了吗 深度学习论文: YOLC: You Only Look Clusters for Tiny Object Detection in Aerial Images及其PyTorch实现 DQYanZhixuan: 大佬,请问YOLC框架在哪下载呢