-2

我有一个大约 20K 图像的数据集,这些图像是人工标记的。标签如下:如果图像清晰且光线充足,则标签 = 1,对于那些模糊/失焦/颗粒状图像,标签 = 0。

图像是身份证等文件。

我想建立一个可以完成分类任务的计算机视觉模型。

我尝试使用 VGG-16 进行迁移学习来完成这项任务,但效果不佳(精度 0.65 和召回率 = .73)。我的感觉是 VGG-16 不适合这项任务。它是在 ImageNet 上训练的,并且具有非常不同的低级特征。有趣的是,该模型是欠拟合的。

我们还尝试了 EfficientNet 7。尽管该模型能够在训练和验证方面表现出色,但测试性能仍然很差。

有人可以建议更合适的模型来尝试这项任务吗?

4

3 回答 3

1

我认为您对 VGG 和其他 NN 的问题是调整图像大小:
VGG 期望输入 224x224 大小的图像。我假设您的数据集具有更大的分辨率,因此您在将输入图像输入网络之前会显着缩小它们的比例。

当您缩小图像时,模糊/噪点会发生什么?
当您降低分辨率时,模糊和嘈杂的图像会变得更加清晰和清晰。因此,在您的许多训练示例中,当您将它们标记为“损坏”时,网络会看到非常好的图像。这不利于训练。

一个有趣的实验是看看你的网络可以正确分类哪些类型的退化以及它失败的类型:你报告了 65% 的准确率 @ 73% 的召回率。您可以查看当时的分类图像并按退化类型对它们进行分组吗?
也就是说,只有模糊图像的精度/召回率是多少?嘈杂的图像是什么?有颗粒感的图像怎么办?

你能做什么?

  1. 根本不要调整图像大小!如果网络需要固定大小的输入 - 然后裁剪而不是调整大小。
  2. 利用“调整大小”效果,您可以使用“鉴别器”来解决问题。训练一个“区分”图像及其缩小版本的网络。如果图像清晰干净——这个鉴别器将很难成功。但是,对于模糊/嘈杂的图像,任务应该相当容易。
于 2020-08-13T05:43:06.747 回答
0

我会查看像素之间的颜色变化,然后在像素之间的中值增量上对照片进行排名......每个相邻像素从 RGB(0,0,0)到(255,255,255)的急剧变化将是最大值可能的分数,越模糊,分数越低。

我过去曾这样做过,试图成功地估计领域。

于 2020-08-13T22:37:42.980 回答
0

对于这个任务,我认为使用 opencv 足以解决问题。事实上,将图像的 Lablacien 方差与阈值 ( cv2.Laplacian(image, cv2.CV_64F).var()) 进行比较将生成图像是否为蓝色的决定。

您可以在以下教程中找到该方法和代码的说明:使用 opencv 进行检测

我认为训练一个将您的神经网络模型之一的输出和拉普拉斯方差作为特征的分类器将改善分类结果。

我还建议使用ResNetDenseNet 进行实验

于 2020-08-12T18:03:49.143 回答