我可以在不同的分辨率上端到端训练两个堆叠模型吗?

数据挖掘 机器学习 神经网络 rnn ocr 美国有线电视新闻网
2021-09-26 21:19:12

是否可以将两个在不同分辨率的输入数据上运行的网络堆叠在一起?

所以这是我的用例:像 Google 一样,我想识别图像中的文本。与谷歌不同,我可以访问非常有限的计算资源。我对此的解决方案是,我不是在整个场景图像上使用序列到序列网络,而是首先使用YOLO运行对象检测,然后将裁剪传递给序列到序列模型Attention-OCR

为了进一步减少处理时间,我在低分辨率下运行对象检测,并在更高分辨率的输入图像中裁剪检测结果,因此在我的裁剪上使用序列识别时我仍然可以访问高分辨率输入。要检测有文本,低分辨率就足够了,但要阅读文本,网络需要更高分辨率的输入。

这一切都很好,但我怀疑如果我可以端到端地训练整个系统,我会获得更好的性能,因此可以直接优化裁剪以产生最佳的文本阅读效果。我可以将序列到序列模型堆叠在对象检测模型之上来执行此操作,但随后文本读取在用于文本检测的相同低分辨率输入上运行。

有谁知道如何解决这个问题,或者任何人都可以指出与此相关的研究?

1个回答

我建议您将问题分为两部分:

  1. 如何训练?
  2. 在资源有限的情况下如何进行推理?

非常常见的模式是在大数据上训练模型(例如通过租用 AWS 服务器),然后使用它的预测来训练更小的网络。 是 Hinton 等人关于该主题的基础论文。

这样,您可以坚持使用更传统的对象检测方法,而无需涉及堆叠,然后将“压缩”网络部署到您的设备。

但回到你的问题。如果由于各种原因您的方法很僵化并且不能像我上面描述的那样做,那么文献中有很多端到端的方法,看看这个开始吧。

甚至代码

我只会引用论文:

提出了一种统一的深度神经网络,称为多尺度 CNN (MS-CNN),用于快速多尺度目标检测。MS-CNN 由提议子网络和检测子网络组成。

在proposal sub-network中,在多个输出层进行检测,使得感受野匹配不同尺度的对象。这些互补的特定尺度检测器组合起来产生一个强大的多尺度目标检测器。通过优化多任务损失来端到端学习统一网络。

还探索了通过反卷积进行特征上采样,作为输入上采样的替代方案,以降低内存和计算成本。在包含大量小对象的数据集(例如 KITTI 和 Caltech)上报告了最高 15 fps 的最先进的对象检测性能。

但尽管如此,您还是可以随意尝试网络压缩(看看这个)。它通常具有高度的冗余性,通过创造性地探索这种冗余性,可能会获得很多收益