计算机视觉

让计算机「看懂」世界 — 从图像分类到生成式视觉模型。

概述

计算机视觉(Computer Vision, CV)研究如何让计算机从图像和视频中获取高层次的理解。它是深度学习最成功的应用领域之一。

计算机视觉的主要任务层次:

图像基础

数字图像在计算机中以数值矩阵形式存储:

常见预处理操作

图像分类

给定一张图像,判断它属于哪个类别。这是 CV 最基础的任务。

发展历程

模型年份ImageNet Top-5 错误率创新点
AlexNet201215.3%深度学习复兴
VGG20147.3%小卷积核堆叠
ResNet20153.6%残差连接
EfficientNet20192.9%复合缩放
ViT20202.9%Transformer 用于视觉

目标检测

在图像中定位并识别多个物体,输出边界框和类别标签。

两阶段检测器

单阶段检测器

✅ 选型建议

实时场景(自动驾驶、安防监控)选 YOLO;精度优先场景(医学影像)选 Faster R-CNN 或 DETR。

图像分割

对图像中每个像素进行分类,实现精细化的场景理解。

经典模型:U-Net(医学影像)、Mask R-CNN(实例分割)、Segment Anything(SAM)

生成式视觉模型

近年来,生成式 AI 在视觉领域取得了惊人进展:

扩散模型(Diffusion Models)

通过逐步去噪过程生成图像,代表模型 Stable Diffusion、DALL·E 3、Midjourney。

多模态模型

统一理解和生成多种模态(文本、图像、视频):

代码实战:图像分类

Python · PyTorch
import torch
from torchvision import models, transforms
from PIL import Image

# 加载预训练 ResNet 模型
model = models.resnet50(weights=models.ResNet50_Weights.DEFAULT)
model.eval()

# 图像预处理
preprocess = transforms.Compose([
    transforms.Resize(256),
    transforms.CenterCrop(224),
    transforms.ToTensor(),
    transforms.Normalize(
        mean=[0.485, 0.456, 0.406],
        std=[0.229, 0.224, 0.225]
    )
])

# 加载并预测
image = Image.open("photo.jpg")
input_tensor = preprocess(image).unsqueeze(0)

with torch.no_grad():
    output = model(input_tensor)
    probabilities = torch.nn.functional.softmax(output[0], dim=0)

# 获取 Top-5 预测结果
top5_prob, top5_idx = torch.topk(probabilities, 5)
for i in range(5):
    print(f"类别 {top5_idx[i]}: {top5_prob[i]:.2%}")