计算机视觉
让计算机「看懂」世界 — 从图像分类到生成式视觉模型。
概述
计算机视觉(Computer Vision, CV)研究如何让计算机从图像和视频中获取高层次的理解。它是深度学习最成功的应用领域之一。
计算机视觉的主要任务层次:
- 低层视觉:图像增强、去噪、超分辨率
- 中层视觉:特征提取、边缘检测、关键点检测
- 高层视觉:分类、检测、分割、理解
图像基础
数字图像在计算机中以数值矩阵形式存储:
- 灰度图:单通道,每个像素值 0~255 表示亮度
- 彩色图(RGB):三通道(红、绿、蓝),每通道 0~255
- 图像尺寸:宽 × 高 × 通道数,如 224×224×3
常见预处理操作
- 缩放(Resize):统一输入尺寸
- 裁剪(Crop):随机或中心裁剪
- 归一化(Normalize):将像素值缩放到标准范围
- 数据增强:翻转、旋转、颜色抖动等
图像分类
给定一张图像,判断它属于哪个类别。这是 CV 最基础的任务。
发展历程
| 模型 | 年份 | ImageNet Top-5 错误率 | 创新点 |
|---|---|---|---|
| AlexNet | 2012 | 15.3% | 深度学习复兴 |
| VGG | 2014 | 7.3% | 小卷积核堆叠 |
| ResNet | 2015 | 3.6% | 残差连接 |
| EfficientNet | 2019 | 2.9% | 复合缩放 |
| ViT | 2020 | 2.9% | Transformer 用于视觉 |
目标检测
在图像中定位并识别多个物体,输出边界框和类别标签。
两阶段检测器
- R-CNN → Fast R-CNN → Faster R-CNN:先生成候选区域,再分类
- 精度高,速度相对较慢
单阶段检测器
- YOLO 系列:You Only Look Once,实时检测
- SSD:Single Shot Detector,多尺度检测
- 速度快,适合实时应用
✅ 选型建议
实时场景(自动驾驶、安防监控)选 YOLO;精度优先场景(医学影像)选 Faster R-CNN 或 DETR。
图像分割
对图像中每个像素进行分类,实现精细化的场景理解。
- 语义分割:区分不同类别(人、车、路),不区分个体
- 实例分割:区分不同类别的每个独立实例
- 全景分割:统一语义分割和实例分割
经典模型:U-Net(医学影像)、Mask R-CNN(实例分割)、Segment Anything(SAM)
生成式视觉模型
近年来,生成式 AI 在视觉领域取得了惊人进展:
扩散模型(Diffusion Models)
通过逐步去噪过程生成图像,代表模型 Stable Diffusion、DALL·E 3、Midjourney。
多模态模型
统一理解和生成多种模态(文本、图像、视频):
- GPT-4V:理解图像内容并回答相关问题
- CLIP:连接文本和图像的表示空间
- Sora:文本到视频生成
代码实战:图像分类
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%}")