我应该如何对不同方向的图像进行分类?

Posted

技术标签:

【中文标题】我应该如何对不同方向的图像进行分类?【英文标题】:How should I do the classification of images with different orientation? 【发布时间】:2020-06-01 09:05:52 【问题描述】:

我一直在研究一个数据集,其目标是确定它是哪种类型的方向。这是一个分类问题,对于每条记录(对于大多数记录),我有 4 张图像 - 正面、左侧、右侧和背面产品图像。 我想将这些图像分类为上述 4 个类别。 数据集如下所示:

我已经下载了图片,并根据他们的类别将它们放在不同的文件夹中。

我应用的方法:

到目前为止,我已经应用了两种方法来对这些图像进行分类。

1) 我曾尝试使用 vgg16 直接对图像进行分类,但它甚至没有给我 50% 的准确率。

2)我将这些图像转换为黑色背景的边缘图像:

这是使用精明的边缘检测完成的。之所以这样做,是因为结果我得到了具有相似颜色连衣裙、相似设计连衣裙等的图像。 在这些之上,我再次应用了 vgg16、resnet50、inception 模型,但似乎没有任何效果。

您能否提出一些适用于我的情况的想法,并以更好的方式对图像进行分类。

【问题讨论】:

【参考方案1】:

首先你的数据集必须被平均分割。例如 80% 的训练和 20% 的测试。之后,您必须平衡这些集(训练集 60% 的 A 类图像,40% 的 B 类图像)与测试集完全相同。

【讨论】:

我在开始训练时创造了这种平衡,每个班级都有相同百分比的训练和测试集记录。之后呢。 1) 如果一个类别的图像数量很少,请尝试使用数据增强,因为您的网络不会学习这少量图像。 2)尝试更大的过滤器,因为正如我从上面的图像中看到的那样,有价值的信息散布在您的图像上。 3)使用批量标准化 4)在完全合并的层上使用 dropout(0.3-0.5 可以完成这项工作)我在图像上遇到了完全相同的问题,但是当我使用 BN 和 Dropout 时,它都已修复。 1) 我可能没有提到它,但我已经为这两种解决方案应用了数据增强。 2)我在 vgg16 和 resnet50 之上使用了批量标准化和 dropouts。 3)我不明白你所说的更大的过滤器是什么意思,请你详细说明一下。 如果它表示内核大小,那么我只使用预定义的架构,除此之外我没有使用任何卷积操作。

以上是关于我应该如何对不同方向的图像进行分类?的主要内容,如果未能解决你的问题,请参考以下文章

CV领域初窥--图像分类(一)

我应该如何使用预训练模型优化神经网络以进行图像分类

对属于不同类别的具有非常相似特征的图像进行分类

同一图像的分类给出不同的结果

我们应该如何对全序列进行分类?

如何使用 IPTC/EXIF 元数据对照片进行分类?