GroupViT 架构
GroupViT 包含按阶段分组的 Transformer 层的分层结构,每个阶段会处理逐渐放大的视觉片段。右侧的图像显示了在不同分组阶段要处理的视觉片段。在初期阶段模型将像素分组为局部对象,例如大象的鼻子和腿。在更高的阶段进一步将它们合并成整体,例如整个大象和背景森林。
每个分组阶段都以一个分组块结束,该块会计算学习到的组标记和片段(图像)标记之间的相似度。相似度高的组会分配给同一组的段标记并合并在一起,并做进入下一个分组阶段的新段标记。
GitHub - NVlabs/GroupViT: Official PyTorch implementation of GroupViT: Semantic Segmentation Emerges from Text Supervision, CVPR 2022.
分块的方法是用了384个16*16的卷积核,步长为16*16,把图像分割为384*14*14个特征。
self.proj = nn.Conv2d(in_chans, embed_dim, kernel_size=kernel_size, stride=stride, padding=padding)
我把代码提取出来:
# -------------------------------------------------------------------------
# Copyright (c) 2021-2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#
from collections import OrderedDict
import torch
import torch.nn as nn
import torch.nn.functional as F
import t