1. 从“炼丹”到“选丹”:为什么你需要一份SOTA模型清单
在计算机视觉这个领域待久了,尤其是带过新人或者自己上手新项目时,最常听到的抱怨是什么?不是算力不够,也不是数据难找,而是“模型太多了,我该用哪个?”。
这感觉就像走进一个巨大的中药铺,墙上密密麻麻全是抽屉,每个抽屉里都装着号称能“包治百病”的灵丹妙药。你明知道里面肯定有能解决你问题的方子,但面对成百上千个名字,从AlexNet、VGG到ResNet、DenseNet,再到Swin Transformer、ConvNeXt,还有YOLO系列、DETR系列、Mask R-CNN……新手直接懵圈,老手也得花时间回忆和对比。更头疼的是,这些模型还在以惊人的速度迭代,今天刚熟悉一个,明天可能就有个“某某改进版”在arXiv上挂着预印本。
这就是为什么一份精心整理的、覆盖主流任务的SOTA模型清单,其价值远超一份简单的列表。它不是一个冰冷的目录,而是一张帮你快速定位、理解并做出技术选型的“寻宝图”。对于学生,它能帮你快速了解领域脉络,找到复现和学习的标杆;对于工程师,它能让你在项目启动时,跳过漫无目的的文献调研,直接聚焦于几个最有可能的候选模型,节省大量前期时间。
我花了相当长的时间,结合最新的论文、主流开源框架(如PyTorch的TorchVision、MMDetection、Detectron2、Hugging Face Transformers)的官方支持情况,以及工业界的实际落地反馈,梳理出了这份涵盖197个经典与前沿SOTA模型的清单。它主要覆盖图像分类、目标检测、图像分割(语义/实例)、关键点检测、图像生成等核心方向。这份清单的价值不在于“全”,而在于“精”和“准”——每个入选的模型,都是在特定时期、特定任务上定义了“State-of-the-Art”(最先进水平)的里程碑式工作,并且大多有高质量的开源实现和预训练权重。
接下来,我不会仅仅是把这197个名字罗列出来,那没有意义。我将以任务为维度,带你深入每个方向的技术演进脉络,剖析关键模型的“为什么”和“怎么选”,并分享在实际项目中应用这些模型时,那些论文里不会写的实操心得和避坑指南。
2. 图像分类:从“特征工程”到“架构搜索”的进化史
图像分类是计算机视觉的基石任务,也是模型创新的主战场。这份清单中,图像分类模型占了相当大的比重。理解它们的演进,几乎就理解了近十年深度学习在视觉领域的发展逻辑。
2.1 卷积神经网络(CNN)的黄金时代:深度、宽度与捷径
早期的突破源于AlexNet(2012),它用ReLU、Dropout和GPU训练证明了深度卷积网络的有效性。但随后大家发现,单纯堆叠层数(如VGGNet)会导致梯度消失/爆炸,网络变得难以训练。
ResNet(残差网络)的出现是革命性的。它的核心思想“恒等快捷连接”(Identity Shortcut)解决了深度网络的退化问题。为什么这个简单的“跳连”如此有效?从理论上讲,它让网络可以学习残差函数F(x) = H(x) - x,而不是直接学习复杂的底层映射H(x)。这使得优化器更容易将层推向恒等映射,从而稳定了深度网络的训练。在实际操作中,ResNet的各个变体(ResNet-18, 34, 50, 101, 152)至今仍是特征提取的默认骨干网络(Backbone)之一。一个重要的实操细节是:PyTorch官方torchvision.models中的ResNet默认使用“BasicBlock”(用于较浅的18/34层)和“BottleneckBlock”(用于更深的50/101/152层)。Bottleneck结构用1x1卷积先降维再升维,在保证感受野的同时大幅减少了参数量和计算量。
注意:使用预训练的ResNet时,务必注意其输入图像归一化参数。
torchvision的ResNet预训练权重通常使用ImageNet的统计量:均值[0.485, 0.456, 0.406],标准差[0.229, 0.224, 0.225]。如果你的数据分布差异巨大,直接使用可能导致性能下降,建议进行适当的域适应或重新归一化。
紧随其后的是DenseNet,它提出了更极端的连接方式:每一层都接收前面所有层的特征图作为输入。这种设计鼓励了特征重用,大幅减少了参数量,并缓解了梯度消失。但在实际部署中,密集连接会带来巨大的内存消耗,因为需要拼接(Concatenate)大量特征图。在移动端或边缘设备上,需要谨慎使用或进行模型压缩。
EfficientNet系列则代表了另一种设计哲学:复合缩放(Compound Scaling)。它的作者系统地研究了网络宽度(通道数)、深度(层数)和分辨率(输入图像大小)之间的平衡关系,并通过神经架构搜索(NAS)找到了最优的缩放系数。EfficientNet-B0到B7提供了从轻量到高精度的一系列模型。在实际项目中,如果你的资源(算力、内存)受限,EfficientNet通常是比盲目缩放ResNet更优的选择。例如,EfficientNet-B3通常在精度和速度上能取得比ResNet-50更好的平衡。
2.2 Vision Transformer的横空出世与混合架构的崛起
2020年,Vision Transformer(ViT)将自然语言处理中大获成功的Transformer架构引入图像领域,它将图像分割为固定大小的图块(Patch),然后将其线性嵌入为一序列“词向量”,送入标准的Transformer编码器。ViT的核心优势在于其强大的全局建模能力和可扩展性——模型越大,数据越多,性能往往越好。但它有两个显著缺点:1) 需要海量数据(如JFT-300M)进行预训练才能发挥优势;2) 计算复杂度与图像序列长度的平方成正比,对高分辨率图像不友好。
为了克服这些缺点,一系列改进工作涌现,并占据了清单中的重要位置:
- Swin Transformer:引入了“滑动窗口”和“层级化设计”,让计算限制在局部窗口内,同时通过移动窗口实现跨窗口连接,并像CNN一样构建特征金字塔。这使得Swin Transformer既能拥有Transformer的全局建模能力,又具备了CNN的线性计算复杂度和多尺度特征,迅速成为下游任务(如检测、分割)的热门骨干网络。
- ConvNeXt:这篇文章反思了“Transformer一定比CNN先进吗?”的问题。作者通过“现代化”一个标准的ResNet,逐步引入ViT/Swin Transformer中的设计理念(如更大的卷积核、更少的激活函数、更少的归一化层、分离的下采样层等),最终得到的纯CNN架构ConvNeXt,在多个基准上媲美甚至超越了Swin Transformer。它的意义在于揭示了架构设计中的许多最佳实践是共通的,并且纯CNN模型经过精心设计后依然极具竞争力。
如何选择?这里有一个简单的决策流:
- 资源极度受限(移动端):优先考虑经过优化的轻量级CNN,如MobileNetV3、ShuffleNetV2,或EfficientNet-Lite。
- 通用服务器端,追求精度与速度平衡:ResNet-50/101、EfficientNet-B4/B5、ConvNeXt-T/S 是经过充分验证的可靠选择。
- 拥有大量数据,追求极致精度:大规模预训练的ViT-Huge、Swin Transformer-Large、ConvNeXt-XL 是SOTA的有力竞争者。
- 作为下游任务(检测、分割)的骨干网络:Swin Transformer、ConvNeXt 和 ResNet 系列是目前最主流和受框架支持最好的选择,需要根据任务特性(是否需要多尺度特征、对计算量的敏感度)进行选择。
2.3 图像分类实战中的“暗坑”与调优技巧
论文里报告的Top-1 Accuracy很美好,但当你把预训练模型用到自己的数据集上时,常常会发现效果大打折扣。除了数据本身的问题,以下是一些常被忽略的调优点:
1. 学习率策略与优化器选择:
- 迁移学习时,骨干网络和分类头应使用不同的学习率。骨干网络通常使用较小的学习率(如基础学习率的0.1倍)进行微调,以防止破坏预训练好的特征;而新添加的分类头可以使用较大的学习率快速学习。
- AdamW正在取代Adam成为默认选择。AdamW将权重衰减(Weight Decay)从梯度更新中解耦出来,实现了真正的L2正则化,通常能带来更稳定的训练和更好的泛化性能。在PyTorch中,使用
torch.optim.AdamW并设置weight_decay参数(常用1e-4或5e-2,取决于任务)。
2. 数据增强的“过犹不及”:
- AutoAugment、RandAugment等自动增强策略在大型数据集上效果显著,但在小型数据集上可能因过度增强而引入噪声,导致模型难以学习。对于小数据集,建议从基础的随机裁剪、水平翻转开始,谨慎添加颜色抖动、CutMix、MixUp等增强。
- 一个关键技巧:验证集不应使用训练时的随机增强。验证和测试时,通常只进行中心裁剪或缩放到固定尺寸,然后归一化,以保证评估的一致性。
3. 标签平滑(Label Smoothing):
- 这是分类任务中一个简单却极其有效的正则化技术。它将硬标签(如one-hot的[0, 0, 1, 0])替换为软标签(如[0.01, 0.01, 0.97, 0.01])。这防止了模型对训练标签过于自信,减轻过拟合,通常能提升模型在未知数据上的泛化能力。在PyTorch的CrossEntropyLoss中,可以通过
label_smoothing参数直接启用。
3. 目标检测:从“两阶段”到“端到端”的范式迁移
目标检测的任务是定位(找出来在哪)并识别(是什么)图像中的所有感兴趣物体。这份清单中的检测模型,清晰地反映了该领域从两阶段(Two-Stage)到一阶段(One-Stage),再到基于Transformer的端到端(End-to-End)范式的演变。
3.1 两阶段检测器的精度标杆:R-CNN家族
两阶段检测器的核心思想是“先候选,后分类”。以Faster R-CNN为例,其流程是:
- 区域提议网络(RPN):在第一阶段,RPN扫描图像,生成一系列可能包含物体的候选区域(Region Proposals),这些区域不是穷举的滑动窗口,而是通过锚框(Anchor Boxes)和网络预测偏移量得到的,质量更高。
- 区域兴趣池化(RoI Pooling / RoI Align):将每个候选区域映射到骨干网络输出的特征图上,并池化成固定大小的特征块。
- 分类与回归头:第二阶段,对这些固定大小的特征块进行分类(是什么物体)和边界框回归(微调位置)。
Faster R-CNN的精度高,但速度相对慢。Mask R-CNN在其基础上增加了一个并行的掩码预测分支,用于实例分割,成为了实例分割任务的奠基性工作。
实操中的关键点:锚框(Anchor)设计。锚框是一组预定义的大小和宽高比(如[0.5, 1, 2]三种比例,[32, 64, 128, 256, 512]五种尺度),作为物体大小的先验。如果你的数据集中物体尺度分布特殊(如都是小目标或超大目标),默认的锚框设置会严重影响RPN的性能。你需要根据数据集的统计信息(使用k-means聚类分析标注框的宽高)来重新设计锚框的尺度和比例。
3.2 一阶段检测器的速度革命:YOLO与SSD
一阶段检测器摒弃了独立的区域提议阶段,直接在网络输出层对密集的锚点进行类别和位置预测,实现了速度的飞跃。
YOLO系列是其中的典型代表,其思想是“将检测视为回归问题”。YOLOv1将图像划分为SxS的网格,每个网格预测B个边界框和置信度。发展至今,YOLOv5/v8等版本已经非常成熟,它们集成了大量现代CNN的最佳实践(如CSPNet结构、SPPF模块、自适应锚框计算、Mosaic数据增强等),在速度和精度上取得了极佳的平衡,成为工业界部署的热门选择。
SSD则是在多个不同尺度的特征图上进行预测,以更好地处理不同大小的物体。它在速度和精度之间也取得了很好的平衡。
一阶段检测器的部署优势与调优难点:
- 优势:结构简单,推理速度快,易于部署到移动端和边缘设备。
- 难点:正负样本极度不平衡。一张图中可能只有几个物体,但会产生成千上万个锚点预测,其中绝大部分是背景(负样本)。这会导致训练被简单的负样本主导。解决方案包括:
- Focal Loss:RetinaNet提出的损失函数,通过降低易分类样本的权重,让模型更关注难分类的样本。
- 在线难例挖掘(OHEM):只选取损失最大的那些负样本来参与训练。
3.3 DETR与端到端检测的新范式
DETR是检测领域的一个范式突破。它使用标准的Transformer编码器-解码器架构,将一组可学习的物体查询(Object Queries)作为输入,直接输出一组无序的预测结果(类别+边界框)。它完全消除了对锚框、非极大值抑制(NMS)等手工设计组件的依赖,实现了真正的端到端检测。
DETR的亮点与痛点:
- 亮点:架构简洁优雅,避免了NMS带来的后处理复杂度;对大物体和遮挡场景的检测效果通常更好。
- 痛点:
- 训练收敛慢:需要更长的训练周期(如500 epoch)。
- 小目标检测性能弱:Transformer全局注意力机制对高分辨率特征图的计算开销大,DETR通常使用较低分辨率的特征图,导致小目标信息丢失。
- 查询数固定:预设的物体查询数量(通常为100)限制了其一次性检测大量物体的能力。
后续的改进工作,如Deformable DETR,引入了可变形注意力模块,让每个查询只关注特征图上的一小部分关键采样点,而不是全局,大幅加快了收敛速度并提升了对小目标的检测性能。这些模型都在清单中占据重要位置。
如何选择检测模型?
| 场景需求 | 推荐模型类型 | 具体模型举例 | 理由 |
|---|---|---|---|
| 工业实时检测(如视频流) | 一阶段检测器 | YOLOv8, YOLO-NAS, PP-YOLOE | 推理速度极快,精度满足大部分工业场景,部署生态成熟。 |
| 学术研究或高精度需求(如自动驾驶) | 两阶段或改进型端到端 | Faster R-CNN, Cascade R-CNN, Deformable DETR | 精度更高,模型更鲁棒,适合对误检漏检要求严苛的场景。 |
| 需要实例分割 | 两阶段扩展模型 | Mask R-CNN, Cascade Mask R-CNN | 天然扩展自检测框架,掩码预测精度高。 |
| 追求最新架构,数据充足 | 端到端Transformer | DETR, Deformable DETR, DINO | 代表前沿方向,避免手工组件,长期来看架构更优。 |
4. 超越分类与检测:分割、生成与关键点模型精选
清单中的模型远不止分类和检测,它们共同构成了解决复杂视觉问题的工具箱。
4.1 图像分割:理解像素级语义
图像分割分为语义分割(为每个像素分类)和实例分割(区分不同个体)。
- 语义分割的里程碑:FCN首次用全卷积网络实现端到端分割。U-Net凭借其经典的编码器-解码器结构和跳跃连接,在生物医学图像分割中成为事实标准。DeepLab系列(v3+, v3)通过空洞卷积(Atrous Conv)和空间金字塔池化(ASPP)来捕获多尺度上下文信息,是通用场景语义分割的强基准。
- 实例分割的佼佼者:如前所述,Mask R-CNN是开创者。YOLACT和SOLO系列则尝试用一阶段的方式做实例分割,速度更快。
分割任务的核心挑战与技巧: 挑战在于如何平衡局部细节(边缘清晰度)和全局上下文(物体类别一致性)。U-Net的跳跃连接解决了局部细节恢复的问题。DeepLab的ASPP和空洞卷积则在保持特征图分辨率的同时,扩大了感受野来获取上下文。 一个实用的技巧是:在训练分割模型时,使用预训练的检测或分类模型作为编码器(骨干网络),可以大幅加速收敛并提升性能。例如,使用在ImageNet上预训练的ResNet-101作为DeepLabv3+的骨干。
4.2 图像生成:从GAN到扩散模型
图像生成领域经历了从生成对抗网络到扩散模型的范式转移。
- GAN时代:StyleGAN系列是生成高质量、可控人脸图像的巅峰之作。其通过风格向量在不同分辨率上控制生成特征,实现了对姿态、发型、光照等属性的解耦编辑。但GAN存在训练不稳定、模式崩溃等问题。
- 扩散模型时代:Stable Diffusion是当前的开源王者。它通过在潜在空间(Latent Space)进行扩散,极大降低了计算成本。其“文本编码器-扩散模型-图像解码器”的架构,使得通过自然语言提示(Prompt)控制图像生成成为可能。DALL-E 2和Imagen则是闭源模型中的杰出代表。
使用生成模型的注意事项:
- 计算资源:训练扩散模型需要大量的GPU内存和时间。对于大多数开发者,微调(Fine-tuning)或使用LoRA等参数高效微调技术是更可行的方案。
- 提示工程:对于Stable Diffusion,生成质量极大程度依赖于提示词。学习编写详细、结构化的提示词(包括主体、细节、风格、画质、负面提示)是一项必备技能。
- 伦理与版权:生成模型可能产生侵犯版权、包含偏见或有害内容的结果。在实际应用中必须建立内容审核机制。
4.3 关键点检测:从人体姿态到任意物体
关键点检测用于定位物体的特征点,如人体的关节、人脸的五官、汽车的角点。
- 自顶向下方法:先检测物体实例(如人),然后在每个实例的边界框内检测关键点。代表工作是HRNet,它始终保持高分辨率特征表示,通过并行多分辨率子网并反复进行信息交换,预测的关键点更精准,尤其在姿态估计中表现出色。
- 自底向上方法:先检测图像中所有关键点,然后通过分组算法将它们关联到不同的实例。如OpenPose,它能实现实时多人姿态估计。
关键点检测的评估与调优: 常用评估指标是对象关键点相似度(OKS)基础上的平均精度(AP)。调优时,除了模型本身,数据增强至关重要。针对姿态估计,合理的随机旋转、缩放、裁剪(要保证人体在框内)以及关键点遮挡模拟(随机丢弃部分关键点标签)能显著提升模型的鲁棒性。对于人脸关键点,则需要注意左右对称性的增强。
5. 模型清单的使用心法与实战部署指南
拥有这份清单只是第一步,如何让它为你所用才是关键。下面分享一些从项目实践中总结的心得。
5.1 如何高效“食用”这份模型清单
- 按图索骥,明确需求:首先确定你的核心任务(分类、检测、分割等),然后根据清单定位到该任务下的模型家族。不要试图通读所有197个模型的论文,那是徒劳的。
- 精读里程碑,泛读改进型:对于每个方向,精读1-2篇开创性或定义性的论文(如ResNet, Faster R-CNN, Transformer, StyleGAN)。对于后续的改进型工作,重点阅读其摘要、引言和核心方法图,理解它解决了前作的什么问题,用了什么核心技巧。
- 代码与论文对照:找到该模型官方或高星的开源实现(如GitHub上的MMDetection, Detectron2, 官方PyTorch实现)。边读论文边看代码,是理解模型细节最有效的方式。重点关注数据流如何转换、核心模块如何实现。
- 利用模型库快速实验:使用像PyTorch Image Models (timm)、MMCV、Hugging Face
transformers这样的高级库,它们提供了统一的接口加载预训练模型,让你能在几分钟内跑起一个基准测试,快速验证模型在你的数据上的潜力。
5.2 从Paper到Production:模型部署的务实考量
在学术论文里跑分很高的模型,到了生产环境可能寸步难行。部署时需要考虑以下几个维度:
- 延迟与吞吐量:模型推理需要多快?是处理单张图片(关注延迟)还是处理视频流(关注吞吐量)?使用TensorRT、OpenVINO、ONNX Runtime等推理优化框架,可以对模型进行图优化、层融合、量化(INT8),在不损失太多精度的情况下大幅提升推理速度。一个经验法则:在GPU上,卷积操作高度优化,CNN模型通常比同等精度的ViT模型更快;但在经过特定优化的AI芯片上,情况可能不同。
- 内存与功耗:模型参数有多大?运行时占用多少显存/内存?这对于移动端和嵌入式设备至关重要。可以考虑使用模型剪枝、知识蒸馏等技术来压缩模型。
- 框架与生态:模型是否容易集成到现有的服务框架中?是否支持所需的硬件?
torchscript、ONNX是通用的模型交换格式,但某些自定义算子可能需要额外实现。
部署流程建议:
- 原型验证:在PyTorch/TensorFlow中训练并验证模型精度。
- 格式转换:将模型导出为
ONNX格式。注意检查算子支持情况,可能需要对模型中的某些操作(如动态切片、自定义激活函数)进行重写以兼容ONNX。 - 推理优化:使用TensorRT等工具加载ONNX模型,进行FP16或INT8量化,生成优化后的引擎。
- 服务化:使用Triton Inference Server、TensorFlow Serving或简单的Flask/FastAPI封装优化后的引擎,提供API服务。
5.3 持续学习:如何跟踪SOTA的进化
这份197个模型的清单是静态的,但SOTA是动态的。保持前沿嗅觉的方法:
- 关注顶级会议:CVPR, ICCV, ECCV, NeurIPS, ICML 是计算机视觉和机器学习最新成果的集中发布地。关注它们的官方论文集网站。
- 善用聚合平台:Papers With Code 网站将论文、代码、排行榜(Leaderboard)结合在一起,是追踪各任务SOTA最直观的工具。
- 订阅arXiv:关注
cs.CV类别,每天都有大量新论文预印本发布。可以使用arxiv-sanity等工具进行筛选。 - 参与社区:GitHub, Reddit (r/MachineLearning), 知乎、专业博客等社区,经常有研究者对重要论文进行解读和讨论。
最后,我想说的是,模型是工具,而不是目的。这份清单的价值,在于当你面对一个具体的视觉问题时,它能帮你迅速缩小搜索范围,找到那把最合适的“锤子”。但真正解决问题的,永远是你对问题本身的理解、对数据的处理能力以及将模型与业务逻辑结合起来的工程实践。不要陷入“追逐最新SOTA”的焦虑中,最适合的,往往不是最前沿的,而是最稳定、最可控、最能满足你项目约束的那一个。在实际项目中,一个经过充分调优的ResNet-50,其价值可能远大于一个你无法驾驭的、最新的大型视觉Transformer。