python - 使用python对图像中的像素进行基于密度的异常值检测
问题描述
我有一张分辨率为 256 x 256 的图像。我的目标是找到图像中异常值的模糊白色像素。图像可以在下面看到,它们所需的输出在它们下面。我使用 sklearn 应用 DBSCAN 聚类,其中 1 作为 eps,150 作为 min_samples。我得到的结果是惊人的,但它花了 30 秒和大约 35 GB 的 RAM。我想要一些其他异常检测技术,它可以将模糊的白色像素与其余的黑色像素聚集在一起。我尝试使用随机森林和 LOF,但未能获得预期的结果。该解决方案应该足够快并且尽可能使用最少的 RAM。DBSCAN 需要很长时间和太多 RAM。应该在不提及聚类数量的情况下进行聚类,以便算法本身可以找到异常像素。我需要的预期结果如下:
解决方案
我认为您根本不应该在这里使用集群。我猜你想删除一些阈值的值。这是解决这个问题的错误工具。如果你有一把锤子,一切看起来都像钉子——但这不是钉子。
简化数据以改善运行时间。大多数像素都非常清晰,所以首先摆脱所有简单的情况。这正是我认为您的方法不合适的原因,您会浪费大量 CPU 来计算不需要的东西。
不要费心尝试使聚类算法更快 - 而是重新考虑您的问题。你真正想解决什么问题?然后设计一种方法,它可以完全直接地完成您需要的工作,而不是通过一些半适合的代理操作(如集群)。
推荐阅读
- c# - 用户控制的惩罚回到父面板的背面
- swift - 如何继承 NSNumberFormatter
- r - 具有基本功能的 R 中的 Monty Hall 游戏
- sql - 如何从合并值列中搜索列中的分隔值
- python - 缓存自定义 pytorch 数据集
- sockets - 如果我看到一个被阻止的远程端口号,应该怪谁的防火墙?
- regex - 如何捕获每行都匹配的多行字符串?
- kubernetes - 我可以使用 Kubernetes 创建文件或替换文件的内容吗?
- javascript - 开玩笑预期动作测试失败
- angular - 如何在 Angular 8 中将 Ag-Grid 从版本 21 迁移到版本 22