说说这阵子遇到的烦人bug

原创 2016年08月30日 14:35:27

从上周开始的行人检测项目, 到现在已经遇到过不少的bug, 有两个还暂时还没有解决. 有提示的bug都比较好弄, 要命的是没提示的, 断点看数值变化又看不出来, 我现在弄这几个弄了都有四五天了

我自己debug的步骤是 

看提示(确定函数使用错没错)- 看显示(cout, imshow之类的)- 加断点看输入输出(看数据变化)- 看源码 - 硬试(更换输入, 重写代码之类的),  我是半路出家的不太清楚正规步骤是什么


说说比较糟心的三个

环境:  ubuntu 14.04 64位 , c++11 , opencv 3.1.0

          ubuntu 16.04 32位 , c++11 , opencv 3.1.x

1. 对vector push_back一定量数目float类型的数据后,  也就是将hog的3780维描述子push到一个vector里去, 提示达到max_size(具体什么提示忘记了). 


一开始还怀疑自己的用法错了, 总是有错误, 最后我是直接拷贝内存到vector里才解决这个问题的. 打印看一个vector的max_size有一大串数字(这个数字应该是size_t(-1)/sizeof(tp), tp对应template变量) , 就算是3780*10也没达到那个数字


2. 报错函数: HOGDescriptor::compute()

    错误信息:  除了segment fault 没有任何提示


因为它是过了第一个大循环之后再调用compute出错的(ps: 因为是多尺度, 嵌套了4层循环, 读图,尺度变换,滑窗)

所以一开始我还想是不是输入的图像不对? 因为是自己写的detectMultiScale, 所以就一直在查哪里写错了, 后来又看了源码, opencl部分我暂时还没有办法看, 其他部分怎么看也看不出问题.

后来慢慢试, 发现当我的循环次数多了的时候, 它才会报错, 所以还是怀疑hog里面的并行与opencl加速实现出了问题

解决办法: 减少循环次数, 暂时没找到其他解决方法

-----------------------------------------------------------------------------------------------

gdb debugger:





偶然在知乎上看到gdb的使用, 我还是第一次用, 信息明显比qt多了些, 能看到调用栈, 能看到new了这么多线程

但是按他的方法捣鼓了一会还是没有办法得到更详细的错误信息, 和我当初用qt一样是加断点看参数..

只能看源代码去逐一排查调用栈上面的函数, 而我对opencl具体实现一无所知, 所以这个问题对于我来说还是无解

换回opencv2可能会有帮助, 但是我暂时没有这个打算


                                                                                                                            2016. 9 .11        3:43

-------------------------------------------------------------------------------------------------------------------------



3.报错函数: HOGDescriptor::detectMultiScale()

   错误信息: 输出结果错误

这个输出结果错误的很诡异. 一开始没太注意到这个错误, 后来发现, 多尺度检测到的区域, 是每张图片的正中央


没错, 就是正中央, 不管什么图片. 
刚开始我还在想, 是不是训练错了?怎么会这么巧?将结果显示出来后才发现到这么一个规律.

打印了每一个找到的区域, 截一段大家感受下, 按照 label - img.size() - Rect 顺序打印的

1
[1141 x 762]
[91 x 181 from (525, 289)]
1
[1058 x 787]
[91 x 181 from (482, 302)]
1
[1161 x 960]
[93 x 186 from (534, 387)]
1
[1083 x 704]
[89 x 179 from (496, 262)]
1
[933 x 668]
[88 x 177 from (422, 245)]
1
[543 x 366]
[80 x 159 from (231, 103)]
1
[1176 x 960]
[93 x 186 from (541, 386)]
1
[1088 x 960]
[93 x 185 from (497, 388)]
1
[1201 x 960]
[93 x 186 from (551, 387)]
1
[1198 x 921]
[93 x 185 from (552, 368)]
1
[893 x 708]
[89 x 178 from (402, 264)]
1
[1055 x 879]




之前我用它找hard example时还好好的, 同样看了源码, 同样看不懂opencl加速的部分

