c++ - 用于处理带有数字输出的 C++ 单元测试的框架/工具

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

<分区>

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

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

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

有人知道可以执行此操作的工具/框架吗?

最佳答案

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

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

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

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

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

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

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

关于c++ - 用于处理带有数字输出的 C++ 单元测试的框架/工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4600426/

相关文章:

ios - 无法运行 Appium 服务器

c++ - 测量可执行文件的数据和指令缓存的大小

C++,Boost,如何获取不再存在的路径名?

c++ - 字符串 vector 到 istringstream

c++ - 通过引用识别 Lambda

cocoa - 您可以使用 CruiseControl 构建 Cocoa/Objective-C 项目吗?

c++ - 为什么 cudaMemcpy 花费这么多时间?

c# - 使用最小起订量测试 Controller

ios - 在 Swift 中使用 UITesting 捕获屏幕录制

testing - 使用 Laika 和 PhantomJS 进行集成测试