AIGC学习笔记——CLIP详解加推理

这篇具有很好参考价值的文章主要介绍了AIGC学习笔记——CLIP详解加推理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

clip论文地址:https://arxiv.org/pdf/2103.00020.pdf

clip代码地址:https://github.com/openai/CLIP

小辉问:能不能解释一下zero-shot?

小G答:零次学习(Zero-Shot Learning,简称ZSL)假设斑马是未见过的类别,但根据描述外形和马相似、有类似老虎的条纹、具有熊猫相似的颜色,通过这些描述推理出斑马的具体形态,从而能对斑马进行辨认。零次学习就是希望能够模仿人类的这个推理过程,使得计算机具有识别新事物的能力。

使用clip推理,AIGC,学习,笔记

标准图像模型联合训练一个图像特征提取器和一个线性分类器来预测某些标签,而 CLIP 联合训练图像编码器和文本编码器来预测一个 batch 的 (图像, 文本) 训练示例的正确配对。在测试时,经学习的文本编码器通过嵌入目标数据集类别的名称或描述来合成一个零次线性分类器。

在预训练阶段,对比学习十分灵活,只需要定义好正样本对和负样本对就行了,其中能够配对的图片-文本对即为正样本。具体来说,先分别对图像和文本提特征,这时图像对应生成 I1、I2 ... In 的特征向量,文本对应生成T1、T2 ... Tn 的特征向量,然后中间对角线为正样本,其余均为负样本。这样的话就形成了n个正样本,n^2 - n个负样本。一旦有了正负样本,模型就可以通过对比学习的方式训练起来了,完全不需要手工的标注。

使用clip推理,AIGC,学习,笔记

使用某种固定prompt结构,正如训练获得特征,通过图像与prompt特征相似度匹配,实现clip分类,如:图像猫、狗二分类,可分别输入 “ A photo of cat ” 和 “ A photo of dog ”,分别与图像特征算相似度,确定其图像类别。

使用clip推理,AIGC,学习,笔记

图像与文本编码

CLIP为多模态模型是指图像维度与文本维度融合,那么需要对图像特征化与文本特征化,本文选择图像编码结构为VIT,文本编码结构为BERT。

CLIP(

(visual): VisionTransformer(

(conv1): Conv2d(3, 768, kernel_size=(32, 32), stride=(32, 32), bias=False)

(ln_pre): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

(transformer): Transformer(

(resblocks): Sequential(

(0): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)

)

(ln_1): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=768, out_features=3072, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=3072, out_features=768, bias=True)

)

(ln_2): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

)

(1): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)

)

(ln_1): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=768, out_features=3072, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=3072, out_features=768, bias=True)

)

(ln_2): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

)

(2): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)

)

(ln_1): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=768, out_features=3072, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=3072, out_features=768, bias=True)

)

(ln_2): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

)

(3): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)

)

(ln_1): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=768, out_features=3072, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=3072, out_features=768, bias=True)

)

(ln_2): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

)

(4): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)

)

(ln_1): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=768, out_features=3072, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=3072, out_features=768, bias=True)

)

(ln_2): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

)

(5): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)

)

(ln_1): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=768, out_features=3072, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=3072, out_features=768, bias=True)

)

(ln_2): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

)

(6): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)

)

(ln_1): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=768, out_features=3072, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=3072, out_features=768, bias=True)

)

(ln_2): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

)

(7): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)

)

(ln_1): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=768, out_features=3072, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=3072, out_features=768, bias=True)

)

(ln_2): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

)

(8): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)

)

(ln_1): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=768, out_features=3072, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=3072, out_features=768, bias=True)

)

(ln_2): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

)

(9): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)

)

(ln_1): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=768, out_features=3072, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=3072, out_features=768, bias=True)

)

(ln_2): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

)

(10): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)

)

(ln_1): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=768, out_features=3072, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=3072, out_features=768, bias=True)

)

(ln_2): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

)

