2025.7.7学习日记

1.ViT复习

1.1 Embedding

【ADD】加入Class Token
由于标准的block要求的输入是[num_token,token_dim],对于图片数据[H,W,C]来说无法直接输入,所以需要进行处理。这里以ViT-B为例
image
从图片上来看ViT-B的输入图片为[224,224,3],需要将其调整为token_dim=768才可以送入模型中,这里可以简单做一个乘除可以知道最后输入为[196,768],拼接一个class_token[1,768],cat([196,768],[1,768])->[197,768],并且进行位置编码最后送入blocks即可

1.2 Encoder

Encoder包括了12个Encoder Block,每个Encoder Block中又包含了一个MLP Block

  • Encoder Block:
    依靠Multi-Head Attention与MLP Block实现注意力机制和特征重构
  • MLP Block:
    两个线性层,实现[197,768]->[197,3072]->[197,768]的特征重构。

1.3 MLP Head

【Extract】提取出Class Token
送入MLP Head实现分类任务,输出概率

1.4 其他

Encoder注重理解,完成的任务有文本问答,分类等任务;Decoder注重生成,完成的任务有机器翻译,文本生成等任务。Encoder与Decoder一同使用,完成理解生成的任务。
image

2.SAM复习

详细可以参考这三篇文章

2.1 Prompt Encoder

Prompt的输入一共有四种,分为点(point),框(box),文本(text),掩码(mask)。
image

2.2 Image Encoder

SAM参考的是ViT模型系列架构,所以SAM的模型拥有sam_vit_b,sam_vit_l,sam_vit_h,三种
image

2.3 Mask Decoder

用于生成掩码的任务
image

3.Python知识点

3.1 模块和命名空间

  • 文件
    以.py结尾的文件都可以称为模块。
  • 文件夹
    为什么有些文件夹被称为模块,有些文件夹被称为命名空间,简单理解下来就是,有__init__.py的文件夹被称为模块,没有的则成为命名空间

3.2 模型结构

获取模型结构的办法有手动打印,使用torchsummary或者使用torchinfo。
手动打印可以获取模型的参数所占大小;使用torchsummary可以看到模型的编号结构以及输入输出张量的大小,但有时候会失效;使用torchinfo,可以查看到输入输出张量大小,但是结构编号没有torchsummary清晰。三种方法在测试时可以一起使用

4.任务清单

  • [√]了解如何添加class_token,简要实现一个ViT
posted @ 2025-07-07 21:09  BingUw  阅读(31)  评论(0)    收藏  举报