现代 CNN(卷积神经网络)作为 DetectNet 是不是旋转不变?

Posted

技术标签:

【中文标题】现代 CNN(卷积神经网络)作为 DetectNet 是不是旋转不变?【英文标题】:Are modern CNN (convolutional neural network) as DetectNet rotate invariant?现代 CNN(卷积神经网络)作为 DetectNet 是否旋转不变? 【发布时间】:2017-04-18 13:00:39 【问题描述】:

众所周知,nVidia DetectNet - 用于对象检测的 CNN(卷积神经网络)基于来自 Yolo/DenseBox 的方法:https://devblogs.nvidia.com/parallelforall/deep-learning-object-detection-digits/

DetectNet 是流行的 GoogLeNet 网络的扩展。这 扩展类似于 Yolo 和 DenseBox 中采用的方法 论文。

如图所示,DetectNet 可以检测任意旋转的物体(汽车):https://devblogs.nvidia.com/parallelforall/detectnet-deep-neural-network-object-detection-digits/

现代 CNN(卷积神经网络)作为 DetectNet 是否具有旋转不变性?

我可以在数千个不同的图像上训练 DetectNet,用一个相同的物体旋转角度来检测任何旋转角度的物体吗?

那么基于 DetectNet 的 Yolo、Yolo v2、DenseBox 的旋转不变量呢?

【问题讨论】:

【参考方案1】:

没有

在分类问题中,CNN 不是旋转不变的。您需要在训练集中包含所有可能的旋转图像。

您可以训练 CNN 将图像分类为预定义的类别(如果您想检测图像中的多个对象,如您的示例中所示,您需要使用分类器扫描图像的每个位置)。

然而,这是一个对象检测问题,而不仅仅是一个分类问题。

在对象检测问题中,可以使用滑动窗口的方法,但效率极低。相反,一个简单的 CNN 其他架构是最先进的。例如:

更快的 RCNN:https://arxiv.org/pdf/1506.01497.pdf YOLO 网:https://pjreddie.com/darknet/yolo/ 固态硬盘:https://arxiv.org/pdf/1512.02325.pdf

这些架构可以检测图像中任何位置的对象,但您还必须在训练集中包含具有不同旋转的样本(并且必须使用边界框标记训练集,这非常耗时)。

【讨论】:

你说的是滑动窗口的方法吗? @mrgloom。与滑动窗口无关。 @Kershaw scan every place of a image with your classifier ? CNN 对训练数据中小的水平或垂直移动保持不变,主要是因为最大池化。 但是在这个答案中,据说可以通过使用 dropout 来实现这种不变的属性。尽管我自己实际上并没有实现它,即使我使用了很大比例的 dropout。我不知道为什么,我可能是错的。这是我正在谈论的答案:stats.stackexchange.com/a/239079/245577【参考方案2】:

除了 Rob 的回答之外,通常 CNN 本身是平移不变的,但不是旋转和缩放。但是,将所有可能的轮换包含到您的训练数据中并不是强制性的。最大池化层会引入旋转不变量。

由 Franck Dernoncourt here 发布的This image 可能就是您要找的。​​p>

其次,关于 Kershaw 对 Rob 回答的评论:

CNN 对训练数据中小的水平或垂直移动保持不变,主要是因为最大池化。

CNN 具有平移不变性的主要原因是卷积。过滤器将提取特征而不管它在图像中的什么位置,因为过滤器将在整个图像中移动。当图像旋转或缩放时,由于特征像素表示的差异,过滤器会失败。

来源:Aditya Kumar Praharaj 来自 this link 的回答。

【讨论】:

【参考方案3】:

Detectron2 最近添加了 Rotated Faster RCNN 网络。要创建这样的模型,您应该为具有旋转边界框的车辆创建注释,即:

rbbox = [center_x, center_x, width, height, angle]

例如:

访问this link了解更多信息。

【讨论】:

以上是关于现代 CNN(卷积神经网络)作为 DetectNet 是不是旋转不变?的主要内容,如果未能解决你的问题,请参考以下文章

CNN卷积神经网络

CNN卷积神经网络

转载深度学习-卷积神经网络(CNN)

转载深度学习-卷积神经网络(CNN)

用numpy实现CNN卷积神经网络

对卷积神经网络(CNN)的理解——深度学习