应用领域:计算机视觉的三大核心任务
基于卷积神经网络 (CNN) 的强大能力,深度学习在计算机视觉领域催生了三大核心应用方向,它们从不同层次上解决了“看懂图片”的问题。
图像分类 (Image Classification)
任务目标:回答“这张图片里有什么?”。给定一张图片,模型需要输出一个单一的标签来描述图片的主要内容(例如,“猫”、“狗”、“汽车”)。这是计算机视觉中最基础、最核心的任务。
预测: 猫
from tensorflow import keras
from keras import layers
# 典型的分类模型结构
model = keras.Sequential([
# ... 一系列的卷积和池化层 ...
layers.Conv2D(32, 3, activation='relu'),
layers.MaxPooling2D(),
layers.Flatten(),
# ... 全连接层 ...
layers.Dense(128, activation='relu'),
# 输出层,使用 softmax 进行多分类
layers.Dense(10, activation='softmax')
])
目标检测 (Object Detection)
任务目标:回答“图片里的东西分别是什么?它们在哪里?”。目标检测不仅要识别出图片中的多个物体,还要用一个矩形的边界框 (Bounding Box) 把它们的位置标出来。
预测: 狗, [x, y, w, h]
# 目标检测模型更复杂
# 通常包含一个用于特征提取的骨干网络 (Backbone)
# 和用于预测边界框与类别的头部网络 (Head)
# 经典算法:
# - R-CNN, Fast R-CNN, Faster R-CNN
# - YOLO (You Only Look Once)
# - SSD (Single Shot MultiBox Detector)
# model = build_yolo_model()
# model.fit(X_train, y_train)
# predictions = model.predict(new_image)
# # predictions 会包含每个物体的 [类别, 置信度, x, y, w, h]
图像分割 (Image Segmentation)
任务目标:回答“图片中每个像素属于哪个物体?”。这是最精细的图像理解任务,它要求模型对图像中的每一个像素进行分类,从而实现像素级的区域划分。这在自动驾驶(识别道路)、医学影像分析(识别病灶)等领域至关重要。
预测: 像素级掩码
# 图像分割模型通常采用编码器-解码器结构
# 编码器 (Encoder) 提取特征
# 解码器 (Decoder) 恢复分辨率并进行像素级分类
# 经典算法:
# - FCN (Fully Convolutional Network)
# - U-Net
# - DeepLab
# model = build_unet_model()
# model.fit(X_train, y_train_masks)
# predicted_mask = model.predict(new_image)
# # predicted_mask 的尺寸与原图相同
# # 每个像素的值代表其所属的类别