获取图像中单个类的相邻实例的边界框

数据挖掘 物体检测 更快的rcnn
2022-02-01 22:29:28

我有一个包含数千个乐谱页面和手动注释的各个小节的边界框的数据集:

例子

我现在的目标是训练一个 DNN,它最终应该能够自己获得这些边界框。第一个想法是在 ResNet 或 VGG 之上使用来自 Faster R-CNN 的 Region Proposal Network (RPN) 之类的东西,但我不确定这是否仍然有效,因为页面的几乎每个部分的“对象性”都相当高。此外,这些区域大多相互接触,但很少重叠。每页的条数大约在 1 到 250 之间。

此外,每页的系统数量(= 条形行)通常在后续页面之间不会发生变化。这可能是 RPN 会错过的非常有用的信息。也许引入某种recurrency?

有没有更适合我的具体问题的东西?任何关于更合适的架构或进一步调整的建议将不胜感激。

编辑:一些更极端的例子: 在此处输入图像描述 在此处输入图像描述

1个回答

我的第一个想法是不要对此进行全面的深度学习 - 很难看到,但看起来您的区域由垂直线限定,许多水平线跨越这些区域。您可以尝试只做简单的精明过滤器来检测这些行(也许使用 [opencv] - [ https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_houghlines/py_houghlines.html]),然后找到水平线和垂直线相交的点以形成区域的垂直边界。

另一个可能有帮助的想法是扫描平面算法,:[ https://scicomp.stackexchange.com/questions/8895/vertical-and-horizo ​​ntal-segments-intersection-line-sweep] 我只是在这里吐口水,但是在哪里音符和水平线相遇将形成连接区域。查找包含水平线的连接区域可以让您参与其中。然后用垂直线检测器的输出对它们进行切片(也许是使用基于树的扫描平面策略从最长垂直开始搜索相似长度的组)值得一试。

在 RPN 的线路上,我对 SSD 有很好的经验来解决类似的问题(检测建筑图纸上的单个图纸)。SSD 的不同之处在于它会返回带有置信度的 8K 提案,然后第二次调整置信度阈值并找到不重叠的区域让我非常接近,但我的直觉表明您的数据集结构足够有另一个答案。

我很好奇您在数据集中有多少页。如果你的注释少于几千个,那么训练一个大型神经网络可能会更难,并且会倾向于 canny 滤波器/霍夫变换方向。带注释的页面是否也代表了足够多样化的生产数据样本?