一、卷积对三通道的处理
卷积过程中,最主要的是:输入层有多少个通道,卷积核就要有多少个通道,但是卷积核的数量是任意的,卷积核的数量决定了卷积后 featuremap 的通道数。
卷积过程的最后一步要包括生成 feature,很简单,将 Result 各个通道对应坐标的值相加就生成了 feature,相当于将多维的 Result 压缩成了 2 维的 feature。
这篇文章有个图画的很不错
ViT 是第一次成功将 Transformer 引入到视觉领域的尝试,开辟了视觉 Transformer 先河。
(7条消息) Vision Transformer详解_太阳花的小绿豆的博客-CSDN博客
其做法非常简单,简要概况为:
将图片分成无重叠的固定大小 Patch (例如 16 x 16),然后将每个 Patch 拉成一维向量, n 个 Patch 相当于 NLP 中的输入序列长度(假设输入图片是 224 x 224,每个 patch 大小是 16 x 16,则 n 是 196),而一维向量长度等价于词向量编码长度(假设图片通道是 3 , 则每个序列的向量长度是 768 )。考虑到一维向量维度较大,需要将拉伸后的 Patch 序列经过线性投影 (nn.Linear) 压缩维度,同时也可以实现特征变换功能,这两个步骤可以称为图片 Token 化过程 (Patch Embedding)。为了方便后续分类,作者还额外引入一个可学习的 Class Token,该 Token 插入到图片 token 化后所得序列的开始位置。将上述序列加上可学习的位置编码输入到 N 个串行的 Transformer 编码器中进行全局注意力计算和特征提取,其中内部的多头自注意模块用于进行 Patch 间或者序列间特征提取,而后面的 Feed Forward (Linear+ GELU+Dropout+ Linear+ Dropout) 模块对每个 Patch 或者序列进行特征变换。将最后一个 Transformer 编码器输出序列的第 0 位置( Class Token 位置对应输出)提取出来,后面接 MLP 分类后,然后正常分类即可。
swin transformer(7条消息) Swin-Transformer网络结构详解_swin transformer_太阳花的小绿豆的博客-CSDN博客
首先将图片输入到Patch Partition模块中进行分块,即每4x4相邻的像素为一个Patch,然后在channel方向展平(flatten)。假设输入的是RGB三通道图片,那么每个patch就有4x4=16个像素,然后每个像素有R、G、B三个值所以展平后是16x3=48,所以通过Patch Partition后图像shape由 [H, W, 3]变成了 [H/4, W/4, 48]。然后在通过Linear Embeding层对每个像素的channel数据做线性变换,由48变成C,即图像shape再由 [H/4, W/4, 48]变成了 [H/4, W/4, C]。其实在源码中Patch Partition和Linear Embeding就是直接通过一个卷积层实现的,和之前Vision Transformer中讲的 Embedding层结构一模一样。
对于灰度图像的特征提取,我们需要首先将其转换为有多个通道的特征图,再将其输入到 Swin Transformer 中进行特征提取。