
《博主简介》小伙伴们好我是阿旭。专注于计算机视觉领域包括目标检测、图像分类、图像分割和目标跟踪等项目开发提供模型对比实验、答疑辅导等。《------往期经典推荐------》一、AI应用软件开发实战专栏【链接】项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【YOLOv8多目标识别与自动标注软件开发】8.【基于深度学习的行人跌倒检测系统】9.【基于深度学习的PCB板缺陷检测系统】10.【基于深度学习的生活垃圾分类目标检测系统】11.【基于深度学习的安全帽目标检测系统】12.【基于深度学习的120种犬类检测与识别系统】13.【基于深度学习的路面坑洞检测系统】14.【基于深度学习的火焰烟雾检测系统】15.【基于深度学习的钢材表面缺陷检测系统】16.【基于深度学习的舰船目标分类检测系统】17.【基于深度学习的西红柿成熟度检测系统】18.【基于深度学习的血细胞检测与计数系统】19.【基于深度学习的吸烟/抽烟行为检测系统】20.【基于深度学习的水稻害虫检测与识别系统】21.【基于深度学习的高精度车辆行人检测与计数系统】22.【基于深度学习的路面标志线检测与识别系统】23.【基于深度学习的智能小麦害虫检测识别系统】24.【基于深度学习的智能玉米害虫检测识别系统】25.【基于深度学习的200种鸟类智能检测与识别系统】26.【基于深度学习的45种交通标志智能检测与识别系统】27.【基于深度学习的人脸面部表情识别系统】28.【基于深度学习的苹果叶片病害智能诊断系统】29.【基于深度学习的智能肺炎诊断系统】30.【基于深度学习的葡萄簇目标检测系统】31.【基于深度学习的100种中草药智能识别系统】32.【基于深度学习的102种花卉智能识别系统】33.【基于深度学习的100种蝴蝶智能识别系统】34.【基于深度学习的水稻叶片病害智能诊断系统】35.【基于与ByteTrack的车辆行人多目标检测与追踪系统】36.【基于深度学习的智能草莓病害检测与分割系统】37.【基于深度学习的复杂场景下船舶目标检测系统】38.【基于深度学习的农作物幼苗与杂草检测系统】39.【基于深度学习的智能道路裂缝检测与分析系统】40.【基于深度学习的葡萄病害智能诊断与防治系统】41.【基于深度学习的遥感地理空间物体检测系统】42.【基于深度学习的无人机视角地面物体检测系统】43.【基于深度学习的木薯病害智能诊断与防治系统】44.【基于深度学习的野外火焰烟雾检测系统】45.【基于深度学习的脑肿瘤智能检测系统】46.【基于深度学习的玉米叶片病害智能诊断与防治系统】47.【基于深度学习的橙子病害智能诊断与防治系统】48.【基于深度学习的车辆检测追踪与流量计数系统】49.【基于深度学习的行人检测追踪与双向流量计数系统】50.【基于深度学习的反光衣检测与预警系统】51.【基于深度学习的危险区域人员闯入检测与报警系统】52.【基于深度学习的高密度人脸智能检测与统计系统】53.【基于深度学习的CT扫描图像肾结石智能检测系统】54.【基于深度学习的水果智能检测系统】55.【基于深度学习的水果质量好坏智能检测系统】56.【基于深度学习的蔬菜目标检测与识别系统】57.【基于深度学习的非机动车驾驶员头盔检测系统】58.【太基于深度学习的阳能电池板检测与分析系统】59.【基于深度学习的工业螺栓螺母检测】60.【基于深度学习的金属焊缝缺陷检测系统】61.【基于深度学习的链条缺陷检测与识别系统】62.【基于深度学习的交通信号灯检测识别】63.【基于深度学习的草莓成熟度检测与识别系统】64.【基于深度学习的水下海生物检测识别系统】65.【基于深度学习的道路交通事故检测识别系统】66.【基于深度学习的安检X光危险品检测与识别系统】67.【基于深度学习的农作物类别检测与识别系统】68.【基于深度学习的危险驾驶行为检测识别系统】69.【基于深度学习的维修工具检测识别系统】70.【基于深度学习的维修工具检测识别系统】71.【基于深度学习的建筑墙面损伤检测系统】72.【基于深度学习的煤矿传送带异物检测系统】73.【基于深度学习的老鼠智能检测系统】74.【基于深度学习的水面垃圾智能检测识别系统】75.【基于深度学习的遥感视角船只智能检测系统】76.【基于深度学习的胃肠道息肉智能检测分割与诊断系统】77.【基于深度学习的心脏超声图像间隔壁检测分割与分析系统】78.【基于深度学习的心脏超声图像间隔壁检测分割与分析系统】79.【基于深度学习的果园苹果检测与计数系统】80.【基于深度学习的半导体芯片缺陷检测系统】81.【基于深度学习的糖尿病视网膜病变检测与诊断系统】82.【基于深度学习的运动鞋品牌检测与识别系统】83.【基于深度学习的苹果叶片病害检测识别系统】84.【基于深度学习的医学X光骨折检测与语音提示系统】85.【基于深度学习的遥感视角农田检测与分割系统】86.【基于深度学习的运动品牌LOGO检测与识别系统】87.【基于深度学习的电瓶车进电梯检测与语音提示系统】88.【基于深度学习的遥感视角地面房屋建筑检测分割与分析系统】89.【基于深度学习的医学CT图像肺结节智能检测与语音提示系统】90.【基于深度学习的舌苔舌象检测识别与诊断系统】91.【基于深度学习的蛀牙智能检测与语音提示系统】92.【基于深度学习的皮肤癌智能检测与语音提示系统】93.【基于深度学习的工业压力表智能检测与读数系统】94.【基于深度学习的CT扫描图像肝脏肿瘤智能检测与分析系统】95.【基于深度学习的CT扫描图像脑肿瘤智能检测与分析系统】96.【基于深度学习的甲状腺结节智能检测分割与诊断系统】97.【基于深度学习的车载视角路面病害检测系统】98.【基于深度学习的宫腔镜病变智能检测与语音提示系统】99.【基于深度学习的人群密集检测统计分析与报警系统】100.【基于深度学习的路面积水智能检测分割与分析系统】101.【基于深度学习的钢丝绳缺陷检测与语音提示系统】102.【基于深度学习的无人机视角河道水面垃圾检测系统】103.【基于深度学习的停车场车位智能检测识别系统】104.【基于深度学习的无人机视角野外搜救人员检测与语音提示系统】105.【基于深度学习的无人机视角路面病害检测识别系统】106.【基于深度学习的无人机红外视角海上搜救人员检测与语音提示系统】107.【基于深度学习的交警手势识别系统】108.【基于深度学习的红外图像光伏板热斑缺陷检测与语音提示系统】109.【基于深度学习的风力机缺陷检测与语音提示系统】110.【基于深度学习的茶叶病害智能检测识别系统】111.【基于深度学习的铁轨部件缺陷检测与语音提示系统】112.【基于深度学习的无人机视角车辆检测系统】二、机器学习实战专栏【链接】已更新31期欢迎关注持续更新中~~三、深度学习【Pytorch】专栏【链接】四、【Stable Diffusion绘画系列】专栏【链接】五、YOLOv8改进专栏【链接】持续更新中~~六、YOLO性能对比专栏【链接】持续更新中~《------正文------》目录引言一、CNN统治十年的视觉架构1.1 CNN核心架构解析1.2 CNN的“先天局限”难抓全局特征二、ViT借势NLP的视觉新范式2.1 ViT核心架构拆解三、CNN vs ViT核心差异一次看清四、实战演示用ViT做汽车零部件分类五、ViT的优势与短板优势短板六、总结选CNN还是ViT引言计算机视觉的核心是从图像中提取边缘、纹理、形状等关键信息而它的发展始终围绕“如何更高效地学习图像特征”展开。早期的Sobel算子、Canny边缘检测等方法依赖手工设计的规则难以适配复杂的真实场景SVM、k近邻等机器学习算法虽被引入但仍需人工做特征工程传统人工神经网络ANN面对高清图像时动辄数百万的输入神经元会导致权重参数暴增训练成本高到难以承受。正是在这样的背景下卷积神经网络CNN应运而生并统治了计算机视觉领域十余年。而随着Transformer在自然语言处理NLP领域大获成功能够捕捉全局特征的视觉TransformerViT逐渐成为研究热点。本文将拆解CNN与ViT的核心架构对比两者的关键差异并结合实战案例带你搞懂ViT到底是如何工作的。一、CNN统治十年的视觉架构CNN之所以能成为计算机视觉的“顶流”核心是它能自动学习图像特征且适配高清图像的计算效率。其经典架构可拆解为6个核心层1.1 CNN核心架构解析输入层直接接收原始图像数据以多维数组的形式呈现比如64×64×3的图像对应64宽、64高、3个色彩通道。卷积层CNN的核心所在。通过不同的卷积核过滤器在图像上滑动对局部区域执行卷积操作捕捉边缘、纹理等基础特征。但卷积操作的输出仍是线性的需要激活函数引入非线性。激活层ReLU采用修正线性单元ReLU公式为f(x) max(0, x)能将卷积层输出的负值置零减少无效激活提升网络效率。池化层对激活后的特征图进行降维最常用的是2×2窗口的最大池化Max Pooling。它既能降低计算复杂度又能保留关键特征。全连接层像传统ANN一样将前一层所有神经元与后一层神经元相连整合提取到的所有特征为最终分类做准备。输出层输出图像的分类结果训练过程中会通过损失函数计算预测误差不断优化模型精度。整个过程充分利用图像的空间结构通过“分层特征学习”自动提取有效信息但CNN也有难以回避的短板。1.2 CNN的“先天局限”难抓全局特征CNN的卷积核只能聚焦像素的局部邻域且权重共享机制让同一个卷积核作用于整张图像——这两个特性虽能提升泛化能力却限制了模型捕捉全局特征的能力。简单来说CNN擅长学习局部关联的特征比如相邻像素的边缘但面对需要跨区域关联的全局模式比如图像中“车头”与“车轮”的整体关系学习效率会大打折扣。这种“归纳偏置”在常规视觉任务中是优势但在需要全局关系的场景下反而会拖累性能。二、ViT借势NLP的视觉新范式ViT的核心思路是把NLP中Transformer的核心逻辑迁移到图像领域——将图像拆分成类似“单词”的补丁Patch再通过自注意力机制捕捉全局特征。以224×224像素的图像为例ViT的处理流程如下2.1 ViT核心架构拆解补丁嵌入Patch Embedding先将224×224的图像切分成若干16×16的等大补丁每个补丁如同NLP中的“单词令牌Token”。接着将每个补丁展平为一维向量再通过线性投影层把向量转换成固定长度的D维嵌入向量比如16×16×3的补丁最终会转换成D维向量。位置编码Positional EncodingTransformer本身无法感知补丁在图像中的位置因此需要给每个补丁添加位置嵌入信息。如果缺少这一步模型会把所有补丁当成无序的随机集合无法还原图像的空间结构。Transformer编码器将带位置编码的补丁嵌入序列输入Transformer编码器通过自注意力机制让每个补丁与其他所有补丁建立关联——这也是ViT与CNN最核心的区别ViT从一开始就能捕捉全局特征而非局限于局部。分类令牌CLS Token在补丁序列前添加一个可学习的CLS令牌训练过程中它会通过自注意力聚合所有补丁的信息。最终模型会基于CLS令牌的向量表示通过全连接层完成分类。三、CNN vs ViT核心差异一次看清虽然CNN和ViT都用于图像分类但从输入处理到特征学习两者有着本质区别对比维度卷积神经网络CNN视觉TransformerViT输入表示直接以2D网格形式接收图像将图像切分为固定尺寸的补丁以序列形式输入特征提取卷积核滑动遍历局部区域提取局部特征自注意力机制让所有补丁互相关联捕捉全局特征空间信息处理天生保留图像的空间结构需额外添加位置编码才能感知补丁位置特征学习范围侧重局部特征捕捉长距离依赖难度大从底层开始学习全局特征长距离依赖捕捉更高效非线性变换卷积后通过ReLU等激活函数引入非线性依赖Transformer编码器块完成非线性变换降维策略靠池化层如最大池化降低特征图空间维度提前将图像切分为补丁从源头控制输入维度分类逻辑全连接层整合所有特征后完成分类借助CLS令牌聚合补丁信息基于令牌向量分类归纳偏置强归纳偏置局部性权重共享泛化性好弱归纳偏置无局部/权重共享假设灵活性更高上下文建模难以捕捉整幅图像的全局上下文擅长捕捉图像的长距离依赖与全局上下文四、实战演示用ViT做汽车零部件分类我们基于PyTorch的TorchVision库使用预训练的ViT-B/16模型完成汽车零部件分类任务数据集包含40类汽车零部件核心流程如下数据预处理对输入图像做标准化、尺寸调整等操作适配ViT的输入要求模型加载与适配加载预训练的ViT-B/16模型微调分类层以适配40类分类任务训练与验证以交叉熵损失函数CrossEntropyLoss为优化目标训练过程中模型展现出高准确率和良好的泛化能力预测验证将新图像输入训练好的模型能输出前5类高概率的汽车零部件预测结果。这一实战验证了ViT的核心优势通过自注意力机制捕捉图像补丁间的关联能高效完成复杂的图像分类任务。五、ViT的优势与短板优势全局特征捕捉能力强自注意力机制让模型能直接学习图像各区域的长距离依赖适合需要全局上下文的任务迁移性好预训练的ViT模型只需简单微调就能适配不同的图像分类数据集灵活性高弱归纳偏置让模型能学习更复杂的模式在大数据集下性能优势明显。短板计算成本高Transformer架构的计算复杂度远高于CNN训练和推理都需要更强的GPU资源数据依赖大小数据集下ViT的性能不如优化成熟的CNNCNN的强归纳偏置更适配小数据场景。六、总结选CNN还是ViTCNN和ViT并非“非此即彼”的关系若你的任务数据量小、计算资源有限或侧重局部特征提取如简单的目标检测、边缘识别CNN仍是高效且稳定的选择若你的任务需要全局特征、数据量充足且有足够的计算资源ViT能发挥出更强的性能。从CNN到ViT计算机视觉的发展本质是“打破局部限制拥抱全局特征”。两种架构各有适配场景理解它们的核心差异才能根据实际需求选择最合适的模型——这也是掌握现代计算机视觉的关键。好了这篇文章就介绍到这里喜欢的小伙伴感谢给点个赞和关注更多精彩内容持续更新~~关于本篇文章大家有任何建议或意见欢迎在评论区留言交流