00计算机视觉初识

alex
1
2026-01-09

一、学习路线

计算机视觉学习路线.png

二、必学模型

核心思想—览表:在深入了解细节前,你可以先快速把握它们最核心的差异:

特性

ResNet (2015)

YOLO (2016)

ViT (2020)

核心任务

图像分类 (是什么?)

目标检测 (是什么?在哪里?)

图像分类 (是什么?)

开创性思想

残差连接:解决网络退化,让训练成百上千层的网络成为可能。

端到端回归:将检测视为单次网格回归,速度极快。

纯Transformer:将图像拆分为序列化的图像块进行处理。

网络结构

极深的卷积神经网络 (CNN)

高效的CNN骨干网络 + 检测头

Transformer编码器 (无CNN)

最大特点

深度极深,性能稳定

“You Only Look Once”,速度飞快

全局注意力,擅长捕捉长程依赖

类比理解

不断加深的研究:通过“捷径”让超深网络不迷失。

高效的流水线质检员:看一眼图片就报出所有目标和位置。

打破视觉惯性:用处理语言(文本序列)的方式处理图像。

1、ResNet

ResNet:深度学习的“高速公路”

ResNet要解决的根本问题是:网络越深,效果反而越差吗? 答案是否定的,但需要一种机制来保证。

  • 核心问题:传统的CNN随着层数加深,会出现梯度消失/爆炸网络退化问题。网络不是学不到,而是难以优化。

  • 天才方案残差块快捷连接

    • 残差学习:不让网络直接学习目标映射 H(x),而是学习残差 F(x) = H(x) - x

    • 快捷连接:通过一条“捷径”,将输入 x 直接加到经过几层卷积后的输出 F(x) 上,最终输出为 F(x) + x

    • 直观理解:如果更深的层学不到新东西,这个“捷径”可以轻松地将网络退化成较浅的版本,至少保证性能不下降。这使得网络可以安全地堆叠到极深(如ResNet-152有152层)。

  • 入门建议

    • 重点理解残差块的结构图和公式 y = F(x, {Wi}) + x

    • 在PyTorch中尝试调用 torchvision.models.resnet18(),看看它的层结构。

    • 应用:几乎所有视觉任务的特征提取骨干网络

2、YOLO

YOLO:目标检测的“闪电侠”

YOLO要解决的痛点是:此前的检测模型(如R-CNN系列)速度慢、步骤多。YOLO提出了一种全新的思路。

  • 核心思想端到端,一次看完

    • 将输入图像划分为 S x S 的网格。

    • 每个网格负责预测:中心落在该网格内的物体的边界框(x, y, w, h)、置信度以及类别概率。

    • 整个检测过程只需要一次前向传播,速度可比实时(FPS > 30)。

  • 工作流程 (以YOLOv1为例):

    1. 划分网格:将图片分成 7x7 网格。

    2. 每个网格预测:每个网格预测 B 个边界框和 C 个类别概率。

    3. 后处理:通过非极大值抑制(NMS)过滤掉重复和低置信度的预测框。

  • 入门建议

    • 重点理解“网格预测”的直观思想。可以想象成让每个网格单元都成为一个“小检测器”。

    • 从YOLOv5/v8入手:它们生态完善,文档友好。直接去GitHub下载 Ultralytics YOLOv8,用其预训练模型跑一下图片或视频检测,感受其速度。

    • 记住关键改进:后续版本在骨干网络、特征金字塔(FPN)、损失函数上持续优化,但“一次看完”的核心思想未变。

3、ViT:Vision Transformer

ViT:Transformer的“视觉入侵者”

ViT要回答一个颠覆性问题:计算机视觉必须依赖CNN吗? 它用Transformer在图像分类任务上给出了否定答案。

  • 核心思想图像即序列

    • 图像分块:将一张图像切割成固定大小(如16x16像素)的图像块

    • 线性映射:将每个图像块展平,并通过一个线性层映射为特征向量(类似NLP中的词嵌入)。

    • 加入位置编码:因为Transformer本身没有空间位置概念,所以需要为每个图像块添加位置编码,以保留其空间信息。

    • 送入Transformer编码器:将这些带位置信息的向量序列输入一个标准的Transformer编码器(多头自注意力机制 + 前馈网络)进行处理。

    • 分类头:取第一个特殊标记([class] token)对应的输出,用于最终的图像分类。

  • 入门建议

    • 重点理解“图像分块”和“位置编码”这两个将图像适配到Transformer的关键步骤。

    • 将ViT的流程与BERT处理句子的流程进行对比,你会发现惊人的相似性。

    • 注意局限性:ViT在大规模数据集(如ImageNet-21K)上预训练后才能发挥巨大威力,在小数据集上可能不如精心设计的CNN。

三、学习路径建议

  1. 动手顺序ResNet -> YOLO -> ViT。这个顺序符合从基础到前沿、从理解到应用的学习曲线。

  2. 实践为王

    • ResNet:在CIFAR-10小数据集上,尝试复现一个简化的ResNet(如20层),并与普通CNN对比。

    • YOLO:务必使用官方代码和预训练模型,在你自己拍的图片或视频上跑一跑检测,这是建立成就感最快的方式。

    • ViT:在Hugging Face的 transformers 库中,调用 ViTForImageClassification 模型,体验其使用方式。

  3. 建立联系:思考ViT的注意力图能否解释模型关注了图像的哪部分?这和你做NLP的可解释性分析是相通的。

动物装饰