一段时间以来,我一直在使用 OpenCV。它满足了我对特征提取、匹配和聚类(迄今为止的k-means)和分类(SVM)的所有需求。最近,我遇到了 Apache Mahout。但是,大多数机器学习算法也已经在 OpenCV 中可用。如果工作与视频和图像有关,使用 Mahout 比 OpenCV 有什么优势吗?
1 回答
这个问题可能会被搁置,因为它是基于意见的。我仍然想添加一个基本的比较。
OpenCV 能够处理任何可能被研究或发明的视觉和机器学习。视觉文献就是以此为基础,根据文献发展起来的。即使是诞生于 MATLAB( http://www.tldvision.com/ )的新生 ml 算法(如 TLD )也可以通过一些努力使用 OpenCV( http://gnebehay.github.io/OpenTLD/ )来实现。
Mahout 也有能力,并且专门针对 ml。它不仅包括众所周知的机器学习算法,还包括特定的算法。假设您看到一篇论文“使用 K-means 方向过滤处理苹果”。你可以在网上找到这篇论文的 OpenCV 实现。甚至实际的算法也可能是开源的并使用 OpenCV 开发。使用 OpenCV,假设它需要 500 行代码,但使用 Mahout,论文可能已经用一种方法实现,使一切变得更容易
关于这种情况的一个例子是http://en.wikipedia.org/wiki/Canopy_clustering_algorithm,现在使用 OpenCV 很难实现。
由于您将使用图像数据集,因此您也需要了解HIPI。
总而言之,这是一个简单的赞成反对表:
诀窍(学习曲线): OpenCV 更容易,因为您已经了解它。Mahout+HIPI 将需要更多时间。
例子:文学+视觉社区常用OpenCV。开源算法大多是用 OpenCV 的 C++ api 创建的。
ml 算法: Mahout 只是关于 ml,而 OpenCV 更通用。OpenCV 仍然可以访问基本的机器学习算法。
开发: Mahout 在编码和时间复杂度方面更容易使用(我不确定后者,但我认为是)。