【问题标题】:How to train a neural network without lots of labelled data如何在没有大量标记数据的情况下训练神经网络
【发布时间】:2019-09-25 14:54:55
【问题描述】:

我是机器学习的新手,我正在尝试构建一个对象检测神经网络。

我有 3000 张图片,但只有 150 张被标记。 我的图像由 web ui 页面组成,我在其中标记按钮和徽标。

目前,我尝试使用 faster_rcnn_inception_resnet_v2_coco 模型对其进行训练,但结果并不理想。 找到了这些功能,但并不完美地找到它们需要的位置。

有没有办法改善结果?也许与另一个模型?

如果我使用自动编码器对所有 3000 张图像进行无监督训练,然后将迁移学习用于带有标记数据的深度学习模型,我会得到更好的结果吗?如果是这样,我如何使用 python 和 tensorflow 来实现它?

谢谢

【问题讨论】:

  • 这就是我使用 faster_rcnn_inception_resnet_v2_coco 模型得到这些结果的原因,你认为我应该使用哪个模型?

标签: tensorflow deep-learning object-detection autoencoder


【解决方案1】:

首先,查看 COCO 和 VOC 数据集。

http://cocodataset.org/#home

http://host.robots.ox.ac.uk/pascal/VOC/

如果他们的类与您的非常相似,那么您可以采用预训练模型(deeplab、yolo、maskrnn 等)并在您的数据集上进行训练,性能应该会很棒。以下是一些可在 github 中检查的存储库:

https://github.com/search?l=Python&q=object+detection&type=Repositories

如果您的数据集与这些数据非常不同,您可能无法期待良好的性能。在这种情况下,您必须通过更改类的数量来重新设计网络。您可以使用数据增强(自动编码器在这里可能不是数据生成的好选择,因为生成高质量图像很复杂)。这是一个很好的数据增强库,可以使用掩码增强样本。

https://github.com/mdbloice/Augmentor

【讨论】:

  • 感谢您的回答!实际上,对于自动编码器,我并没有考虑生成数据,而是在 3000 个未标记图像上训练第一个 NN,然后使用标记数据(预训练过程)对另一个 NN 的低部分进行加权,这样权重已经训练到可以看到某些类型的模式你怎么看?
  • 是的,理论上可行,但会花费您大量时间来生成高质量的图像,而使用简单的增强更容易。
  • 好吧,那么使用更轻的 CNN 怎么样?我读过较小的 NN 用于较小的数据集
  • 是的,显然你可以,但很可能你会失望。因此,您绝对可以尝试观察生成的图像是否足以胜任您的任务。
猜你喜欢
  • 2019-04-11
  • 2018-09-02
  • 1970-01-01
  • 1970-01-01
  • 2012-03-15
  • 2016-03-11
  • 2021-09-07
  • 2011-04-07
  • 1970-01-01
相关资源
最近更新 更多