(11): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)

)

(ln_1): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=768, out_features=3072, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=3072, out_features=768, bias=True)

)

(ln_2): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

)

)

)

(ln_post): LayerNorm((768,), eps=1e-05, elementwise_affine=True)

)

(transformer): Transformer(

(resblocks): Sequential(

(0): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)

)

(ln_1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=512, out_features=2048, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=2048, out_features=512, bias=True)

)

(ln_2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

)

(1): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)

)

(ln_1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=512, out_features=2048, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=2048, out_features=512, bias=True)

)

(ln_2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

)

(2): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)

)

(ln_1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=512, out_features=2048, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=2048, out_features=512, bias=True)

)

(ln_2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

)

(3): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)

)

(ln_1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=512, out_features=2048, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=2048, out_features=512, bias=True)

)

(ln_2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

)

(4): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)

)

(ln_1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=512, out_features=2048, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=2048, out_features=512, bias=True)

)

(ln_2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

)

(5): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)

)

(ln_1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=512, out_features=2048, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=2048, out_features=512, bias=True)

)

(ln_2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

)

(6): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)

)

(ln_1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=512, out_features=2048, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=2048, out_features=512, bias=True)

)

(ln_2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

)

(7): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)

)

(ln_1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=512, out_features=2048, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=2048, out_features=512, bias=True)

)

(ln_2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

)

(8): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)

)

(ln_1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=512, out_features=2048, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=2048, out_features=512, bias=True)

)

(ln_2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

)

(9): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)

)

(ln_1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=512, out_features=2048, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=2048, out_features=512, bias=True)

)

(ln_2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

)

(10): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)

)

(ln_1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=512, out_features=2048, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=2048, out_features=512, bias=True)

)

(ln_2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

)

(11): ResidualAttentionBlock(

(attn): MultiheadAttention(

(out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)

)

(ln_1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

(mlp): Sequential(

(c_fc): Linear(in_features=512, out_features=2048, bias=True)

(gelu): QuickGELU()

(c_proj): Linear(in_features=2048, out_features=512, bias=True)

)

(ln_2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

)

)

)

(token_embedding): Embedding(49408, 512)

(ln_final): LayerNorm((512,), eps=1e-05, elementwise_affine=True)

)

 

Visual: 这是一个 Vision Transformer 模型,它接收图像作为输入,并对其进行特征提取和处理。具体来说,它包括以下几个部分:

    • conv1: 一个二维卷积层,将输入图像的通道数从 3 扩展到 768。
    • ln_pre: 一个 LayerNorm 层,用于在输入进入 Transformer 前对其进行归一化处理。
    • transformer: 一个 Transformer 模块,包含多个 Residual Attention Block,用于对图像特征进行自注意力机制的处理。

Transformer: 这是一个 Transformer 模型,用于处理文本输入。它包括以下几个部分:

    • resblocks: 一个由多个 Residual Attention Block 组成的序列,每个 Residual Attention Block 包括了自注意力机制和前馈神经网络等组件。

Token Embedding: 这是一个嵌入层,用于将输入文本中的 token 映射到一个低维的向量表示。这个嵌入层的大小为 49408,输出的向量维度为 512。

LayerNorm: 这是一个 LayerNorm 层,用于对最终的输出进行归一化处理。

 

小辉问:详细解释一下 Residual Attention Block(残差注意力块)

小G答:

Residual Attention Block 是一种用于处理 Transformer 模型中的注意力机制的基本组件。它结合了残差连接和自注意力机制,以更好地捕捉输入序列中的信息。下面我会逐步解释 Residual Attention Block 的组成部分和作用:

1、Multihead Attention(多头注意力):

  • 在 Residual Attention Block 中,首先会使用 Multihead Attention 层。这是一个用于计算输入序列中各个元素之间的注意力权重的层。
  • 它将输入序列分为多个头部,并分别计算每个头部的注意力权重,然后将所有头部的结果合并起来。
  • 这种多头机制有助于模型同时关注输入序列中不同位置的信息。

