Opencv createsamples 实用程序:紧密边界框会用未裁剪的图像代替正样本吗?

     2023-03-13     25

关键词:

【中文标题】Opencv createsamples 实用程序:紧密边界框会用未裁剪的图像代替正样本吗?【英文标题】:Opencv createsamples utility: do tight bounding boxes substitute uncropped images for positive samples? 【发布时间】:2014-02-02 12:36:39 【问题描述】:

我有近 1000 张图像要用作 opencv 的正样本,以在 cascadedtrainer 中使用。

我已经阅读了这个出色的教程:http://note.sonots.com/SciSoftware/haartraining.html,以及这个:http://www.computer-vision-software.com/blog/2009/11/faq-opencv-haartraining/,但我无法决定如何处理 createsamples 实用程序的 -w 和 -h 参数以及裁剪我的图片。

我有很多背景内容的大图像 [1300x600],因此实际上需要由级联分类器检测的对象通常占图像的 10% 左右。

是否需要裁剪图像然后使用 OpenCV 的 createsamples 实用程序? 或者我可以省略裁剪部分,因为无论如何,正样本的描述文件包括 x 和 y 坐标以及围绕感兴趣对象的边界框的高度和宽度。我很困惑,因为我在某处读到“背景过多”会破坏表演。当一个人已经为图像中的对象指定了紧密的边界框时,是否存在“背景过多”之类的情况?

我的主要问题是时间,如果它最终不会损害分类器的性能,我希望避免手动裁剪 1000 张图像。


编辑

我实际上做了一些裁剪,下面是我的样本外观的平均分布:

【问题讨论】:

【参考方案1】:

您无需调整样本大小或裁剪样本,但需要使用注释工具创建以下格式的阳性样本列表:

path_to\sample1.png 1 10 10 20 22
path_to\sample2.png 2 10 10 20 22 40 40 30 33
...

这可以解决您担心的所有问题。根据您的示例,创建此文本文件可能会很耗时。

正样本边界框内的背景过多可能会影响模型中弱分类器的有效性,但它在最终级联分类器模型中可能重要也可能不重要。您应该关心的是创建良好的正样本,其中尽可能精确地在边界框内捕获对象。意思是:

    让每个样本与其对应的边界框右上角的相对位置相同,并且 对所有样本具有相同的对象宽度/边界框宽度比率。

换句话说,尝试将边界框中的所有对象居中,并为所有对象添加相同的填充“百分比”,这样当它们被 createsamples 裁剪和调整大小到 vec 文件时,所有对象的位置看起来都相似和大小。

【讨论】:

谢谢!不过,我对一些图像进行了一些裁剪,看看它的效率如何……我编辑了我的问题以添加这些图像。你能看看吗?我只是想知道这些图像是否符合“精确边界框”的两个条件?如果不是,并且如果使用注释工具手动绘制边界框实际上是一个更好的选择,那么我想知道 - 我们不可能正确处理像素,对吧?所以我猜,如果在手动注释中,边界框的大小略有不同,只要它们大致相同就可以了? 使用级联分类器,您的目标应该是匹配所有样本的特定特征,以便它们或多或少地出现在与边界框相同的相对位置。例如,汽车的轮胎必须位于所有样本中的某些位置。这样,训练程序可以更轻松地找到这些共同特征。 边界框的宽高比需要有多精确?如果我们偏离几个像素,分类器是否非常敏感? 这真的是一场妥协游戏:如果你的训练集中一切都很完美,那么你的弱分类器非常强大,但实际上模型无法检测到稍微偏离模型的对象。如果它们未对齐,则您的弱分类器可能不是最佳的,因此在实践中您可能会再次错过一些明显的情况。您需要总体上查看您的数据,并查看您可以对它们做出哪些假设。您所有的汽车都与本文中的样本处于相同的视角吗?然后,您可能会从精确裁剪中受益。如果您看到变化,请稍微放松一下模型。 因此,如果您的训练侧视车,您可能会分别向左或向右,但不是两者兼而有之?

opencv_annotation.exeopencv_createsamples.exeopencv_traincascade.exe

...后得到txt文件,内容如下。框选时框住缺陷即可。opencv_createsamples.exe,生成vec文件。此工具可以把框选的缺陷缩放到指定大小(默认24*24像素,注意负样本尺寸≥此像素),即所谓的归一化。opencv_traincascade.exe,生成cascade.xml,... 查看详情

将 OpenCV 构建为 deb 包:CPackDeb:文件实用程序不可用

】将OpenCV构建为deb包:CPackDeb:文件实用程序不可用【英文标题】:buildingOpenCVasdebpackage:CPackDeb:fileutilityisnotavailable【发布时间】:2019-11-0716:05:43【问题描述】:我在Ubuntu18.04上构建OpenCV4.1作为deb包。建库成功后。我打电话给makepac... 查看详情

使用 LBP 训练 Haar 级联的问题

...我所做的是,我拍摄了2500张500x500的平方图片来填充opencv_createsamples的样本。然后我将它们生成为:opencv_createsamples-info\'logo.info 查看详情

如何使用opencv训练分类器以及训练过程中的问题

