位置: IT常识 - 正文
推荐整理分享CLIP(Contrastive Language-Image Pre-Training)简介,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
利用文本的监督信号训练一个迁移能力强的视觉预训练模型
通过对比学习,训练得到图片和文本的相似度,传闻使用4亿个配对的数据和文本来进行训练,不标注直接爬取的
注意: 由于训练数据基本都是英文,对英文支持的比较好
用途:CLIP主要是用来做图片分类(计算图片和文本的相似度(关联度)), 也可以辅助做GAN,检测,分割,检索等等
以往我们训练一个猫狗分类模型,换一个线条猫,点云猫,油画猫,穿着奇装异服的猫,分类网络很难还认识,但是现在只要加上一个 CLIP,模型马上就被扩展了.
CLIP是如何训练的:CLIP是如何进行推理的:可用模型介绍和说明:`clip.available_models()`可列出CLIP可用模型列表:
'RN50','RN101','RN50x4','RN50x16','RN50x64','ViT-B/32','ViT-B/16','ViT-L/14','ViT-L/14@336px'CLIP 是一组模型。有 9 个图像编码器: 5 个卷积编码器和 4 个 transformer 编码器。卷积编码器是 ResNet-50、ResNet-101 和类似 EfficientNet 的模型,称为 RN50x4、RN50x16、RN50x64(数字越大,模型越好)。transformer 编码器是视觉 Transformer(或称之为 ViT(Visual Transformer)):ViT-B/32、ViT-B/16、ViT-L/14 和 ViT-L/14@336。最后一个在分辨率为 336×336 像素的图像上进行微调,其他的则在 224×224 像素上进行训练。
ViT-B/16中:
+ ViT: Visual Transformer
+ B: Base(Base(基础)/ Large(大的)/ Huge(极大的))
+ 16: Patch Size(块大小), 16×16
三个模型(Base(基础)/ Large(大的)/ Huge(极大的))的参数,在源码中除了有Patch Size为16*16的外还有32*32的。
Model
Patch Size
Layers
Hidden Size D
MLP Size
Heads
Params
ViT-Base
16×16
12
768
3072
12
86M
ViT-Large
16×16
24
1024
4096
16
307M
ViT-Huge
14×14
32
1280
5120
16
632M
Layers 就是Transformer Encoder中重复堆叠Encoder Block的次数L
Hidden Size 就是对应通过Embedding层(Patch Embedding + Class Embedding + Position Embedding)后每个token的dim(向量的长度)不用那么复杂,其实就是Patch Embedding后向量的长度
MLP Size 是Transformer Encoder中MLP Block第一个全连接的节点个数(是token长度的4倍) MLP中第一个全连接层升维数
Heads 代表Transformer中Multi-Head Attention的heads数。
Params 参数量
Patch Size 为32 x 32,即一张图片可以被划分为224/32 x 224/32 = 7x 7 个patch,每个patch的shape为: [32, 32,3] ,共7x7= 49个,我们可以对每个patch进行线性映射得到所需要的token [32 x 32 x 3] = [3072] ,即
即一张图片被切分为49个patch,对每个patch进行变换后得到shape为[3072]的token,即tokens的shape为 [49, 3072] 。
基准测试:具体使用方法和代码:github仓库: GitHub - openai/CLIP: Contrastive Language-Image Pretraining
下一篇:uniapp 高频面试题合集(uniapp面试题必问的坑)
友情链接: 武汉网站建设