首先,VGG-16 可能不是适合您的架构。它已被各种架构所取代,其中应用中最常用的是 ResNet。但是,如果您的数据很少,VGG-16 上的迁移学习可能比 ResNet 上更有效。底线,使用两者并在验证测试中比较它们。
关于标准化的观点:Simonyan 和 Zisserman 确实没有标准化 RGB 强度,但他们没有应用任何其他预处理是错误的:他们应用了重要的数据增强。请参阅他们论文的第 3.1 节。您需要将此处描述的相同数据增强应用到您的训练集。
如果你选择使用 ResNet,你想得到这篇论文:
Han 等人,使用深度学习算法对良性和恶性皮肤肿瘤的临床图像进行分类,2018
他们使用的模型是 ResNet-152:你可以尝试使用更小的 ResNet,如果这个模型的迁移训练被证明是一个太大的挑战。ResNet 无处不在,你可以在基本上所有框架中找到这种架构的实现,例如
https://github.com/tensorflow/models/tree/master/official/resnet
https://github.com/pytorch/vision/tree/master/torchvision
https://github.com/keras-team/keras-applications
ResNet 模型的标准化
上面的论文是在付费墙后面(但我相信作者会给你发一份副本,如果你给他们发一封电子邮件),所以我不能确定他们是否在这个特定的应用程序中使用了标准化:顺便说一句,请注意他们没有不仅将皮肤病变分类为良性或恶性,而且据我所知,他们将其分类为 12 个不同类别之一。一般来说,训练 ResNet 的最佳实践确实建议执行标准化。例如,在https://arxiv.org/pdf/1812.01187.pdf中建议的 BP 中,我们发现:
- 使用从 [0.6, 1.4] 统一绘制的系数来缩放色调、饱和度和亮度
- 通过分别减去 123.68、116.779、103.939 并除以 58.393、57.12、57.375 来归一化 RGB 通道,这应该是每个通道的样本均值和样本标准差,在 ISLVRC2012 数据集(ImageNet 的子集)的训练集上计算得出,其中有 130 万张用于训练的图像和 1000 个类。
当然,如果您打算比较 VGG-16 和 ResNet-152(或 ResNet-50:另一种常用的 ResNet 模型,它比 ResNet-152 对数据的需求更少)的结果,则需要使用相同的两者的标准化。
关于您的第二个问题(标准化相对于 ImageNet 和您的数据集的输入,仅针对 ImageNet,或仅针对您的数据集),选项 3 很疯狂,因为当您向 NN 提供新数据时,这些数据也必须标准化(因为您标准化训练集,训练后 NN 的权重是标准化输入的“正确权重”)。现在,为了避免测试集泄漏,通常的做法是使用在训练集(ISLVRC2012,在这种情况下,因为你做了大部分的培训)。现在,假设您获得了一个新的皮肤样本图像:您必须在将其提供给您的 NN 之前对其进行归一化。如果您根据新数据集使用样本均值和标准差对其进行归一化,您 将做一些与你在训练期间所做的完全不同的事情,所以我不希望 NN 能很好地工作。选项 3 什么时候有意义?在两种情况下:或者当你在新数据集上从头开始训练你的 NN 时,或者当你解冻很多层并重新训练它们时。然而,迁移学习通常只通过解冻 NN 的顶层(softmax 层)来执行。
在选项 1 和 2 之间进行选择取决于您的数据集 wrt ImageNet 有多大(或者更准确地说,是 ISLVRC2012 数据集,ImageNet 的子集,已用于训练 ResNet),以及 RGB 值的“极端”程度您的图像是 ISLVRC2012 的图像。我建议您计算 ISLVRC2012 和 ISLVRC2012 + 您的训练集的样本均值和样本标准差。如果像我想的那样差异很小,那么只需使用在 ISLVRC2012 上计算的统计数据。
标准化不是您真正应该担心的
最后,由于您正在进行迁移学习,因此执行适当的数据增强比专注于适当的规范化更为重要。由于显而易见的原因,皮肤样本图像将稀缺,并且数据集将不平衡(即,良性病变的图像可能比恶性病变的图像多得多)。由于您的问题没有询问数据增强,因此我不会涉及该主题,但我建议您也阅读:
https://www.nature.com/articles/nature21056
https://academic.oup.com/annonc/article/29/8/1836/5004443
https://www.jmir.org/2018/10/e11936
https://arxiv.org/pdf/1812.02316.pdf