...plus打开该文件,只需删掉最后一行3创建vec文件:将opencv_createsamples.exe和opencv_traincascade.exe放到图片文件夹的上层目录,利用opencv_createsamples.exe应用程序在该目录下使用如图cmd命令:其中的-vec是指定后面输出vec文件的文件 查看详情

级联分类器训练-----opencv

关键词:级联分类器、opencv_traincascade下面简述操作过程:准备正负样本:neg、pos正负样本路径生成:dir/a/b>path.txt//path:posorneg正样本训练集生成:opencv_createsamples.exe-infopospos.txt-vecpospos.vec-num799-w24-h24 pause样本训练:opencv_tra 查看详情

图像处理实用资源

...自:http://www.cnblogs.com/tornadomeet/archive/2012/05/24/2515980.html跟OpenCV相关的:http://opencv.org/2012年7月4日随着opencv2.4.2版本的发布,opencv更改了其最新的官方网站地址。http://www.opencvchina.com/好像12年才有这个论坛的,比较新。 查看详情

OpenCV 和 C++:Traincascade 错误:一个实际问题

...0-2308:47:35【问题描述】:在过去的几天里,我一直在研究createsamples和traincascade方法以生成汽车级联分类器。像我自己,很多人发现自己不知道如何克服所有的错误和问题,所以在这篇文章中,我将尽我所能解释 查看详情

在 OpenCV 中查找多边形边界内的平均颜色

】在OpenCV中查找多边形边界内的平均颜色【英文标题】:FindingtheAverageColorwithinaPolygonBoundinOpenCV【发布时间】:2015-09-0820:23:57【问题描述】:背景我正在尝试创建一个实用程序,该实用程序将使用OpenCV返回给定多边形内的平均像... 查看详情

Haar 创建样本解析错误

】Haar创建样本解析错误【英文标题】:Haarcreatesampleparseerror【发布时间】:2011-11-0822:05:29【问题描述】:我正在通过“opencv_createsamples.exe”在opencv2.1中创建示例,但在第1行出现解析错误。文件positives.txt包含:c:\\haar\\Positives\\PosI... 查看详情

Haar-级联对象检测 OpenCV - .xml 文件分类器未正确检测

...58【问题描述】:我使用了与tutorial中相同的参数。perlbin/createsamples.plpositives.txtnegatives.txt样本1500 查看详情

androidapp开发超实用实例|opencv在android手机实现在图像上添加文本(代码片段)

 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,它可以运行在Linux、Windows、Android和MacOS等操作系统上。OpenCV原本由一系列C函数和少量C++类构成,同时提供了Python等其他语言的接口,它实现了图像处... 查看详情

Java中的C ++(OpenCV)[重复]

】Java中的C++(OpenCV)[重复]【英文标题】:OfC++injava(OpenCV)[duplicate]【发布时间】:2015-11-2914:28:58【问题描述】:对不起,我的英语不好。学习OpenCV,做android的程序,需要在眼睛的位置旋转照片,需要的代码在第8章《用实用的计... 查看详情

Iphone 中的实用程序应用程序

】Iphone中的实用程序应用程序【英文标题】:utilityapplicationsinIphone【发布时间】:2010-09-2405:39:40【问题描述】:什么是实用应用程序以及如何在Iphone中使用它们?如何开始实用应用程序实施?【问题讨论】:【参考方案1】:实... 查看详情

opencv实用:c++实现低对比度图像脏污区域检测(代码片段)

文章目录前言1.低对比度图像脏污区域检测2.实现方法介绍3.C++源码实现4.结果总结参考前言今天看了一篇技术文档感觉挺有意思,是关于在低对比度图像中检测脏污区域(这里的脏污指的是比其他区域暗的部分,... 查看详情

隐藏实用程序类构造函数:实用程序类不应具有公共或默认构造函数

】隐藏实用程序类构造函数:实用程序类不应具有公共或默认构造函数【英文标题】:HideUtilityClassConstructor:Utilityclassesshouldnothaveapublicordefaultconstructor【发布时间】:2013-01-0203:40:18【问题描述】:我在Sonar上收到此警告。我想要解... 查看详情

实用程序问题 - iPhone SDK

】实用程序问题-iPhoneSDK【英文标题】:QuestiononUtilityApplication-iPhoneSDK【发布时间】:2010-02-2822:01:30【问题描述】:我在一个基于实用程序的应用程序上制作了这个应用程序。我如何将此应用程序合并到基于视图的应用程序中,以... 查看详情

为啥 `nm` 实用程序这样命名?

】为啥`nm`实用程序这样命名?【英文标题】:Whyisthe`nm`utilitynamedassuch?为什么`nm`实用程序这样命名?【发布时间】:2012-01-1323:02:25【问题描述】:nm用于在二进制文件中列出符号的实用程序并未在其文档中包含任何关于如何将其... 查看详情

使用通用/实用程序库

】使用通用/实用程序库【英文标题】:WorkingwithCommon/UtilityLibraries【发布时间】:2010-09-0716:06:13【问题描述】:在我工作的公司,我们有一个“实用程序”项目,我们构建的几乎所有应用程序都引用了该项目。它有很多东西,比... 查看详情