news 2026/10/3 7:15:41

图像分割目标检测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
图像分割目标检测

1. 视觉识别任务概述

视觉识别是计算机视觉领域的核心任务,旨在让计算机理解图像内容。根据输出粒度的不同,视觉识别任务可以分为四大类:图像分类、语义分割、目标检测和实例分割。这四类任务对图像的理解程度逐层加深,从「整张图是什么」到「每个像素属于什么」,再到「每个目标在哪里、是什么」,最终到「每个目标的像素级轮廓」。下面通过一个包含猫、狗、草、树、天空的示例图像来说明四类任务的差异。

任务类型输出内容空间位置典型输出示例
图像分类整张图像的类别标签不考虑空间位置猫
语义分割每个像素的类别标签像素级,但不区分实例草、猫、树、天空
目标检测多个目标的边界框和类别目标级边界框狗、狗、猫
实例分割每个目标的像素级掩码和类别像素级,且区分实例狗、狗、猫

从表中可以看出,图像分类只回答「图像里有什么」,语义分割回答「每个像素是什么」,目标检测回答「目标在哪里、是什么」,而实例分割则进一步回答「每个目标的具体轮廓是什么」。四者之间是逐步细化的关系。

2. 语义分割

2.1 任务定义

语义分割的任务是给图像中的每个像素分配一个类别标签。它只考虑像素的类别,不区分同一类别中的不同实例。例如,图像中有两只狗,语义分割会把两只狗的像素都标记为「狗」,但不会区分「狗1」和「狗2」。语义分割的典型应用场景包括自动驾驶中的道路、车辆、行人区域划分,以及医学影像中的器官或病灶区域提取。

2.2 语义分割思路一:滑动窗口

最早的语义分割思路是滑动窗口法。具体做法是:从完整图像中提取一个区域(窗口),利用 CNN 对该区域中心点的像素进行分类,然后滑动窗口,逐像素重复这一过程。例如,对于一个包含牛和草的图像,滑动窗口会依次提取包含牛的区域和包含草的区域,分别用 CNN 判断中心像素是「牛」还是「草」。

这种方法的优点是思路简单、易于实现,但存在一个致命问题:效率太低。因为相邻窗口之间存在大量重叠区域,这些重叠区域的特征会被反复计算,造成巨大的计算浪费。例如,一个窗口向右滑动一个像素,新窗口与原窗口有 99% 的重叠,这些重叠部分的卷积特征全部需要重新计算。

2.3 语义分割思路二:全卷积网络

为了解决滑动窗口效率低的问题,研究者提出了全卷积网络(Fully Convolutional Network,FCN)的思路。核心思想是:让整个网络只包含卷积层,一次性输出所有像素的类别预测,而不是逐像素滑动窗口。

具体来说,输入是 3×H×W 的图像(3 个通道,高 H,宽 W),经过一系列卷积层后,得到 D×H×W 的特征图,再经过若干卷积层得到 C×H×W 的分数图(C 为类别数),最后对每个像素取 argmax,得到 H×W 的预测结果。

然而,这种保持原始分辨率的做法有一个问题:处理过程中一直保持原始分辨率,对显存的需求非常庞大。例如,一张 512×512 的图像,若特征图通道数为 512,仅一层特征图就需要 512×512×512×4 字节约 512MB 显存,多层叠加后显存开销难以承受。

为此,FCN 的改进方案是在网络中嵌入下采样与上采样过程:先用池化或步长卷积进行下采样,降低分辨率以节省计算量,再用上采样操作恢复分辨率。具体流程为:输入 3×H×W,经过下采样得到高分辨率特征 D1×H/2×W/2、中分辨率特征 D2×H/4×W/4、低分辨率特征 D3×H/4×W/4,最后通过上采样恢复到 H×W 的预测结果。

下采样通常使用池化(Pooling)或步长卷积(strided convolution),上采样则使用反池化(Unpooling)或转置卷积(transpose convolution)。

2.4 上采样方法一:反池化

反池化(Unpooling)是上采样的一种简单方法,主要有两种形式:最近邻反池化和「钉子床」反池化。

最近邻反池化(Nearest Neighbor):将输入中的每个值直接复制到输出中对应的 2×2 区域。例如,【输入 2×2 矩阵 [[1,2],[3,4]],通过上采用,输出 4×4 矩阵】

