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

wordpress调用用户名百度自然排名优化

wordpress调用用户名,百度自然排名优化,汕头企业网站建设,dedecms电影网站模板起因#xff1a; 在DA-CLIP的开源库的DA-CLIP.md中自述该项目基于CLIP 和open_clip#xff0c;在之前的退化类型检测中 我一度以为仓库只是使用了CLIP 的源码#xff0c; 然而当发现缺少da-clip的模型名称时#xff0c;我发现DA-CLIP使用的完全是open_clip的代码版本#…起因 在DA-CLIP的开源库的DA-CLIP.md中自述该项目基于CLIP 和open_clip在之前的退化类型检测中 我一度以为仓库只是使用了CLIP 的源码 然而当发现缺少da-clip的模型名称时我发现DA-CLIP使用的完全是open_clip的代码版本专门配置了da-clip.json在open_clip的model_configs This repository is based on the OpenAIs CLIP (Contrastive Language-Image Pre-training) and open_clip. We extend the CLIP to a degradation-aware version (DA-CLIP) which predicts both degradation embedding and clean content embedding from corrupted images. Then we can use the embeddings to improve image restoration performance and assist unified image restoration. Moreover, we use the pretrained ViT CLIP model (ViT-B/32 on LAION-2B) and add an additional controller to control the image encoder. 该库基于OpenAI的CLIP(对比语言图像预训练)和open_clip。 我们将CLIP扩展到退化感知版本(DA-CLIP)该版本预测退化嵌入和从损坏图像中嵌入干净内容。 然后我们可以利用该嵌入来提高图像恢复性能帮助统一图像恢复。 此外我们使用预训练的ViT CLIP模型(LAION-2B上的ViT- b /32)并添加一个额外的控制器来控制图像编码器。 纵观DA-CLIP代码关于CLIP模块基本是从open_clip库上进行扩展。对于clip代码使用已有博主进行说明 CLIP模型原理与代码实现详解-CSDN博客https://blog.csdn.net/weixin_38252409/article/details/133828294 背景: 然而CSDN上对open_clip项目的介绍寥寥以下项目虽有涉猎但都未对其仓库源码进行解析。 ImageNet零样本准确率首次超过80%OpenCLIP性能最强的开源CLIP模型-CSDN博客https://blog.csdn.net/amusi1994/article/details/129036171?ops_request_misc%257B%2522request%255Fid%2522%253A%2522171120819416800227464964%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257Drequest_id171120819416800227464964biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~all~top_click~default-1-129036171-null-null.142%5Ev99%5Epc_search_result_base6utm_termOpenCLIPspm1018.2226.3001.4449 项目解读open_clip 结构 docs/ - 包含项目文档和使用说明。src/ - 包含项目的主要源代码。tests/ - 包含项目测试代码。setup.py - 用于安装和项目的 Python 包设置文件。 src下的文件夹包含open_clip和training, 由于DA-CLIP与open_clip数据集、模型结构等不同其中DA-CLIP 主要使用了open_clip文件夹 该文件夹下 model.py - 定义了 CLIP 模型的结构包括图像编码器和文本编码器。这是模型训练和推理的核心部分。config.py - 包含了模型配置的类和函数用于设置模型的不同参数如学习率、批次大小等。tokenizer.py - 包含了文本处理的分词器用于将文本转换为模型可以理解的格式。trainer.py - 包含了模型训练的主要逻辑如设置优化器、损失函数和训练循环。evaluator.py - 包含了评估模型性能的代码通常用于在验证集或测试集上计算指标。utils.py - 包含了一些实用工具函数如数据处理、日志记录等。transform.py - 包含了数据预处理和增强的转换函数用于准备输入数据。model_configs包含各类模型配置如coca、convnext、EVA、Vit、RN50等json文件 在 open_clip 目录下每个文件都有其独特的价值和作用但如果要挑选一个文件进行深入解读model.py 可能是最值得关注的。这是因为 model.py 定义了 CLIP 模型的核心结构它直接关联到模型的性能和功能。以下是对 model.py 文件的详细解读 model.py 的作用 model.py 文件定义了 CLIP 模型的架构包括图像编码器和文本编码器的设计。CLIP 模型是一个双流two-stream模型它分别处理图像和文本输入并通过对比学习contrastive learning的方式学习图像和文本之间的对应关系。 主要组件 图像编码器Image Encoder: 通常使用预训练的卷积神经网络如 ResNet 或 Vision Transformer作为基础用于提取图像特征。 文本编码器Text Encoder: 通常基于 Transformer 架构用于处理文本输入并提取文本特征。文本编码器可能使用 BERT 或类似的 Transformer 变体。 投影头Projection Heads: 用于将图像和文本编码器的输出映射到共同的特征空间以便进行相似性比较。 损失函数Loss Function: CLIP 模型使用对比损失函数来训练这要求模型能够区分匹配的图像-文本对和不匹配的对。 关键概念 对比学习Contrastive Learning: 一种自监督学习方法模型通过比较正样本对和负样本对来学习特征表示。 多模态学习Multimodal Learning: 涉及处理和理解多种类型数据如图像和文本的机器学习方法。 零样本学习Zero-Shot Learning: 模型能够在没有见过特定类别的样本的情况下进行分类或识别。 代码结构 model.py 文件包含以下部分 类定义Class Definitions: 定义了图像编码器、文本编码器和整个 CLIP 模型的结构。 前向传播Forward Pass: 描述了数据如何通过模型以及如何计算图像和文本的特征表示。 初始化方法Initialization Methods: 描述了模型权重的初始化过程这对于训练的稳定性和收敛速度至关重要。 损失计算Loss Computation: 实现了对比损失函数用于训练过程中的优化。 通过对 model.py 文件的深入理解可以更好地把握 CLIP 模型的工作原理以及如何修改和扩展模型以适应不同的应用场景。这个文件是进行模型训练和评估的基础对于任何想要深入了解或贡献于 OpenCLIP 项目的人来说都是必读的。 该文件的CLIP类如下 class CLIP(nn.Module):output_dict: torch.jit.Final[bool]def __init__(self,embed_dim: int,vision_cfg: CLIPVisionCfg,text_cfg: CLIPTextCfg,quick_gelu: bool False,init_logit_scale: float np.log(1 / 0.07),init_logit_bias: Optional[float] None,cast_dtype: Optional[torch.dtype] None,output_dict: bool False,):super().__init__()self.output_dict output_dictself.visual _build_vision_tower(embed_dim, vision_cfg, quick_gelu, cast_dtype)text _build_text_tower(embed_dim, text_cfg, quick_gelu, cast_dtype)self.transformer text.transformerself.context_length text.context_lengthself.vocab_size text.vocab_sizeself.token_embedding text.token_embeddingself.positional_embedding text.positional_embeddingself.ln_final text.ln_finalself.text_projection text.text_projectionself.text_pool_type text.pool_typeself.register_buffer(attn_mask, text.attn_mask, persistentFalse)self.logit_scale nn.Parameter(torch.ones([]) * init_logit_scale)if init_logit_bias is not None:self.logit_bias nn.Parameter(torch.ones([]) * init_logit_bias)else:self.logit_bias Nonedef lock_image_tower(self, unlocked_groups0, freeze_bn_statsFalse):# lock image tower as per LiT - https://arxiv.org/abs/2111.07991self.visual.lock(unlocked_groupsunlocked_groups, freeze_bn_statsfreeze_bn_stats)torch.jit.ignoredef set_grad_checkpointing(self, enableTrue):self.visual.set_grad_checkpointing(enable)self.transformer.grad_checkpointing enabledef encode_image(self, image, normalize: bool False):features self.visual(image)return F.normalize(features, dim-1) if normalize else featuresdef encode_text(self, text, normalize: bool False):cast_dtype self.transformer.get_cast_dtype()x self.token_embedding(text).to(cast_dtype) # [batch_size, n_ctx, d_model]x x self.positional_embedding.to(cast_dtype)x x.permute(1, 0, 2) # NLD - LNDx self.transformer(x, attn_maskself.attn_mask)x x.permute(1, 0, 2) # LND - NLDx self.ln_final(x) # [batch_size, n_ctx, transformer.width]x, _ text_global_pool(x, text, self.text_pool_type)if self.text_projection is not None:if isinstance(self.text_projection, nn.Linear):x self.text_projection(x)else:x x self.text_projectionreturn F.normalize(x, dim-1) if normalize else xdef get_logits(self, image, text):image_features self.encode_image(image, normalizeTrue)text_features self.encode_text(text, normalizeTrue)image_logits self.logit_scale.exp() * image_features text_features.Tif self.logit_bias is not None:image_logits self.logit_biastext_logits image_logits.Treturn image_logits, text_logitsdef forward(self,image: Optional[torch.Tensor] None,text: Optional[torch.Tensor] None,):image_features self.encode_image(image, normalizeTrue) if image is not None else Nonetext_features self.encode_text(text, normalizeTrue) if text is not None else Noneif self.output_dict:out_dict {image_features: image_features,text_features: text_features,logit_scale: self.logit_scale.exp()}if self.logit_bias is not None:out_dict[logit_bias] self.logit_biasreturn out_dictif self.logit_bias is not None:return image_features, text_features, self.logit_scale.exp(), self.logit_biasreturn image_features, text_features, self.logit_scale.exp()这个类定义了 CLIP 模型的结构和行为。 初始化 def __init__(self,embed_dim: int,vision_cfg: CLIPVisionCfg,text_cfg: CLIPTextCfg,quick_gelu: bool False,cast_dtype: Optional[torch.dtype] None,output_dict: bool False,):super().__init__()self.output_dict output_dictself.visual _build_vision_tower(embed_dim, vision_cfg, quick_gelu, cast_dtype)text _build_text_tower(embed_dim, text_cfg, quick_gelu, cast_dtype)self.transformer text.transformerself.context_length text.context_lengthself.vocab_size text.vocab_sizeself.token_embedding text.token_embeddingself.positional_embedding text.positional_embeddingself.ln_final text.ln_finalself.text_projection text.text_projectionself.register_buffer(attn_mask, text.attn_mask, persistentFalse)self.logit_scale nn.Parameter(torch.ones([]) * np.log(1 / 0.07)) 参数解释 self: 指向类的实例。embed_dim: 嵌入维度这是模型中嵌入层的维度。vision_cfg: 图像配置对象它包含了构建图像处理部分视觉塔所需的配置信息。text_cfg: 文本配置对象它包含了构建文本处理部分文本塔所需的配置信息。quick_gelu: 布尔值指示是否使用快速的GELUGaussian Error Linear Unit激活函数。cast_dtype: 可选参数指定数据类型用于将模型参数转换为指定的数据类型。output_dict: 布尔值指示模型输出是否应该是一个字典。 方法体解释 super().__init__(): 调用父类的构造函数。self.output_dict: 存储传入的output_dict参数这可能影响模型输出的格式。self.visual: 通过调用一个内部函数_build_vision_tower来构建视觉塔并存储结果。text: 通过调用一个内部函数_build_text_tower来构建文本塔并存储结果。self.transformer: 从文本塔中提取变换器transformer模块。self.context_length: 存储文本塔的上下文长度。self.vocab_size: 存储文本塔的词汇表大小。self.token_embedding: 存储文本塔的词嵌入层。self.positional_embedding: 存储文本塔的位置嵌入层。self.ln_final: 存储文本塔的最终层归一化Layer Normalization。self.text_projection: 存储文本塔的文本投影层。self.register_buffer(attn_mask, text.attn_mask, persistentFalse): 注册一个缓冲区用于存储文本塔的注意力掩码attention mask这个掩码在自注意力机制中用于指示哪些位置应该被模型关注。self.logit_scale: 创建一个可学习的参数用于缩放模型的输出logits初始化为一个全1的向量乘以一个基于经验的对数缩放因子。 锁定参数 下面两个方法的目的是为了在训练过程中冻结图像塔和文本塔的参数这与 LiT 方法的核心思想相符即在对比学习contrastive learning过程中只更新文本模型的参数而保持图像模型的参数不变。这样做可以利用预训练图像模型的强大特征提取能力同时通过文本模型来适应新任务实现零样本zero-shot迁移学习。  def lock_image_tower(self, unlocked_groups0, freeze_bn_statsFalse):# lock image tower as per LiT - https://arxiv.org/abs/2111.07991self.visual.lock(unlocked_groupsunlocked_groups, freeze_bn_statsfreeze_bn_stats)def lock_text_tower(self, unlocked_layers: int 0, freeze_layer_norm: bool True):for param in self.transformer.parameters():param.requires_grad Falseself.token_embedding.requires_grad Falseself.positional_embedding.requires_grad Falseself.text_projection.requires_grad False 这段代码定义了两个方法lock_image_tower 和 lock_text_tower它们似乎是用于控制神经网络模型中的图像塔image tower和文本塔text tower的参数更新机制。CLIP类实现了类似于 LiTLocked-image Tuning的机制这是一种在图像和文本模型对齐时锁定预训练图像模型参数的技术如在论文 LiT: Zero-Shot Transfer with Locked-image text Tuning 中所描述的。 lock_image_tower 方法 unlocked_groups 参数指定哪些层组应该保持未锁定即可训练的。默认值为 0意味着所有层组都被锁定。freeze_bn_stats 参数决定是否冻结批量归一化Batch Normalization, BN层的统计数据。如果设置为 True则BN层的运行时统计数据均值和方差不会在训练过程中更新。 在这个方法中调用了 self.visual.lock()这是一个自定义的方法用于锁定图像塔中的参数。这个方法可能会根据 unlocked_groups 参数来决定哪些层或层组应该保持可训练状态。 lock_text_tower 方法 unlocked_layers 参数指定文本塔中应该保持未锁定的层的数量。默认值为 0意味着所有层都被锁定。freeze_layer_norm 参数决定是否冻结层归一化Layer Normalization, LN的参数。如果设置为 True则LN层的参数不会在训练过程中更新。 在这个方法中遍历了 self.transformer 中的所有参数并将它们的 requires_grad 属性设置为 False这意味着在训练过程中这些参数不会更新。此外还冻结了文本塔中的词嵌入token_embedding、位置嵌入positional_embedding和文本投影text_projection的参数。 set_grad_checkpointing 方法设置梯度检查点 def set_grad_checkpointing(self, enableTrue):self.visual.set_grad_checkpointing(enable)self.transformer.grad_checkpointing enable enable: 布尔值指示是否启用梯度检查点。当启用时可以减少模型训练过程中的内存消耗但可能会增加计算成本。 这个方法在模型的两个主要组件visual视觉塔和transformer文本塔上设置梯度检查点。梯度检查点是一种内存优化技术它允许模型在前向传播过程中保存中间激活的梯度从而在反向传播时减少内存使用。 encode_image 方法 def encode_image(self, image, normalize: bool False):features self.visual(image)return F.normalize(features, dim-1) if normalize else features image: 输入的图像数据。normalize: 布尔值指示是否对编码后的特征进行归一化。 这个方法使用模型的视觉塔来编码输入的图像数据。如果normalize参数为True则使用F.normalize函数对特征进行归一化处理否则直接返回特征。 encode_text 方法 def encode_text(self, text, normalize: bool False):cast_dtype self.transformer.get_cast_dtype()x self.token_embedding(text).to(cast_dtype) # [batch_size, n_ctx, d_model]x x self.positional_embedding.to(cast_dtype)x x.permute(1, 0, 2) # NLD - LNDx self.transformer(x, attn_maskself.attn_mask)x x.permute(1, 0, 2) # LND - NLDx self.ln_final(x) # [batch_size, n_ctx, transformer.width]# take features from the eot embedding (eot_token is the highest number in each sequence)x x[torch.arange(x.shape[0]), text.argmax(dim-1)] self.text_projectionreturn F.normalize(x, dim-1) if normalize else x text: 输入的文本数据。normalize: 布尔值指示是否对编码后的文本特征进行归一化。 这个方法首先将文本数据通过词嵌入层和位置嵌入层来获取嵌入表示然后将这些嵌入表示转换为适合transformer的格式。接下来使用transformer处理这些嵌入并通过层归一化self.ln_final进行归一化。最后通过文本投影层self.text_projection将嵌入映射到最终的特征空间并进行归一化处理如果normalize为True。 前向传播函数  def forward(self,image: Optional[torch.Tensor] None,text: Optional[torch.Tensor] None,):image_features self.encode_image(image, normalizeTrue) if image is not None else Nonetext_features self.encode_text(text, normalizeTrue) if text is not None else Noneif self.output_dict:return {image_features: image_features,text_features: text_features,logit_scale: self.logit_scale.exp()}return image_features, text_features, self.logit_scale.exp() 段代码定义了一个名为 forward 的方法它是神经网络模型中的前向传播函数。该方法接收图像和文本作为输入并输出它们的特征表示以及用于缩放 logits 的比例因子。这个方法是模型核心功能的一部分负责将输入数据转换为模型可以处理的嵌入向量。 参数解释 self: 指向类的实例。image: 输入的图像数据类型为 torch.Tensor。如果为 None则表示没有图像输入。text: 输入的文本数据类型为 torch.Tensor。如果为 None则表示没有文本输入。 方法体解释 image_features: 如果提供了图像输入使用 self.encode_image 方法对图像进行编码并在返回前进行归一化处理。如果没有图像输入则设置为 None。text_features: 如果提供了文本输入使用 self.encode_text 方法对文本进行编码并在返回前进行归一化处理。如果没有文本输入则设置为 None。if self.output_dict: 判断是否以字典格式输出。如果 output_dict 属性为 True则将图像特征、文本特征和 logits 缩放因子封装成一个字典返回。否则将这三个值作为独立的返回值。 返回值 如果 self.output_dict 为 True则返回一个包含图像特征、文本特征和 logits 缩放因子的字典。如果 self.output_dict 为 False则返回一个包含图像特征、文本特征和 logits 缩放因子的元组。 总结 forward 方法是模型的入口点它根据输入的图像和文本数据通过模型的编码器生成对应的特征表示。这些特征表示可以用于后续的多模态任务例如图像-文本匹配、联合嵌入学习或零样本分类等。此外该方法还提供了 logits 缩放因子这在某些情况下如对比学习或分类任务可能是必需的。通过灵活的输出格式该方法可以适应不同的使用场景和后处理需求。
http://www.pierceye.com/news/956208/

