1.swin transformerç解è¦ç¹
2.轻松理解ViT(Vision Transformer)原理及源码
3.[CV - 图像分类 - 论文复现] 深度学习之图像分类经典模型 - MMClassification(二)- 初步认识
4.源代码阅读+一个示例 详解timm库背后的create_model以及register_model函数
5.捋一捋Swin Transformer
swin transformerç解è¦ç¹
è¿æ¯è·éçå类以ååå²æºç ä»ç»ï¼å¤§å®¶æéè¦å¯ä»¥åèä¸ä¸ï¼1ã Swin-Transformeråç±»æºç (å·²è·é)
2ã Swin-Transformeråå²æºç (å·²è·é)
3ã Swin-Unet(åå²æ¹ç¼)
æ们å设å¾çç大å°æ¯Ãçï¼çªå£å¤§å°æ¯åºå®çï¼7Ã7ãè¿éæ¯ä¸ªæ¹æ¡é½æ¯ä¸ä¸ªçªå£ï¼æ¯ä¸ªçªå£æ¯åºå®æ7Ã7个patchï¼ä½æ¯patchç大å°æ¯ä¸åºå®çï¼å®ä¼éçpatch mergingçæä½èåçååãæ¯å¦æ们çè¿å¿ï¼patch大å°æ¯4Ã4çï¼é£æä¹åæ8Ã8å¢ï¼æ们æå¨è¾¹4个çªå£çpatchæ¼å¨ä¸èµ·ï¼ç¸å½äºpatchæ©å¤§äº2Ã2åï¼ä»èå¾å°8Ã8大å°çpatchã
æ们åç°ç»è¿è¿ä¸ç³»åçæä½ä¹åï¼patchçæ°ç®å¨åå°ï¼æåæ´å¼ å¾åªæä¸ä¸ªçªå£ï¼7个patchãæ以æ们å¯ä»¥è®¤ä¸ºééæ ·æ¯æ让patchçæ°éåå°ï¼ä½æ¯patchç大å°å¨å大ã
è¿ä¾¿æ¯å¯¹ViTçä¸ä¸ªæ¹è¿ï¼ViTä»å¤´è³å°¾é½æ¯å¯¹å ¨å±åself-attentionï¼èswin-transformeræ¯ä¸ä¸ªçªå£å¨æ¾å¤§çè¿ç¨ï¼ç¶åself-attentionç计ç®æ¯ä»¥çªå£ä¸ºåä½å»è®¡ç®çï¼è¿æ ·ç¸å½äºå¼å ¥äºå±é¨èåçä¿¡æ¯ï¼åCNNçå·ç§¯è¿ç¨å¾ç¸ä¼¼ï¼å°±åæ¯CNNçæ¥é¿åå·ç§¯æ ¸å¤§å°ä¸æ ·ï¼è¿æ ·å°±åå°äºçªå£çä¸éåï¼åºå«å¨äºCNNå¨æ¯ä¸ªçªå£åçæ¯å·ç§¯ç计ç®ï¼æ¯ä¸ªçªå£æåå¾å°ä¸ä¸ªå¼ï¼è¿ä¸ªå¼ä»£è¡¨çè¿ä¸ªçªå£çç¹å¾ãèswin transformerå¨æ¯ä¸ªçªå£åçæ¯self-attentionç计ç®ï¼å¾å°çæ¯ä¸ä¸ªæ´æ°è¿ççªå£ï¼ç¶åéè¿patch mergingçæä½ï¼æçªå£åäºä¸ªå并ï¼å继ç»å¯¹è¿ä¸ªå并åççªå£åself-attentionç计ç®ã
å ¶å®è¿è¾¹å°æ°äºæä¸å°ä¸ï¼å 为æ们å°è±¡ä¸ééæ ·é½æ¯åCNNä¸æ ·ï¼ä¼åå°ï¼ä½æ¯swin transformer没æç»æ们åå°çæè§ãå ¶å®è¿å°±æ¯æåé没ç解å°ä½çé®é¢ï¼CNNå°æåï¼è®¾è®¡éå½ï¼æåä¸ä¸ªç¹å¾å¾çæåéæ¯å¯ä»¥æ¾å¤§å°æ´å¼ å¾çï¼swin transformeræåä¸ä¸ªstageä¹æ¯ä¸ä¸ªçªå£æ¶µçäºæ´å¼ å¾ã
Swin-transformeræ¯æä¹æå¤æ度éä½çå¢ï¼ Swin Transformer Blockè¿ä¸ªæ¨¡ååæ®éçtransformerçåºå«å°±å¨äºW-MSAï¼èå®å°±æ¯éä½å¤æ度计ç®ç大åè£ã
å ³äºå¤æ度ç计ç®ï¼æç®åçç»å¤§å®¶ä»ç»ä¸ä¸ï¼é¦å æ¯transformeræ¬èº«åºäºå ¨å±çå¤æ度计ç®ï¼è¿ä¸åå¿è®²èµ·æ¥æç¹å¤æï¼æå ´è¶£çåå¦æ们å¯ä»¥ä¼åä¸èµ·æ¢è®¨æ¨å¯¼è¿ç¨ãå¨è¿éï¼æ们å设已ç¥MSAçå¤æ度æ¯å¾å大å°çå¹³æ¹ï¼æ ¹æ®MSAçå¤æ度ï¼æ们å¯ä»¥å¾åºAçå¤æ度æ¯(3Ã3)²ï¼æåå¤æ度æ¯ãSwin transformeræ¯å¨æ¯ä¸ªlocal windows(红è²é¨å)计ç®self-attentionï¼æ ¹æ®MSAçå¤æ度æ们å¯ä»¥å¾åºæ¯ä¸ªçº¢è²çªå£çå¤æ度æ¯1Ã1çå¹³æ¹ï¼ä¹å°±æ¯1çå次æ¹ãç¶å9个çªå£ï¼è¿äºçªå£çå¤æ度å åï¼æåBçå¤æ度为9ã
W-MSAè½ç¶éä½äºè®¡ç®å¤æ度ï¼ä½æ¯ä¸éåçwindowä¹é´ç¼ºä¹ä¿¡æ¯äº¤æµï¼æ以æ³è¦çªå£ä¹é´çä¿¡æ¯ææ交æµï¼é£ä¹å°±å¯ä»¥æå·¦å¾æ¼åæå³å¾è¿æ ·ï¼ä½æ¯è¿å°±äº§çäºä¸ä¸ªé®é¢ï¼å¦æ¤æä½ï¼ä¼äº§çæ´å¤çwindowsï¼å¹¶ä¸å ¶ä¸ä¸é¨åwindowå°äºæ®éçwindowï¼æ¯å¦4个window -> 9个windowï¼windowsæ°éå¢å äºä¸åå¤ãè¿è®¡ç®éåä¸æ¥äºãå æ¤æ们æ两个ç®çï¼Windowsæ°éä¸è½å¤ï¼windowä¹é´ä¿¡æ¯å¾æ交æµã
æ们çå°ï¼åæ¥çå¾è¢«ååäº9个çªå£ï¼ä¸é´çåºåAå°±æ¯ä¿¡æ¯äº¤æµçè¯æãæ们å æå·¦ä¸é¨å(èè²ä»¥å¤ççªå£)移å¨å°å³ä¸ï¼ç¶ååç¨ååååçæ¹æ³å»åè¿ä¸ªå¾çï¼è¿æ¶ååºåA就被éåºæ¥äºï¼è¾¾å°äºæ们æ³è¦çææã
transformerçåºç°å¹¶ä¸æ¯ä¸ºäºæ¿ä»£CNNãå 为transformeræçCNN没æçåè½æ§ï¼å®ä¸ä» å¯ä»¥æåç¹å¾ï¼è¿å¯ä»¥åå¾å¤CNNåä¸å°çäºæ ï¼æ¯å¦å¤æ¨¡æèåãèswin transformerå°±æ¯ä¸ä¸ªè¶å¿ï¼å°CNNä¸transformeråèªçä¼å¿ææçç»åäºèµ·æ¥ãè¿æ¯ææ¶å¯¹å®çä¸äºç»èè¡¥å ãæè¿å¬è¯´MLPåºæ¥äºï¼è¿æ²¡æç»çï¼æ¶ä»£è¿å±æªå ä¹å¤ªå¿«äºï¼æéé对ViTæ¹è¿çæç« è¿æ²¡æåºå»ï¼å°±å·²ç»å¼å§è¦ç«ä¸ä½èäºã
å¸æå¯ä»¥å¸®å©å°å¤§å®¶ï¼å¦æä½ è§å¾è¿ç¯æç« å¯¹ä½ æä¸å®ç帮å©ï¼é£å°±ç¹ä¸ªèµæ¯æä¸ä¸å§ï¼å¦ææä»ä¹é®é¢çè¯ä¹å¯ä»¥å¨æç« ä¸é¢è¯è®ºï¼æ们ä¸èµ·äº¤æµè§£å³é®é¢ï¼
以ä¸æ¯ææææç« çç®å½ï¼å¤§å®¶å¦ææå ´è¶£ï¼ä¹å¯ä»¥åå¾æ¥ç
👉æ³å³è¾¹ï¼ æå¼å®ï¼ä¹è®¸ä¼çå°å¾å¤å¯¹ä½ æ帮å©çæç«
轻松理解ViT(Vision Transformer)原理及源码
ViT,即Vision Transformer,是将Transformer架构引入视觉任务的创新。源于NLP领域的Transformer,ViT在图像识别任务中展现出卓越性能。理解ViT的军棋项目源码原理和代码实现在此关键点上进行。
ViT的核心流程包括图像分割为小块、块向量化、多层Transformer编码。图像被分为大小为x的块,块通过卷积和展平操作转换为向量,最终拼接形成序列。序列通过多层Transformer编码器处理,编码器包含多头自注意力机制和全连接前馈网络,实现特征提取和分类。模型输出即为分类结果。
具体实现上,Patch Embedding过程通过卷积和展平简化,z源码是啥将大小为x的图像转换为x的向量序列。Transformer Encoder模块包括Attention类实现注意力机制,以及Mlp类处理非线性变换。Block类整合了这两个模块,实现完整的编码过程。
VisionTransformer整体架构基于上述模块构建,流程与架构图保持一致。代码实现包括关键部分的细节,完整代码可参考相关资源。
综上所述,ViT通过将图像分割与Transformer架构相结合,实现高效图像识别。理解其原理和代码,有助于深入掌握这一创新技术。
[CV - 图像分类 - 论文复现] 深度学习之图像分类经典模型 - MMClassification(二)- 初步认识
本文将深入探讨深度学习中图像分类的经典模型,从理论到实践,以期复现实用的亚博yb源码图像分类算法。
首先回顾上一期内容,了解图像分类的基本框架。输入为图像,经过深度学习模型(如卷积神经网络CNN或自注意机制Transformer)自动提取特征,然后通过全连接层(MLP)加上Softmax分类器,最终输出类别标签。
代码实现方面,项目源码位于github.com/open-mmlab/m...。以@OpenMMLab为代表的代码框架,包括配置文件、数据集、模型、训练策略和运行设置等组件,为实现图像分类任务提供了全面的支持。
具体而言,配置文件包含模型、数据集等参数设置;数据集格式支持多种,即时聊天web源码例如ImageNet和自定义CustomDataset;模型包含经典的ResNet、VGG、MobileNet系列、DenseNet等;训练策略定义优化器、学习率等参数;运行设置控制模型运行方式;工具包则提供了训练、测试、推理等接口。
综上,深度学习图像分类算法主要包括CNN机制、Transformer机制、数据增强方法、激活函数选择和细粒度分类技术。从AlexNet到ResNet、MobileNet、DenseNet、RepVGG等模型,再到ViT、div官网源码MobileViT、DeiT等新兴模型,展示了深度学习在图像分类领域的不断进步。
在具体实现中,使用工具包中的train.py、text.py等命令,可实现单张GPU或多张GPU的训练、测试和推理操作。数据增强方法如Mixup、Cutout和CutMix,以及激活函数SiLU等,有助于提升模型性能。
图像分类的应用广泛,例如生物医学图像分类,用于识别COVID-。通过对这些模型的复现与应用,可以更好地理解图像分类技术,推动相关领域的发展。
源代码阅读+一个示例 详解timm库背后的create_model以及register_model函数
深入理解timm库的核心,本文将重点剖析create_model和register_model这两个关键函数的工作原理。timm库以其封装的便捷性和SOTA模型集成而闻名,但内部细节往往被隐藏。本文将通过一个实例,揭示create_model的全貌,包括register_model的作用,帮助读者更好地掌握这两个函数的使用。
首先,create_model从model_name入手,如vit_base_patch_,通过parse_model_name函数将其解析。这个过程包括urlsplit函数,用于解析model_name,如timm和vit_base_patch_被分别赋值给model_source和model_name。
进一步,split_model_name_tag函数被调用,将model_name拆分为基础模型名称和配置参数。例如,model_name='vit_base_patch_',tag=''。
然后,is_model函数检查model_name是否已注册在timm的_model_entrypoints字典中。register_model实际上是一个函数修饰器,它允许用户自定义模型,并将其添加到timm的框架中,以便无缝使用timm的训练工具,如ImageNet训练。
在is_model验证后,create_fn通过model_entrypoint(model_name)创建模型。register_model的__name__属性在此过程中起到关键作用,它将用户自定义的函数与timm的框架连接起来。
通过以上步骤,本文旨在解构create_model的内部逻辑,帮助读者更好地掌握register_model的修饰器功能,从而在项目中更自信地运用timm库。现在,让我们跟随代码实例,深入了解这两个函数的运作细节。
捋一捋Swin Transformer
Swin Transformer是ICCV 的最佳论文,它证明了Transformer在视觉领域的通用性,特别体现在Swin-T模型上。其结构区别于ViT,采用4x4的初始切分和Window Attention,允许获取多尺度信息,适用于目标检测和语义分割。下面,我们通过源码解析Swin Transformer的工作原理。
首先,Swin Transformer的架构包括PatchEmbed层,将图像切割成小patch,之后通过多个BasicLayer处理,每个BasicLayer由Swin Transformer Block和Patch Merging组成。与ViT不同,Swin-T的PatchEmbed使用4x4切分并逐渐增大patch尺寸,以实现多尺度变化。BasicLayer中的核心模块Swin Transformer Block包含两个Window Attention,一个在窗口内操作,另一个解决窗口间信息交流问题。
Window Attention通过将输入分割成小窗口,降低计算复杂度,但通过shift操作引入了窗口之间的信息交互。Shifted Window Attention通过调整窗口位置并使用掩码来控制注意力,使得并行计算更高效。此外,Window Attention还包括了相对位置编码,增强对局部上下文的理解。
Patch Merging则模仿CNN,通过合并小patch以提取不同分辨率的特征,有助于多尺度特征的提取。在实验中,Swin Transformer在图像分类、目标检测和语义分割等多个领域展现了出色性能,尽管面临如Convnext的竞争,但它在视觉领域的创新性和多模态潜力仍值得关注。