具体过程为:每个值在 2×2 块内重复 4 次,得到 [[1,1,2,2],[1,1,2,2],[3,3,4,4],[3,3,4,4]]。这种方法简单但会产生块状效应,边界不够平滑。

反池化(Bed of Nails):将输入中的每个值放到输出对应 2×2 区域的左上角,其余位置补零。例如,输入 [[1,2],[3,4]],输出为 [[1,0,2,0],[0,0,0,0],[3,0,4,0],[0,0,0,0]]。这种方法保留了位置信息,但输出中大量为零,信息密度低。

最大反池化(Max Unpooling):这是更精细的反池化方法。在最大池化时,除了记录池化结果,还要记住每个最大值在原图中的位置。上采样时,将池化结果放回原来的位置,其余位置补零。例如,输入 4×4 矩阵,经过 2×2 最大池化得到 2×2 结果,同时记录每个最大值的位置;上采样时,把池化结果放回对应位置,其余补零。这种方法能较好地保留边缘信息,但需要额外的位置记录开销。

2.5 上采样方法二:转置卷积(可学习的上采样)

转置卷积(Transpose Convolution)是一种可学习的上采样方法

为了理解转置卷积,先回顾普通卷积。以 3×3 卷积、步长 1、零填充 1 为例:输入 4×4,输出仍为 4×4。卷积核在输入上滑动,每个输出位置是卷积核与输入对应区域的点积。而转置卷积可以理解为「输入给出卷积核的权重,卷积核按输入值加权后放到输出位置」。具体来说,输入 2×2,使用 3×3 转置卷积、步长 2、填充 1,输出为 4×4。输入中的每个值作为权重,与卷积核相乘后放到输出的对应位置;当多个输入值的贡献在输出中重叠时,重叠区域的值需要求和。

转置卷积与普通卷积的关系可以用矩阵乘法来理解。普通卷积可以写成矩阵乘法:将卷积操作表示为矩阵 C 与输入向量 x 相乘,得到输出 y = Cx。转置卷积则是乘以同一个矩阵的转置:y = C^T x。当步长为 1 时,转置卷积等价于一个普通卷积(只是填充规则不同);当步长大于 1 时,转置卷积不再是普通卷积,而是真正意义上的上采样操作。

下面通过一个一维例子说明转置卷积的计算过程。设输入为 [a, b],卷积核为 [x, y, z],步长 2,填充 1。普通卷积的矩阵形式为:输出中的每个位置是卷积核与输入对应窗口的点积。转置卷积则反过来:输入 a 和 b 分别作为权重,把卷积核 [x, y, z] 放到输出对应位置,重叠处求和。例如,输出第一个位置为 ax,第二个位置为 ay,第三个位置为 az + bx,第四个位置为 by,第五个位置为 bz。如果需要输出恰好是输入的 2 倍长度,还需要从输出中裁剪一个像素。

转置卷积的优点是参数可学习,网络可以自动学习最优的上采样核,因此被广泛应用于 FCN 等语义分割网络中。

2.6 全卷积神经网络小结

综合以上内容,全卷积神经网络(FCN)的完整流程为:输入 3×H×W 图像,经过下采样(池化或步长卷积)得到多分辨率特征图,再经过上采样(反池化或转置卷积)恢复到原始分辨率,最后输出 H×W 的像素级预测。FCN 的代表性工作包括 Long 等人的「Fully Convolutional Networks for Semantic Segmentation」(CVPR 2015)和 Noh 等人的「Learning Deconvolution Network for Semantic Segmentation」(ICCV 2015)。

3. 目标检测

3.1 任务定义与单目标检测

目标检测的任务是在图像中找出所有目标,并给出每个目标的类别和边界框。与语义分割不同,目标检测不关心像素级轮廓,只关心目标的位置(边界框)和类别。

先看最简单的单目标情况:图像中只有一个目标——猫,需要同时完成分类和定位。做法是将定位任务建模为回归问题:CNN 提取特征后,接两个分支:一个全连接层输出 1000 类分类分数(用 Softmax 损失),另一个全连接层输出 4 个边界框坐标 (x, y, w, h)(用 L2 损失)【以x,y为某个端点,常用中心的,w,h为宽度和高度的目标检测框】。总损失为多任务损失:分类损失加定位损失。

