用数字输出处理C++单元测试的框架/工具

Dav*_*dge 11 c++ testing unit-testing computer-vision

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

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

我们希望使用类似CDash/CTest的东西来运行这些自动化测试,并随着时间的推移查看视觉算法的改进如何使图像更准确地分类.

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

Phi*_*ipp 6

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

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

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

##teamcity[buildStatisticValue key='detectedObjectsPercent' value='88.3']
Run Code Online (Sandbox Code Playgroud)

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

不要忘记按此处所述设置自定义图表.

我认为TeamCity的设置非常简单,所以试一试吧!如果我自己一个项目工作,我甚至喜欢它!