2、Layer Normalization(层归一化):

  • 在计算注意力权重之后,会对结果进行层归一化操作。层归一化是一种用于减少内部协变量转移的技术,有助于加速模型的训练并提高模型的泛化能力。

3、Feedforward Neural Network(前馈神经网络):

  • 在经过注意力机制和归一化处理后,输入会通过一个前馈神经网络进行进一步的处理。
  • 这个前馈神经网络通常由两个全连接层和一个激活函数组成,用于对输入进行非线性变换和特征提取。

4、Residual Connection(残差连接):

  • 最后,Residual Attention Block 中还包括了残差连接。残差连接允许模型直接学习输入与输出之间的差异,从而更有效地传递梯度和加速训练。
  • 具体来说,在残差连接中,输入会与经过前馈神经网络处理后的输出进行相加,然后再传递到下一个模块。

综上所述,Residual Attention Block 是一种用于处理 Transformer 模型中注意力机制的核心组件。它结合了多头注意力、层归一化、前馈神经网络和残差连接等技术,用于对输入序列进行特征提取和表示,从而提高模型的性能和泛化能力。

测试结果

推理代码

import torch
import clip
from PIL import Image
import numpy as np

def class_demo():
    # 测试分类的demo
    device = "cuda" if torch.cuda.is_available() else "cpu"
    # 模型选择['RN50', 'RN101', 'RN50x4', 'RN50x16', 'ViT-B/32', 'ViT-B/16'],对应不同权重
    # 加载模型及对应的预处理方法
    model, preprocess = clip.load("./model/ViT-B-32.pt", device=device)  # 载入模型
    image = preprocess(Image.open("./CLIP.png")).unsqueeze(0).to(device)  # 打开并预处理图像
    # 待测试的文本内容
    text_language = ["a diagram", "a dog", "a cat"]
    # 对文本进行tokenize处理
    text = clip.tokenize(text_language).to(device)

    with torch.no_grad():
        # 使用模型进行推断
        logits_per_image, logits_per_text = model(image, text)  # 第一个值是图像,第二个是文本
        # 对图像和文本的预测结果进行softmax处理并转换为numpy数组
        probs = logits_per_image.softmax(dim=-1).cpu().numpy()

        # 获取每张图像的最大概率的标签
        idx = np.argmax(probs, axis=1)
        # 输出每张图像的预测结果
        for i in range(image.shape[0]):
            id = idx[i]
            # 输出图像的预测结果及对应的概率
            print('image {}\tlabel\t{}:\t{}'.format(i, text_language[id],probs[i,id]))
            # 输出图像的所有预测结果及对应的概率
            print('image {}:\t{}'.format(i, [v for v in zip(text_language,probs[i])]))


if __name__ == '__main__':
    class_demo()

使用clip推理,AIGC,学习,笔记文章来源地址https://www.toymoban.com/news/detail-838066.html

