所有13个CNN架构,它们的摘要,它们的代码实现,CNN注释的介绍,关于如何为给定的问题选择CNN架构的最小指南,以及学习CNN的进一步资源现在都是共享的,并且都是存储库的一部分。
卷积神经网络(卷积神经网络或cnn)是一类神经网络算法,主要用于图像分类、目标检测和图像分割等视觉识别任务。在视觉识别中使用卷积神经网络无疑是深度学习领域2010年代最重大的发明之一。
一个标准的ConvNet架构通常由3个主要层组成,分别是卷积层、最大池化层和全连接层。卷积层是卷积网络的主要组成部分。它们用于使用过滤器提取图像中的特征。
池化层用于对卷积层生成的激活或特征图进行下采样。下采样也可以通过在正常的卷积层中使用跨距(大于1)来实现,但最大池化层没有任何可学参数,而且它们引入了平移不变性,从而提高了空间诱导偏差代价下的模型泛化。全连接层用于分类目的(将学习到的特征与其各自的标签匹配)。在分类设置中,最后一个全连接层通常使用softmax激活功能激活!
遵循上述结构的ConvNets架构的例子是AlexNet和VGG。大多数现代的卷积网络架构已经超越了单纯的卷积堆栈、最大池化和全连接层。例如,像ResNet这样的架构和其他类似的网络都涉及到残差连接。
计算机视觉社区有幸拥有许多能够在许多平台或硬件上很好地工作的视觉架构。但是,有很多选项意味着很难选择适合给定问题的体系结构。如何为您的问题选择ConvNet架构?
第一条经验法则是,您不应该试图从头开始设计自己的架构。如果你正在处理一般问题,从ResNet-50开始不会有什么坏处。如果您正在构建一个计算资源有限的基于移动的可视化应用,请尝试MobileNets(或其他移动友好的架构,如ShuffleNetv2或ESPNetv2)。
为了更好地平衡准确性和计算效率,请尝试EfficientNet或最新的ConvNeXt!
也就是说,选择架构(或学习算法)并不是免费的午餐。没有通用的架构。没有一个单一的体系结构可以保证对所有的数据集和问题都有效。都是实验。这是所有努力!
如果你是一个梦想家,或者喜欢呆在这个领域的前沿,看看视觉Transformers吧! 我们还不知道,但它们可能是ConvNets的继承者!