
1. 计算机视觉任务的四个关键层级第一次接触计算机视觉时很多人都会被各种专业术语搞晕——分类、检测、分割这些任务到底有什么区别为什么需要这么多不同的技术其实这就像我们人类认识世界的过程先知道是什么再确定在哪里最后搞清楚具体长什么样。想象你走进一家宠物店视觉系统的工作流程是这样的首先判断店内是否有动物分类然后找到猫咪在哪个货架检测接着识别出猫咪的轮廓语义分割最终区分出三只不同的橘猫实例分割。这四个任务环环相扣解决的问题越来越精细。2. 图像分类视觉理解的起点2.1 什么是图像分类图像分类就像给照片贴标签是计算机视觉中最基础的任务。它的目标很简单告诉计算机这张图片里主要是什么。比如输入一张猫的照片系统输出猫这个类别。这相当于回答了最基础的是什么的问题。我最早做分类项目时训练了一个识别花卉的模型。当时遇到的最大挑战是同一类花在不同光照条件下差异很大。后来通过数据增强随机调整亮度、旋转角度才解决这个问题。分类任务的核心指标是准确率好的模型在ImageNet这样包含1000类的数据集上能达到90%以上的top-5准确率。2.2 分类任务的实现方式常见的分类网络结构都很经典# 典型的CNN分类模型结构示例 model Sequential([ Conv2D(32, (3,3), activationrelu, input_shape(224,224,3)), MaxPooling2D((2,2)), Conv2D(64, (3,3), activationrelu), MaxPooling2D((2,2)), Flatten(), Dense(128, activationrelu), Dense(10, activationsoftmax) # 假设是10分类任务 ])二分类和多分类的主要区别在于输出层设计。二分类只需要1个神经元用sigmoid激活而多分类需要N个神经元加softmax。损失函数都常用交叉熵但多分类通常用categorical_crossentropy。3. 目标检测从识别到定位的跨越3.1 检测任务的核心价值分类只能告诉你有猫但猫在图片的哪个位置这就是目标检测要解决的问题。检测任务需要输出两类信息物体的类别和位置通常用矩形框表示。这就像不仅要知道房间里有猫还要指出猫正趴在窗台上。实际项目中检测的难度比分类大得多。我做过一个货架商品检测系统最大的坑是商品重叠时的检测框重合问题。后来改用YOLOv5的CIoU损失函数才改善了这个情况。现代检测模型的mAP平均精度能达到70%以上好的模型在COCO数据集上可以达到60fps的推理速度。3.2 主流检测算法演进检测算法的发展经历了几个重要阶段R-CNN系列先提取候选区域再分类精度高但速度慢YOLO系列单阶段检测的典范速度快适合实时场景Anchor-free方法如CenterNet避免了预设锚框的调参难题# YOLO风格的检测输出示例 [ [x_center, y_center, width, height, confidence, class_idx], [0.45, 0.62, 0.3, 0.4, 0.98, 2] # 表示2类物体位于图像中部 ]4. 语义分割像素级的视觉理解4.1 分割任务的特点语义分割将分类细化到了像素级别相当于给每个像素点分配类别标签。但它不区分同类物体的不同实例——就像知道图片里有三只猫但不关心哪只是大橘哪只是狸花。我在医疗影像分割中深有体会要精确标注肿瘤区域差几个像素都可能影响诊断结果。这时普通的检测框就太粗糙了。目前最好的分割模型在Cityscapes数据集上能达到80%以上的mIoU平均交并比。4.2 典型分割网络结构全卷积网络FCN是分割的基础架构后来的U-Net加入了跳跃连接DeepLab系列引入了空洞卷积。这些创新都是为了解决两个核心问题如何保持空间信息以及如何处理多尺度物体。# U-Net的关键结构示例 def conv_block(inputs, filters): x Conv2D(filters, 3, paddingsame)(inputs) x BatchNormalization()(x) return ReLU()(x) # 编码器部分不断下采样 # 解码器部分通过转置卷积上采样并与编码器特征拼接5. 实例分割视觉理解的终极形态5.1 为什么需要实例分割实例分割是检测和语义分割的结合体它既要区分不同物体实例又要精确到像素级边缘。这在自动驾驶中特别重要——必须分清相邻的两辆汽车而不是把它们标记为一片车海。Mask R-CNN是目前最成熟的实例分割框架。我在一个工业质检项目中用它来区分流水线上紧密排列的零件通过改进ROI Align层将分割精度提升了15%。好的实例分割模型在COCO数据集上能达到50%以上的AP。5.2 实例分割的实现关键实例分割的核心挑战是如何平衡检测和分割两个子任务。Mask R-CNN的做法很巧妙在Faster R-CNN的基础上增加一个分割分支。这个分支只处理检测框内的区域大大降低了计算复杂度。# Mask R-CNN的关键流程 1. 骨干网络提取特征如ResNet-FPN 2. RPN网络生成候选框 3. ROI Align提取候选区域特征 4. 并行执行 - 分类和回归检测头 - 分割掩码预测分割头从分类到实例分割计算机视觉任务就像显微镜的调焦旋钮让我们对图像的理解从模糊到清晰从整体到细节。选择哪种技术取决于你的具体需求如果只需要知道有没有猫分类就够了如果要数清一窝小猫各自的位置和姿态那就需要实例分割。理解这四种任务的递进关系是进入计算机视觉领域的重要第一步。