到了这里,关于AIGC学习笔记——CLIP详解加推理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【AIGC】7、CLIP | OpenAI 出品使用 4 亿样本训练的图文匹配模型

    论文:Learning Transferable Visual Models From Natural Language Supervision 代码:https://github.com/OpenAI/CLIP 官网:https://openai.com/research/clip 出处:OpenAI 时间:2021.02 贡献: 基于图文匹配,不受限于分类类别,有很强的扩展性!!!这是 CLIP 最炸裂的地方,彻底摆脱了预定义标签列表了 不仅仅

    2024年02月08日
    浏览(32)
  • 论文笔记:基于CLIP引导学习的多模式假新闻检测

      对于我们这一代人来说,在线社交网络在很大程度上取代了以报纸和杂志为代表的传统信息交流方式。人们喜欢在社交媒体上寻找朋友或分享观点。然而,在线网络也促进了假新闻的广泛和快速传播。   文中提出了一个FND-CLIP框架,即基于对比语言-图像预训练(CLIP)的多

    2024年01月21日
    浏览(29)
  • 【AIGC】CLIP

      对比学习: Clip使用对比学习来训练模型。对比学习的目标是通过将正样本(相似的图像和文本对)与负样本(不相似的图像和文本对)进行比较,从而使模型学会区分不同样本之间的差异。这有助于模型学到更具泛化性的表示。 双向编码器: Clip包括两个部分的编码器,

    2024年01月25日
    浏览(36)
  • AIGC系列之:CLIP和OpenCLIP

    目录 模型背景 CLIP模型介绍 相关资料 原理和方法 Image Encoder Text Encoder 对比学习 预训练 Zero Shot预测 优势和劣势 总结 OpenClip模型介绍 相关资料 原理 结果 用法 模型总结 Stable Diffusion主要由三个核心模块组成: Text Encoder(文本编码器) Image Information Creator(图像信息生成器)

    2024年02月04日
    浏览(30)
  • 【AIGC】10、Chinese CLIP | 专为中文图文匹配设计

    论文:Chinese CLIP: Contrastive Vision-Language Pretraining in Chinese 代码:https://github.com/OFA-Sys/Chinese-CLIP 出处:阿里达摩院 时间:2022.11 贡献: 提出了 Chinese CLIP,是经过在大尺度中文图像-文本对儿的两阶段预训练 CLIP 的成功极大地促进了对比学习在视觉-语言模型预训练上的研究和应用

    2024年02月13日
    浏览(27)
  • 详解torch.nn.utils.clip_grad_norm_ 的使用与原理

    本文是对梯度剪裁: torch.nn.utils.clip_grad_norm_()文章的补充。所以可以先参考这篇文章 从上面文章可以看到, clip_grad_norm 最后就是对所有的梯度乘以一个 clip_coef ,而且乘的前提是 clip_coef一定是小于1的 ,所以,按照这个情况: clip_grad_norm 只解决梯度爆炸问题,不解决梯度消失

    2023年04月08日
    浏览(29)
  • 【深度学习】clip-interrogator clip docker 容器启动过程

    给一张图片,输出图片描述。 只有从dockerfile制作的镜像才有分层结构,加速传输,故第一步需要编写dockerfile,过程是不断调试的,下面是一些制作过程中写的dockerfile片段,可以参考一下语句和写法: 比较重要的是最后一个dockerfile,可以通过kevinchina/deeplearning:sd_base_cuda116

    2024年02月07日
    浏览(30)
  • CV多模态和AIGC的原理解析:从CLIP、BLIP到Stable Diffusion、Midjourney

    终于开写本CV多模态系列的核心主题:stable diffusion相关的了,为何执着于想写这个stable diffusion呢,源于三点 去年stable diffusion和midjourney很火的时候,就想写,因为经常被刷屏,但那会时间错不开 去年11月底ChatGPT出来后,我今年1月初开始写ChatGPT背后的技术原理,而今年2月份

    2024年02月13日
    浏览(36)
  • CLIP模型原理与代码实现详解

    目前,大模型十分活跃,openai公司呈现GPT系列,特别是Chat-GPT给人深刻印象,意识到大模型厉害之处,随后推出GPT4模型,更是将大模型进一步推到一个高度,并将多模态融合技术留下深刻印象,同时,学者也对多模态融合技术研究呈现百花齐放之势。然而,多模态模型大多以

    2024年02月07日
    浏览(34)
  • BioMed-CLIP 论文阅读笔记

    Abstract 本文聚焦于将VLP(vision-language processing)拓展到生物医学领域,介绍了一种迄今为止最大的生物医学VLP研究(使用了从PubMed Central中提取的15M 图像文本对) PMC-15M 数据集的规模远大于现有数据集,并且涵盖不同你那个范围的生物医学图像。基于 CLIP 结构,作者提出了

    2024年02月04日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包