当前位置: 首页 > article >正文

【计算机视觉】图像分类模型

VIT

输入size,(4,3,256,256) ,为了序列化输入进 transformer 中,利用 patch 进行分块。patch_size=32。

(4,3,256,256) -> b c (h p1) (w p2) -> 4,3, 8 32 8 32   # 256/32=8

-> b (h w) (p1 p2 c) -> 4 64 3072  # 32*32*3=3072

4是 batchsize 是不变的。64是图像所划分的小块,相当于64个 token。

3072是每个小块的向量维度。 

 + pos_emb 位置编码 

经过transformer 特征提取后,得到 out # 4,64,512(64个位置)

to_cls_tokens(out) 求全局特征,cls_to_tokens=4,1,512

最终得到 4,65,512。。。走几个全连接, 得到260,128。

在 CLIP 中相当于,同一张图片,图像数据增强后,第一个图片 经过 VIT 进行特征提取,返回特征 query 160,128;第二个图片 经过 VIT 进行特征提取,返回特征 key 160,128

在batch=4的情况下,怎么算既有正样本又有负样本呢?

4个图片,分别是猫、狗、猪、鸭。key1,query1是猫通过图像增强得到的2个图片;key2,query2是狗通过图像增强得到2个图片。

key1,query1是互为正样本;

key2,query2是互为正样本;

(key1,key2) 、 (key1,query2) 都是负样本

但不知道通过 nt_xent_loss 是如何实现的

VIT里会更细致,具体到每个块(腿、眼睛)像不像。

260=4*65(全局特征1+64个位置特征?是叫位置特征吗?)

得到520*520的矩阵,代表每一个小块和其余小块的关系。不能考虑自己,去掉对角线,得到520*519。

temperature 温度系数,扩大 softmax 的差异。

正样本的标签是自动生成的。总长520。259配对0。

labels如下,518-259+1=260 

 

loss=F.cross_entropy(logits, labels, reduction='sum')

loss/=n # n=520,求平均损失

logits # 520,519 

labels # 259,260

 

 

CLIP

文本模型内部做完形填空,mask language model。-> enc_text

图像模型内容做 simCLR 利用vit做对比学习。-> enc_image

enc_text与enc_image再做对比学习

text_embeds=enc_text[;,0] # 0是'CLS',全局特征,4,512

images_embeds=enc_image[;,0] # 4,512,我理解应该是4,65,512求均值得到4,512   

# t - sequence dimension along text tokens
# i - sequence dimension along image tokens

text_to_iamge = einsum('t d, i d - > t i', text_latentes, image_latentes) * temp
# text_latentes 4,512
# image_latentes 4,512
# text_to_iamge 4,4 # 4个文本和4个图像之间的关系

image_to_text = rearrange(text_to_image, '... t i -> ... i  t')
# text_to_iamge 4,4 # 4个图像和4个文本之间的关系

【对比学习有多火?文本聚类都被刷爆了!通俗易懂的讲解让我直接悟了啊!】 https://www.bilibili.com/video/BV1iR4y1R7dH/?share_source=copy_web&vd_source=694333d73ad23f4f70f7df5508d4f30a


http://www.kler.cn/a/8063.html

相关文章:

  • Docker 安装mysql ,redis,nacos
  • THREE.js 入门(六) 纹理、uv坐标
  • 强大且灵活的终端工具Tabby的强大功能与详细配置指南
  • 渗透Vulnhub-DC-9靶机
  • 计算机基础知识复习12.24
  • OpenAI 普及 ChatGPT,开通热线电话,近屿智能深耕AI培训
  • LIN节点结构和主要技术特点
  • VSCode修改配置(设置settings.json)汇总
  • 【Linux】权限管理
  • 用ChatGPT怎么赚钱?普通人用这5个方法也能赚到生活费
  • Vue——类与样式绑定
  • C语言笔记5-字符串的指针
  • 【Vue2从入门到精通】深入浅出,带你彻底搞懂Vue2组件通信的9种方式
  • 解决方案PPT的编写框架
  • 三、线程状态【3/12】【多线程】
  • 【随笔记】Win11、RTX3070、CUDA117的深度学习机器学习环境配置
  • 使用变分法求解最优控制问题
  • 【docx模块】python中可以处理word文档的模块
  • JDK8和JDK17安装切换,IDEA配置多个版本JDK
  • ChatGPT中文在线官网-如何与chat GPT对话
  • Oracle之PL/SQL流程控制语句(二)
  • linux centos 系统提示No space left on device错误 centos清理硬盘空间
  • Ubuntu22安装OpenJDK
  • java中static{}是什么意思(IT枫斗者)
  • chatGPT写文章提问词-chatGPT生成论文要多久
  • JavaScript 进阶 - 0基础第三天