我正在做一个深度学习 CNN 项目。该数据集包含 500 多个类,并且这些类具有不同数量的项目(图像)。例如,有些类有 5 张图片,有些类有 10 张图片,有些类有 20 张图片,有些类有 20 多张图片。
我可以使用这个数据集来创建 CNN 模型吗?
每个类别中的图像数量是否应该相同?
注意:我将使用 VGG 来训练模型。
我正在做一个深度学习 CNN 项目。该数据集包含 500 多个类,并且这些类具有不同数量的项目(图像)。例如,有些类有 5 张图片,有些类有 10 张图片,有些类有 20 张图片,有些类有 20 多张图片。
我可以使用这个数据集来创建 CNN 模型吗?
每个类别中的图像数量是否应该相同?
注意:我将使用 VGG 来训练模型。
坦率地说,如果您要创建和使用 CNN 模型,即使 50 张图像也不够。如果您认为需要更多图像来进行模型训练,那么请进行数据增强。这是一个对图像进行少量变换的过程(无论是高度、宽度、旋转等还是这些的任意组合)。通过这种方式,图像和它的增强图像将略有不同。您可以在此处找到相关文章-
要回答每个类中应该有相同数量的图像的部分,应该有大约相同的数量。这个问题是处理分类任务时的一个普遍问题,有几种方法可以处理它,包括模拟数据(增强)。
我建议首先创建一个单独的测试集,然后在剩余的训练集上,使用数据增强,最后创建模型。
编辑
如深度学习书中所述,使用预训练的卷积网络也是一种选择 -
在小型图像数据集上进行深度学习的一种常见且高效的方法是使用预训练网络。预训练网络是以前在大型数据集上训练过的已保存网络,通常是在大规模图像分类任务上。如果这个原始数据集足够大且足够通用,那么预训练网络学习到的特征空间层次结构可以有效地充当视觉世界的通用模型,因此它的特征可以证明对许多不同的计算机视觉问题有用,即使这些新问题可能涉及与原始任务完全不同的类别。 例如,您可以在 ImageNet(其中类主要是动物和日常物品)上训练一个网络,然后将这个训练过的网络重新用于识别图像中的家具物品等远程任务。
从头开始创建 CNN 的图像数量非常少。您可能能够通过从预训练模型的迁移学习来训练您的模型,但您的数据集仍然可能太小。
基本上,您可以采用已经在大量图像上训练过的图像模型,然后使用它们的权重来播种,或者(更有可能)重新训练完全连接的密集层。