是不是训练svm训练错了? 我从头又训练了几个, 一个一个的去试, 都是一个结果, 心理犯嘀咕, 拿别人训练好的, 还是同样的结果. 注意我这里用的测试集测试, 训练集没有出现过这些图片

在程序中断点调试, 对比了我提供的decision function 与 getDefaultPeopleDetector中的数据, 内容是差不多的.


仔细想想, 几百张的图片检测到的区域全是正中央, 未免太过巧合. 因为滑窗每个区域都遍历过了, 若是分类器训练错误, 最多可能所有图片都检测不到行人. 能检测到又是正中央,又同时是几百张同一个结果, 如果detectMultiScale程序没有问题的话, 这种事情几乎是不可能事件, 每个样本是独立的.

所以这里高度怀疑detectMultiScale函数, 我猜测是对速度进行优化的部分出了问题, 比如并行计算和opencl优化部分


解决办法: 暂无

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

0基础学习 opencv

我不会花多少心思来维护我的博客,  所以不太有什么结构性. 既然是零基础快速入门,  首先找本教程,  照着样例去打,  试着修改,  慢慢理解.   有时候书看不下去了就看看别人的代码. 比如我当时...

opencv特征检测之角点检测

第一篇文章就说,  重要的是学习图像处理算法,  忘了说相关的书.     在我电脑的桌面上天天放着这些计算机视觉的书,  最近却很少看过,  因为面临找工作的压力么,  看书太慢看过印象还不深,  ...

为了不苦一辈子,定要苦过这阵子

人的生活方式有两种:   第一种方式是像草一样活着,你尽管活着,每年还在成长,但是你毕竟是一棵草,你吸收雨露阳光,但是长不大。人们可以踩过你,但是人们不会因为你的痛苦,而他产生痛苦;人们不会因为...

和烦人的注册码说拜拜

如果你做过登录信息过期或者token失效的案例,你也许对注册码的试用期计算有一定的感悟 。比如我们在Android中,我们首次登录后可以将一个时间戳保存在本地,每次进入APP都取出来与当前系统时间做差...

剔除单向链表重复值节点时的烦人bug

一、初步实现:以前在写单项链表重复值删除的时候,用的是先排序然后进行重复值剔除的方法。重复值剔除完毕之后,得到的元素也是有序的,然后顺利的写完了,没有出现任何bug。也就没有去尝试新的方法去做,代码如...

RCP: P2 Update两个烦人bug和解决办法

问题 Eclipse新的P2 Update机制,使用起来很方便,如果使用P2 plugin自带的UI,开发者完全不用写任何代码 即可实现application的在线更新。 但是P2 Update...
  • luoww1
  • luoww1
  • 2014年07月28日 17:34
  • 726

19.原谅我还说iOS7,自定义转场动画与topLayoutGuide在iOS7中的bug

最近在项目中有需求显示一系列Help界面,用以引导用户操作,经过分析我决定用present一个视图控制器的方式来完成,但是系统的present动画又不能满足要求,那怎么办呢?        那自然是...

关于scanf···话说作者写的不太明白,有些bug

我觉得,在输入输出函数中,scanf()函数,应该是最麻烦的,有时它给我们的结果很可笑,但是一定是一原因的.... 首先声明一下,这篇日志不是介绍scanf()中各种格式符用法的文章(没有这个必要,...

转:从谷歌的一个Bug说起,谈谈键盘事件的兼容性

本文转自:http://bbs.blueidea.com/thread-2881962-1-1.html   上面是谷歌首页,当输入某个词时,下面会弹出自动补全提示。功能并不复杂,但考虑到要兼容各个浏...

浅浅的说一下BUG是怎么来的

先问一个问题,BUG是怎么出来的。估计会有很多人回答,是测试人员测出来的。如果测试人员连BUG都测试不出来,那还叫啥测试人员了。再继续深入问下去,如果BUG本身就不存在,测试人员能测出来吗?这个时候的...
  • janne09
  • janne09
  • 2012年03月25日 15:38
  • 494
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:说说这阵子遇到的烦人bug
举报原因:
原因补充:

(最多只允许输入30个字)