我正在处理一个找不到足够的数据集(图像)以馈入我的深度神经网络进行训练的问题。
斯科特·里德(Scott Reed)等人发表的论文《将对抗性文本转化为图像合成》使我深受启发。在生成对抗网络上。
我很好奇,我是否可以将可用的小型数据集用作GAN模型的输入,并生成更大的数据集来处理更深的网络模型?
足够好吗?
我正在处理一个找不到足够的数据集(图像)以馈入我的深度神经网络进行训练的问题。
斯科特·里德(Scott Reed)等人发表的论文《将对抗性文本转化为图像合成》使我深受启发。在生成对抗网络上。
我很好奇,我是否可以将可用的小型数据集用作GAN模型的输入,并生成更大的数据集来处理更深的网络模型?
足够好吗?
Answers:
除了直接收集数据的努力之外,这不太可能增加很多。
GAN的当前输出质量(截至2017年)将不够高。GAN生成的图像通常很小,并且可能具有异常/模糊的细节和奇数失真。在您链接的论文中,给定主题,系统从句子生成的图像具有令人信服的彩色块,但是如果没有句子引发您的期望,大部分图像就无法识别为任何特定主题。
与从句子生成图像相比,GAN的目标不那么雄心勃勃(尽管我在上面曾提出批评,这确实是一项非凡的壮举IMO),它应该能够生成逼真的图像。但是它们的范围会较小,并且可能不包括您所需的图像类型。同样,通常输出尺寸很小,例如64x64或128x128 *,并且仍然有足够的失真和歧义,原始的地面真实照片将是更可取的。
GAN本身受可用的培训库的限制-如果您尝试生成超出其培训数据范围的图像,GAN的效果将不佳。研究论文中显示的结果当然关注于训练数据提供的领域。但是,您不能仅将任何句子输入此模型,而期望得到在其他地方有用的结果。
如果您发现GAN已经针对您的问题训练了合适的数据集,那么最好直接尝试为项目提供相同的数据。
如果您面临地面真实数据有限的问题,那么使用GAN的更好方法可能是使用预先训练的分类器(例如VGG-19或Inception v5),替换最后几层完全连接的层,然后根据您的数据进行调整。这是在Python中使用Keras库执行此操作的示例 -其他示例可以通过“微调CNN图像分类器”之类的搜索找到。
*自从我发布此答案以来,最先进的GAN已有所改善。Nvidia的研究团队在创建1024x1024逼真的图像方面取得了非凡的成功。但是,这不会改变我的回答中的其他观点。GAN并不是用于图像分类任务的可靠图像源,除了可能已经进行过GAN训练并且能够有条件生成(或者可能更简单地为)中“其他”类别提供源数据的子任务分类器)。
实际上,可以用GAN来扩充一个小的数据集来改善它,它也可以提高分类网络的性能,如您在此处阅读https://arxiv.org/pdf/1803.01229.pdf。GAN能够学习例如原始日期集不涉及但仍然有效的中间形状。因此,合成图像确实可以改善数据集大小并提高CNN分类准确性。