例如,输入一张猫的图片,CNN 输出 4096 维特征向量,分类分支输出「猫:0.9,狗:0.05,车:0.01……」的分数,定位分支输出边界框坐标 (x, y, w, h)。训练时,分类分支与真实标签「猫」计算 Softmax 损失,定位分支与真实边界框 (x', y', w', h') 计算 L2 损失,两者相加作为总损失。

3.2 多目标检测的困境

实际场景中图像往往包含多个目标,例如一张图里有两只狗、一只猫、两只鸭子。每个目标都需要输出 (x, y, w, h) 四个实数,那么一张图需要输出多少个实数?答案是:不确定。因为每张图像中目标的数量不同,期望输出的维度也不一样。这是多目标检测的核心困境:输出维度不固定,无法直接用固定维度的全连接层输出。

解决思路是:利用 CNN 对图像中的区域进行多分类,以确定当前区域是背景还是哪个类别的目标。具体做法是:对图像中所有可能的位置、尺寸、长宽比的区域逐一用 CNN 分类。例如,先判断某个区域「狗?不是;猫?不是;背景?是」,再判断另一个区域「狗?是;猫?不是;背景?不是」,如此反复。但这样做的问题是:CNN 需要对图像中所有可能的区域进行分类,计算量巨大,几乎不可行。

3.3 区域建议:Selective Search

为了减少需要分类的区域数量,研究者提出了区域建议(Region Proposal)方法。其目标是找出所有潜在可能包含目标的区域,并且运行速度要相对较快。代表性方法包括:

  • Selective Search:在 CPU 上仅需几秒即可产生约 2000 个候选区域。
  • Objectness 度量:Alexe 等人的「Measuring the objectness of image windows」(TPAMI 2012)。
  • Selective Search for Object Recognition:Uijlings 等人的工作(IJCV 2013)。
  • BING:Cheng 等人的「Binarized normed gradients for objectness estimation at 300fps」(CVPR 2014)。
  • Edge Boxes:Zitnick 和 Dollar 的「Locating object proposals from edges」(ECCV 2014)。

区域建议方法大幅减少了需要分类的区域数量,为目标检测提供了可行的基础。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 7:15:41

GCDBZ 高程点布置插件 V3.0:一个命令把 CASS 高程点批量排出来

其实「已知一点高程 设计坡度,沿方向布置一串高程点」这件事,完全可以用一个插件自动完成。今天这篇,就把 GCDBZ 高程点布置插件 V3.0 讲透:它解决什么问题、按什么原理工作、怎么用、有哪些坑要避开。01 它解决什么问题&#xf…

作者头像 李华
网站建设 2026/10/3 7:15:11

多相机采集系统搭建:从传感器选型到存储落盘的工程链路

多相机采集系统(EGO 数据采集、多目同步采集等)的搭建,本质上是把一条从传感器到存储的数据链路做通。它的难点很少落在"相机能不能出图"上,而集中在链路中后段:接口带宽是否够、多路汇聚会不会互相抢、时间…

作者头像 李华
网站建设 2026/10/3 7:14:04

微信小程序+SSM驾考系统开发全攻略:从毕设开题到答辩排坑

最近被问得最多的一个毕设题目,就是“基于微信小程序的优选驾考SSM”。微信小程序做前端,SSM(Spring SpringMVC MyBatis)做后端,搭一套驾考学习、刷题、预约考试的系统。这个组合在近几年的毕业设计里出现频率非常高…

作者头像 李华
网站建设 2026/10/3 7:13:52

手机PDF转换成Word免费版!安卓苹果通用,简单好用

日常办公、学习中,我们经常会遇到PDF文件无法编辑的问题。PDF格式虽然排版稳定、不易错乱,但无法直接修改文字、调整表格,想要二次编辑内容,唯一便捷的方式就是转换成可随意修改的Word文档。很多人习惯用电脑转换,其实…

作者头像 李华
网站建设 2026/10/3 7:13:21

PDF拆分合并超全教程!本地+在线双方案,新手零门槛搞定

日常办公、学习、整理资料时,大家经常会遇到PDF处理难题:多份PDF需要整合为一份、长篇PDF需要拆分出指定页面、多余空白页需要删除等等。很多人要么找不到合适工具,要么下载软件捆绑广告、收费有水印,在线工具又担心文件隐私泄露。…

作者头像 李华