比如熊猫的例子,当检测失败时,我们看看控制台,tracking
失败,但是detection是成功的又15个通过了第二个过滤器,但是在第三个过滤器失败了,found 0 NN
matches。这说明程序还是有可以改进的地方
程序不会出现误跟踪,只有失跟踪,这其实已经说明问题了,可以改进。
原版905/944的识别率,而我改后低了很多只有750/944。
tldSortByOverlap出现问题。
而且现在一个自动版的整体处理速度也很快:即自动版,和现在的最新版类似,只是把tldSortByOverlap删掉不用
而且到后面也只要20几ms,而当前最新版却要200ms
这些都是大问题啊,怎么越改越出问题
很可能是加时间检测出了问题,可能很耗时间。。。
发现一个问题:good_boxes_temp没有clear。。。。。。。。而good_boxes在别的地方有clear
又发现个问题:只是if了good_boxes_temp.size()>num_closest当小于时却没有把good_boxes_temp的值push进入good_boxes
还有关于
leaf = (leaf << 1) +
features[scale_idx][t*structSize+f](image);
到底是structSize还是nstructSize还是nstructs呢,我觉得是structSize
程序的正确答案:car例子
如果是structSize:871/944
如果是nstructs:905/944
这是标准答案
减少失测率的一个办法,是源程序track,detect
有3个过滤器。当没有完美答案时可以追求次完美答案的,当track失败,只要通过了detect的第三个过滤器当然就可以了,当没有通过第三个过滤器的答案,只要通过第二个过滤器就可以了,只通过方差过滤肯定是不行的。而且可以调整阈值,来达到从无值到有值的目的。。。。而且通过实践发现,很多时候跟踪失败但是有通过第二个过滤器的框框,而且通过第二个过滤器的框框挺准的。其实可以这样当跟踪失败时让程序把把通过了第二个过滤器的框框通过显示一个出来,但是这个框框不被用来学习用。。。程序里只要track失败的框框都不被用来学习,detect到的都不用来学习。。。。。。问题是通过第二个过滤的框框有很多,那选哪一个呢,用第三个过滤器过滤又会全部过滤也不行。。此时我们可以依据经验,首先那些集中的,概率密度大的框框附近,对那些时间和空间上偶然出现的一两个的可以考虑排除。然后依据经验,第二帧的目标位置不会离第一帧的目标位置太远,对那些太远的权值可以取反,也就是说把距离的取反当做权值。或者哪个框框离所有国了第二个过滤器的框框的均值最近的。而且上一个lastbox要在这个球均值的过程中占很大的比重。
改进
加强学习能力,tack失败但detect可信的也learn加到模板里,并且下一步可以track。
去掉方差过滤,方差过滤会把一些好的也过滤了。。。。当太大的时候再方差过滤
不是万分可信的东西不要用来模板,用来升级模板,但可以显示