python - HaarCascade 训练:合并 .lst 文件
问题描述
我正在使用 HaarCascade 开发自己的对象检测器。顺便说一句,我被困在某个点上,我将在下面解释。
情况是这样的: - 我收集了我的对象的 100 张图像(比如说苹果) - 我收集了大约1500 张底片图像 - 我创建了negatives.txt,一个包含底片图像路径的文件 - 我创建了positives.txt,一个文件其中包含我的正图像的路径、对象数量、坐标和尺寸
现在,这就是问题所在。
用于增强我的数据/图像,我看到如果我为每个对象图像执行它(使用opencv_createsamples.exe
相同的参数),输出将或多或少是 1000 个正图像(负背景 + 对象)以及.lst file
包含路径和对象坐标在负像里面。这些坐标不会改变(因为我在执行时设置了它们opencv_createsamples.exe
)。
问题是:更改createsamples
每个对象图像所需的参数然后将它们全部合并是个好主意吗?
我现在正在做的例子:
- opencv_createsample.exe -p1 0.5 -p2 0.6 -p3 0.7
- 对于我的每个底片,我的一个对象图像
- .lst 带有信息的文件(如果对每个正对象图像执行相同)
我愿意做的例子:
- 对于我的每个底片的每个对象图像
- opencv_createsample.exe -p1 0.5 -p2 0.6 -p3 0.7 - opencv_createsample.exe -p1 0.6 -p2 0.7 -p3 0.8,依此类推(参数值随机)
- 每个对象图像具有不同信息的多个 .lst 文件
- 合并所有 .lst
我真的希望我解释了一切。
我怀疑这样做的效率:通过在不同位置使用不同对象(同一类)进行训练,或者仅使用一个对象相同,我将获得更高的准确性?
词汇表:
- object = 我想检测的东西(一个苹果)
- 负图像 = 不包含对象的背景图像
- 正图像 = 带有负图像的处理图像(创建样本输出)+ 对象
谢谢大家
更新
在 HaarCascade 上观看 Sentdex 视频后,在这里:训练 Haar 级联对象检测 - OpenCV with Python for Image and Video Analysis 20
解决方案
我认为在每个(正)图像中使用多个对象训练模型会得到更好的结果。这也取决于你想要达到的目标。1.尝试您在问题中提到的两种方法并使用相同的图像进行测试。2. 比较有效性(检测的准确性)和效率(例如,速度是否有明显差异?)
推荐阅读
- java - 检查文件是否存在于系统上的任何位置...?
- java - 未解决的依赖关系 NetCDF-Java 库
- node.js - 如何调试 react.js 库
- react-native - 如何为 React Native FlatList 粘性标题设置动画
- docker - Google Container Registry Per Image ACL
- wordpress - 如何在 wordpress 中使用 OOP 将短代码中的脚本排入队列?
- javascript - React Native:React-Navigation 无法读取未定义的属性“导航”
- android - 设计应用程序/服务器架构,以检测路由请求的版本?
- python - 将python列表列表转换为rpy2中的R向量列表
- oauth-2.0 - 如何为单个工具实现 OAuth2,而不将其用作我的应用程序的授权解决方案