我正在尝试实现一种算法,其中给定平面表上具有多个对象的图像,所需的是每个对象的分割掩码的输出。与 CNN 不同,这里的目标是在不熟悉的环境中检测物体。解决这个问题的最佳方法是什么?另外,是否有任何在线可用的实现示例?
编辑:对不起,问题可能有点误导。我所说的“不熟悉的环境”是指算法可能不知道对象。该算法不需要了解对象是什么,而应该只检测对象。我应该如何解决这个问题?
我正在尝试实现一种算法,其中给定平面表上具有多个对象的图像,所需的是每个对象的分割掩码的输出。与 CNN 不同,这里的目标是在不熟悉的环境中检测物体。解决这个问题的最佳方法是什么?另外,是否有任何在线可用的实现示例?
编辑:对不起,问题可能有点误导。我所说的“不熟悉的环境”是指算法可能不知道对象。该算法不需要了解对象是什么,而应该只检测对象。我应该如何解决这个问题?
Mean Shift LSH是在著名的 Mean Shift 算法以其图像分割能力而闻名
如果您需要一种真正的无监督方法来分割图像,请使用聚类算法。事实上,有很多算法具有不同的时间复杂度和特异性。举个最有名的,-意思是,它在非常快,但是您必须通过探索未知图像来指定您想要的集群数量,这不是您想要的,而没有任何关于其中存在多少形状的信息。此外,即使您假设您知道存在多少个形状,我们也可以假设这些形状是随机的,这是另一点- 方法失败,因为它的设计是为了找到椭圆集群而不是随机形状的集群。
相反,我们有 Mean Shift,它能够自动找到簇的数量——当你不知道你在寻找什么时这很有用——具有随机形状。
当然你更换 参数 - 其他人的意思是平均偏移参数,微调起来可能很棘手,但它不存在一个工具可以让你在不锻炼做魔术的情况下做魔术。
将您的色彩空间从 RGB 转换为 LUV,这对欧几里德距离更有利。
Mean Shift LSH 速度较慢,但更适合您的需求。它保持线性,并且可以通过上述实现进行扩展。
PS:我的个人资料图片是 Mean Shift LSH 对我自己的应用,如果它可以帮助弄清楚它是如何工作的。
您可能需要查看提交并接受 CVPR 2018 的这项工作:Learning to Segment Every Thing
在这项工作中,他们尝试分割一切,甚至是网络不知道的对象。已经使用了 Mask R-CNN,结合了迁移学习子网络,它们在分割几乎所有内容方面都取得了非常好的效果。
最先进的图像分割 (SOTA) 将是 Facebook 的Mask-RCNN。
虽然它通常在COCO或Pascal等具有真实对象的数据集上进行训练,但您可以在您选择的数据集上重新训练它,无论是真实的还是非真实的。
Facebook在 Apache2 许可下提供了一个实现 ( Detectron )。试一试!
实际上,您的任务是受监督的。Segnet
可以是适合您的目的的良好架构,可以在此处访问其实现之一。SegNet 从监督学习中学习预测像素级类别标签。因此,我们需要一个具有相应地面实况标签的输入图像数据集。标签图像必须是单通道,每个像素都标有其类别...。
另外,请查看非常适合您的任务的全卷积网络。
根据问题中的编辑,我添加了额外的信息。有许多方法可用于此任务。基本上最简单的方法是使用背景标签,并通过使用上述架构将那些您不知道的类分类为背景。通过这样做,您将拥有可能与背景类重叠的标签,这可能是这种方法的一个缺点,但它的优点是,在您的训练标签经常在输入中使用的情况下,您可以拥有一个相对较轻的架构版本,识别未知类。