众所周知,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的旋转不变性如何?
回答:
不是
在分类问题中,CNN不具有旋转不变性。你需要在训练集中包含所有可能旋转角度的图像。
你可以训练一个CNN来将图像分类到预定义的类别中(如果你想像你的例子中那样在一个图像中检测多个对象,你需要用你的分类器扫描图像的每个位置)。
然而,这是一个对象检测问题,而不仅仅是分类问题。
在对象检测问题中,你可以使用滑动窗口方法,但这极其低效。相反,除了简单的CNN之外,还有其他最先进的架构。例如:
- Faster RCNN: https://arxiv.org/pdf/1506.01497.pdf
- YOLO NET: https://pjreddie.com/darknet/yolo/
- SSD: https://arxiv.org/pdf/1512.02325.pdf
这些架构可以检测图像中任何位置的对象,但你也必须在训练集中包含不同旋转角度的样本(并且训练集必须使用边界框进行标记,这非常耗时)。