深度计算机视觉:从目标检测到语义分割
1. 目标检测基础
在处理包含多个对象的图像时,需要进行目标检测,即对图像中的多个对象进行分类和定位。过去常用的方法是将训练好用于分类和定位单个对象的卷积神经网络(CNN)在图像上滑动。例如,将图像划分为 6×8 的网格,让 CNN 在所有 3×3 的区域上滑动。由于对象大小不同,还需在不同大小的区域上滑动 CNN。
这种方法虽然简单,但会多次检测到同一对象,只是位置略有不同,因此需要进行后处理以去除不必要的边界框,常用的方法是非极大值抑制(Non-Max Suppression),具体步骤如下:
1. 为 CNN 添加一个额外的对象存在性输出,使用 sigmoid 激活函数,并通过二元交叉熵损失进行训练。去除对象存在性得分低于某个阈值的所有边界框,这些边界框实际上不包含对象。
2. 找到对象存在性得分最高的边界框,去除与它重叠率较高(例如 IoU 大于 60%)的其他边界框。
3. 重复步骤 2,直到没有更多的边界框需要去除。
这个方法效果不错,但需要多次运行 CNN,速度较慢。而使用全卷积网络(FCN)可以更快速地在图像上滑动 CNN。
2. 全卷积网络(FCN)
FCN 的概念最早用于语义分割任务。其核心思想是将 CNN 顶部的全连接层替换为卷积层。例如,一个有 200 个神经元的全连接层位于输出 100 个 7×7 特征图的卷积层之上,每个神经元会计算卷积层所有 100×7×7 激活值的加权和。如果将全连接层替换为使用 200 个 7×7 滤波器、“valid”填充的卷积层,该层将输出 200 个 1×1 的特征图,输出的数值与全连接层相同,只是形状不同。 </
超级会员免费看
订阅专栏 解锁全文
1018

被折叠的 条评论
为什么被折叠?



