我使用什么样的神经网络架构将图像分类为十万类?

人工智能 神经网络 机器学习 深度学习 卷积神经网络 分类
2021-10-27 06:41:03

我有一个图像数据集,其中对象可能属于十万个类之一。

为了实现这一点,我应该使用什么样的神经网络架构?

4个回答

具有大量类的分类任务通常使用分层 softmax来处理,以降低最后一层的复杂性。这很有用,例如,在诸如词嵌入之类的应用程序中,您有数十万个类(词),就像您的情况一样。

一个大的!

严肃地说,imagenet 大约有 1000 个类,并且不需要来自顶级提交的任何特殊内容。根据这些类的深度(上下文),您可能想要执行多标签分类之类的操作。您最大的问题可能是区分班级以及班级分布。

祝你好运!

正如您可以想象的那样,正如已经说过的那样,您的网络可以调整权重和偏差。但我想用两点来细化这个陈述

首先:您可以使用自动编码器来预处理您的图像。它可以降低维度,从而提高学习能力和效率(从泛化的角度来看)。这种 NN 将您的图像作为输入,对它们进行编码然后解码,以提供初始图像的新表示。处理解码后的数据集可以让您考虑使用较少隐藏节点的较少隐藏层,然后加快您的工作。

第二:架构肯定是处理图像识别的事情,但您也可以在输入表示上发挥作用(这就是上述自动编码器的意义所在)。您可以查看PCA(主成分分析)。它允许将维度减少到一定数量的组件(您指定)。它通常用于输入和目标不同的人脸识别。

综上所述,架构在处理大型数据集时肯定是一回事,但也很少有工具可以重塑输入,以便更容易学习。

通过这样做,您可以在时间计算方面以及在预测的质量和准确性方面提高网络的能力

Alexnet (2012)、Overfeat (2013)、VGG (2014) 和ResNet (2016) 在许多图像识别或分割应用中被引用。还有GoogleLeNet (2015)。最新的是出版物,网络越密集。

ResNet 出版物评论了网络密度如何根据图像数据集大小影响准确性。这篇文章倾向于对这个问题给出一个有动机的答案

学习更好的网络是否像堆叠更多层一样容易?

您可能会考虑训练时间,因为您拥有自己的图像数据集,具体取决于您可以使用的硬件类型(例如,请参阅此基准)。密度越大,需要的时间就越多。

您还必须考虑训练数据集的大小 w/r 以达到预期的准确性。如果设置太小,网可能会过大。在这种情况下,您可能会考虑使用数据增强策略(其中一个答案提到了自动编码,我不确定,但这可能有助于实现此目的)。

所有这些出版物都参考了ImageNet数据库和相关的图像分类/检测竞赛,该竞赛有 1000 个类别。