说说这阵子遇到的烦人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优化部分


解决办法: 暂无

 

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

新手Python上路 不断更新碰到的各类bug

Greetings, 最近某公司的OA强制要求C++或者Python,尼玛赤裸裸的歧视Java选手,不能忍啊,虽然说学C++这样开发语言通吃了,不过想想当年学C语言那指针蛋疼的操作,**P *&p...
  • fantasiasango
  • fantasiasango
  • 2016年09月22日 02:19
  • 778

遇到BUG时你应该怎么做

下面是拜读Think Python 中关于代码错误的调试方法的一些记录,特意摘出来以便告诫自己 当你的程序不工作时, 1.首先你需要问自己这些问题: ˆ 有没有什么程序应该做却没有发生?...
  • baidu_29609961
  • baidu_29609961
  • 2017年08月26日 17:05
  • 214

项目开发中遇到的--Bug知识整理!

====第一个Bug====》》  目前测试出现在IE7,IE6中。     问题:标签,经测试,不兼容IE7,IE6. (个人建议不要使用button标签)     解决方案:改成 /...
  • andyliulin
  • andyliulin
  • 2016年08月19日 13:31
  • 847

开发过程中遇到的bug以及解决办法 面试回答个人遇到

前后端分离跨域问题,前后端分离带shiro跨域问题,前后端分离ip不同机器之间跨域问题...
  • u013208953
  • u013208953
  • 2017年10月12日 15:41
  • 148

项目中遇到的bug(web前端-持续更新)

项目中遇到的常见bug,及时整理。 input放在a标签里面单机不能获取input的光标(IE环境下)双击才可以获得焦点,目前有的解决方案: 不要给a标签添加href属性; 不要在外面套上a标签。 返...
  • wkyseo
  • wkyseo
  • 2016年04月15日 10:11
  • 2898

Android 开发过程中遇见的奇葩的bug

一、大图片OOM 当初是在黄页详情页使用imageload加载一个大图片。很OK的,压力测试的时候,会出现这样情况,不停快速打开关闭详情页,根据手机性能而定大约10_20次就出现了OOM(经分析,之前...
  • yanwenyuan0304
  • yanwenyuan0304
  • 2016年01月07日 12:01
  • 1108

程序员遇到bug怎么面对?

这几天项目在做性能测试,做渗透测试的时候,给我提了两个安全方面的bug,之前写的时候没有考虑这个问题,bug提出来以后找了个有经验的人问了问怎么做,然后就开始动工了,测试没有问题以后将bug指回去,不...
  • u013086062
  • u013086062
  • 2016年11月07日 22:10
  • 966

java开发中遇到的Bug整理

java开发中遇到bug是再正常不过了,所谓程序不是写出来的是调出来的,bug的调试是程序开发中重要的一部分也是必不可少的一部分。以下是我项目开发中遇到的bug整理,有一些可能比较低级,但是我还是把它...
  • nqmysbd
  • nqmysbd
  • 2016年11月05日 11:26
  • 2092

项目中遇到的bug及相关经验

1.在为listview添加头布局的时候,一定要把头布局设置为单独的view,头布局不要和listview在同一个布局里面,再添加给listview不然会报错   2.为imageview 设置背景...
  • DG_summer
  • DG_summer
  • 2016年04月22日 02:39
  • 559

烦人的幻灯片

Page 527#include #include #include #include #include using namespace std; int n; struct H{ int ...
  • qq_36820605
  • qq_36820605
  • 2017年02月10日 08:21
  • 459
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:说说这阵子遇到的烦人bug
举报原因:
原因补充:

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