现代 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。与滑动窗口无关。 @Kershawscan 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 是不是旋转不变?的主要内容,如果未能解决你的问题,请参考以下文章