【问题标题】:Framework/tool for processing C++ unit tests with numerical output [closed]用于处理具有数字输出的 C++ 单元测试的框架/工具 [关闭]
【发布时间】:2011-06-03 18:43:00
【问题描述】:

我正在开发一个 C++ 应用程序,该应用程序使用计算机视觉技术来识别一系列图像中的各种类型的对象。这 (1000 多张) 图像已经过人工分类,因此我们为每张图像都有一个 XML 文件,其中包含对象在图像中实际位置的描述。

我想知道是否有一个测试框架可以理解/绘制数字测试的结果,在这种情况下,可以衡量程序图像分类中的错误,而不仅仅是通过/失败样式单元测试。

我们希望使用 Cdash/CTest 之类的工具来运行这些自动化测试,并随着时间的推移查看视觉算法的改进如何使图像得到更正确的分类。

有人知道可以做到这一点的工具/框架吗?

【问题讨论】:

  • 希望有人会反驳我,但通常情况下,测试框架通常是非常通用的。因此,它们不支持特定类型的计算。在给出正确答案的情况下,您可能需要编写自己的代码来评估计算中的错误。如果您可以测量误差,则可以根据误差是否在指定的容差范围内创建测试。然后,您可以根据越来越严格的公差创建一组测试。这将让您观察改进是否减少了计算中的错误。
  • @Bowie Owens:让它成为答案,我会投票给你 :)
  • 手工分类包括什么?是分割还是边界框或对象标签?

标签: c++ unit-testing testing computer-vision


【解决方案1】:

我认为您应该区分单元测试和算法性能(=准确性和/或速度)评估。您应该同时应用两者,但要分开应用。

单元测试应该告诉您您的代码是否符合预期。不确定是否/如何对从原始图像到提取对象的整个链进行单元测试,但您应该能够单独测试组合起来完成工作的“单元”(模块/方法/类)。单元测试应该给你“失败”或“通过”。如果速度优化改变了代码的行为,单元测试应该告诉你这一点。对于单元测试,有很多可用的框架(我喜欢 Google Test,但还有很多其他的。)

您的问题似乎更多地针对第二部分:评估算法的质量。我个人喜欢TeamCity,它主要用作 Java/.net 持续集成服务器,但您也可以轻松地将它与 C++ 一起使用。我在我们的商店中编写了几行代码,利用他们的service API 以 TeamCity 格式输出 Google 测试结果。每次有人签入新修订版时,TeamCity 都会执行构建(可以是 Visual Studio 解决方案、Ant、命令行脚本或其他)。所有团队成员都可以通过漂亮的 Web ui 看到结果。此外,您可以举报custom build statistics。这可用于算法的性能测试等任何事情。你只需输出一行像

##teamcity[buildStatisticValue key='detectedObjectsPercent' value='88.3']

在您的应用程序的控制台上(必须配置为在每个构建中运行),TeamCity 将存储这些值并在 Web 用户界面上提供一个漂亮的图表(随时间变化的值)。

不要忘记按照here 的描述设置您的自定义图表。

我认为 TeamCity 的设置非常简单,所以试试吧!我什至喜欢一个人做一个项目!

【讨论】:

  • +1 提到了 TeamCity,真的值得一试。上次我查看他们为最多 20 名开发人员的团队提供免费许可证。
  • 感谢 TeamCity 的设置轻而易举,而且似乎可以很好地完成我需要的工作 :)
【解决方案2】:

您所描述的是一个典型的计算机视觉/图像处理测试应用框架。尽管这些年来我设计和使用了几个这样的系统,但它们都是/都是专有的。

这种通用测试工具应具有可变容差、I/II 类错误和错误率的不同度量、总摘要以及逐个问题的识别。它还应该为不同的用户提供不同的视图 - 例如,在调试时,程序员需要与发布/项目经理不同的数据。
使用统计图增强的数据库驱动后端和自动化测试套件也很棒!

很遗憾,我不知道有任何可用的此类测试框架。
我一直有为这样一个系统启动一个开源项目的想法,但是时间和资源是稀缺的,而且我从来不确定这样一个系统的实际可取性(尽管我很确定它可以通用用途,以满足许多应用程序的需求)。
我很想知道是否真的对这样一个系统感兴趣,它可能会推动这个项目的车轮...... 我认为此时您将不得不编写自己的代码。

【讨论】:

    猜你喜欢
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 2010-09-10
    相关资源
    最近更新 更多