相关文章:

  • 知名网站开发哪里有重庆公司网站建设价格
  • 南头做网站公司重庆建设厂招聘信息网站
  • 网站建设的基本条件外贸建设网站制作
  • 移动电子商务平台就是手机网站奉化首页的关键词优化
  • 公司怎么建立一个网站展示型网站模板代码
  • 益阳网页设计十堰seo优化服务
  • discuz论坛建站教程微商城开发小程序开发
  • 饰品网站建设炫丽的网站
  • 网站建设制作介绍河南企业建站多站点管理系统
  • 网站盗号怎么做设计说明模板200字
  • 赣州人才网站搜索引擎广告是什么
  • 广州app开发网站建设与网站优化销售
  • 做淘客哪个网站好点如何做好网站建设销售
  • 手机端网站开发视频wordpress删除评论
  • 台州网站建设推广公司随州有哪些网站建设的公司
  • 定制商品的网站建设word超链接网站怎样做
  • 南昌做网站流程安徽省建设厅网站打不开
  • 雄安智能网站建设方案做涉黄的视频网站用什么服务器
  • 公司网站必须做可信认证吗免费关键词排名优化软件
  • 基金公司网站建设网站有哪几种
  • 广州住房和城乡建设部网站首页福建建站公司
  • 福州网站制作有限公司可玩儿小程序代理
  • 佛山市企业网站建设平台注册公司多少钱起步
  • 网站开发好的语言网站维护上海
  • 民宿网站建设网站如何添加统计代码
  • 哪里培训做网站wordpress plugin development
  • 网站开发费用摊销时间html5视频教程
  • 连连跨境电商网站开发山西省住房建设厅网站首页
  • 潍坊seo网站推广北京南站地铁线路图
  • 投资网站排行军事最新新闻播报