哪个更适合您的机器学习任务,OpenCV 还是 TensorFlow?

原文标题Which is Better For Your Machine Learning Task, OpenCV or TensorFlow?

哪个更适合您的机器学习任务,OpenCV 还是 TensorFlow?

其中一个真的比另一个更好吗?使用这两种框架的 ML 工程师的解释。

Backstory

我每天上网寻找机器学习和计算机视觉内容。我喜欢随时了解 ML 领域的最新动态,因为这是一个几乎每天都会让您感到惊讶的领域!

我遇到过几次的一个问题是:

OpenCV 和 Tensorflow 哪个更好?

对某些人来说,这不是一个有效的问题。

对其他人来说,这是一个值得思考的问题。

最简单的答案是 Tensorflow 比 OpenCV 好,OpenCV 比 Tensorflow 好!

我希望我没有混淆你!如果我这样做了,请继续阅读!

现实情况是,这些框架中的每一个都注定要用于机器学习和计算机视觉的特定领域。所以,直接说一个比另一个好是没有意义的。

但我们可以说,在某些领域,一个比另一个好,反之亦然。

事实上,Tensorflow 是一个机器学习框架,可以帮助你构建机器学习模型。它以构建神经网络而闻名,这是机器学习中的一种算法和方法,称为深度学习。

因此,Tensorflow 的发布主要用于构建机器学习模型。在这里,我说机器学习而不仅仅是深度学习,因为已经做出了一些努力来使 Tensorflow 能够训练非深度机器学习模型,例如决策森林。[0]

另一方面,OpenCV 是一个计算机视觉框架,可帮助您对图像和视频进行各种处理。自发布以来,它一直是用于图像处理任务的广泛使用的工具。它使您能够轻松地操作像素,以便您可以根据需要构建自己的图像和视频处理算法。

随着深度学习的兴起,OpenCV 开始通过引入一个名为 DNN(深度神经网络)的新模块来集成更多支持基于深度学习的任务的功能。[0]

这个 DNN 模块旨在使集成已经训练过的深度学习模型变得容易。这就是为什么您会在 OpenCV 中找到有关如何集成深度学习模型的示例:图像分类、图像对象检测和图像分割。

现在,如您所见,所有这些示例都是专注于计算机视觉任务的深度学习模型。

据我所知,不支持语言模型(例如 BERT)。[0]

现在,这两个框架在特定情况下可能有一些相似之处。例如,使用 Tensorflow,您可以处理图像并准备它们以训练您的机器学习模型。

OpenCV 也可以用来做一些机器学习任务。例如,您可以在 OpenCV 中训练 SVM 模型、Logistic 回归模型或 Bag Of Visual Words 模型。

什么时候用哪个

现在,介绍这两个广泛使用的框架中的每一个的用例。

如果您正在为某些特定任务构建新的深度学习模型并使用自定义数据集,那么 Tensorflow 应该是您的选择。

如果您已经完成了针对计算机视觉任务的深度学习模型的训练,尤其是:图像分类、对象检测和图像分割,并且您正在寻找部署您的模型,那么 OpenCV 可能是一个不错的选择。

Tensorflow 和 OpenCV 都有 C++ 和 Python API。

在 Tensorflow 中,机器学习工程师使用 Python API 进行训练,他们使用 C++ API 在 C++ 应用程序/API/SDK 中部署他们的模型。

但正如我之前提到的,OpenCV 可能是一个不错的甚至更好的部署选择,这就是为什么。

许多公司已经使用 OpenCV 很长时间了。这些公司正在构建计算机视觉产品。他们非常习惯于框架,他们不想在他们的生产代码中添加另一个第三方库(另一个依赖项)。在这种情况下,他们可能会选择使用 OpenCV 来部署他们的计算机视觉深度学习模型。

OpenCV 可以成为生产部署的更好选择的另一个非常重要的一点是性能。事实上,对于一些深度学习模型,在 OpenCV 中运行它们可能比在 Tensorflow 中运行它们快一个数量级(即使使用 Tensorflow 的 C++ API)。

对于某些行业来说,这可能是一个关键点。

此外,关于这两个框架的 C++ API 的另一件可能会破坏交易的事情是文档。 OpenCV 的文档(即使我们在这里只讨论 DNN 模块)比 Tensorflow 的 C++ API 文档要好得多。

您可以使用 OpenCV 而不是 Tensorflow 的最后一点是,使用 OpenCV,您可以在 C++ 中训练 SVM 模型。这意味着在相同的生产代码中,您可以训练模型并部署它。

Conclusion

To summarize:

  1. 在某些用例中,Tensorflow 比 OpenCV 更好,在其他一些用例中,OpenCV 比 Tensorflow 更好。
  2. TensorFlow 的强项在训练方面。如果您将模型部署为 C++ 应用程序/API/SDK 的一部分,则 OpenCV 的优势在于部署方面。
  3. 两个框架之间的主要重叠点发生在计算机视觉任务中。

我是一名机器学习工程师,致力于解决具有挑战性的计算机视觉问题。我想帮助您学习应用于计算机视觉问题的机器学习。就是这样。

  1. 通过帮助您了解该领域的最新动态。为此,我几乎每天都在 LinkedIn 和 Twitter 上分享小型 ML 帖子。所以跟我来吧![0][1]
  2. 通过在我的时事通讯上给你一个简短的帖子的每周摘要。所以订阅吧![0]
  3. 通过在 Medium 上撰写有关机器学习中不同主题的文章。所以跟我来吧!
  4. 通过为您提供免费的机器学习工作就绪清单,帮助您检查如果您计划从事 ML 职业,特别是计算机视觉方面的职业,您需要了解的所有要点。您可以在此处获取清单。[0]

5. 最后但同样重要的是,通过与您分享我的免费 TensorFlow 入门课程,该课程有超过 4 小时的视频内容,您可以在那里问我任何问题。[0]

此外,如果您有任何问题或只想聊聊 ML,请随时在 LinkedIn 或 Twitter 上与我联系!

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2022年4月28日
下一篇 2022年4月28日

相关推荐