如何构建网络以在简单图像中找到边界框?

人工智能 卷积神经网络 计算机视觉 物体检测 边界框
2021-11-12 13:08:45

我有一个应用程序,我想在一个简单、相对恒定的背景(固定的摄像机角度等)上找到对象的位置。出于调查目的,我创建了一个测试数据集,其中显示了实际问题的许多特征。

这是我的测试数据集中的一个样本。

在此处输入图像描述

我们的问题描述是在图像中找到单个圆圈的边界框如果有多个圆或没有圆,我们不关心边界框(但我们至少需要知道没有有效的单个边界框)。

为了解决这个问题,我构建了一个可以回归的 CNN,(min_x, min_y, max_y, max_y)以及一个可以指示图像中有多少个圆圈的值。

我尝试了不同的架构变体,但总的来说,架构 a 是非常标准的 CNN(3-4 个 ReLU 卷积层,其间具有最大池化,然后是密集层和具有线性激活边界框输出的输出层,设置为最小化输出和地面实况边界框之间的均方误差)。

无论架构、超参数、优化器等如何,结果总是相同的——即使有超过 50000 个训练示例可供使用,CNN 甚至无法构建能够回归准确边界框的模型。

是什么赋予了?我是否需要考虑使用另一种类型的网络,因为 CNN 更适合分类而不是定位任务?

显然,有计算机视觉技术可以轻松解决这个问题,但由于实际应用涉及更多,我想严格了解解决这个问题的 NN/AI 方法。

2个回答

有一些特殊的 CNN 架构是专为您提到的任务而设计的。Detector库包含了这些架构的集合,本文详细描述了 Mask R-CNN 网络,该网络专为图像分割任务而设计。

在 R-CNN 系列方法中,BBox 回归是使用提供区域建议的特定模块执行的:最初使用了选择性搜索,然后引入了区域建议网络,其优势在于,作为 NN,可训练。

这不必与架构中出现的 BBox Regressor 混淆,它专注于为“非背景”提案对象细化提案 bbox

请考虑,为了正确执行目标检测,至少使用基于区域建议的架构,您需要执行基本的“背景/非背景”分类(这是 CNN 功能帮助的地方),以便过滤掉不相关的建议