小编Vip*_*per的帖子

使用P. Viola,M.Jones Framework计算最佳阈值的最佳方法

我正在尝试用C++实现P. Viola和M. Jones检测框架(一开始,只是序列分类器 - 不是级联版本).我认为我设计了所有必需的类和模块(例如积分图像,Haar特征),尽管有一个 - 最重要的:AdaBoost核心算法.

我读过P. Viola和M. Jones的原始论文和许多其他出版物.不幸的是,我仍然不明白我应该如何找到一个弱分类器的最佳阈值?我发现只有小的参考"加权中位数"和"高斯分布"算法和许多数学公式......

我曾尝试使用OpenCV Train Cascade模块源作为模板,但它非常全面,因此对代码进行逆向工程非常耗时.我还编写了自己的简单代码来理解Adaptive Boosting的概念.

问题是:你能解释一下计算一个弱分类器最佳阈值的最佳方法吗?

下面我将介绍AdaBoost伪代码,从Google中的样本重写,但我不相信它是否正确接近.计算一个弱分类器非常慢(几个小时),我对计算最佳阈值的方法有疑问.

(1) AdaBoost::FindNewWeakClassifier
(2) AdaBoost::CalculateFeatures
(3) AdaBoost::FindBestThreshold
(4) AdaBoost::FindFeatureError
(5) AdaBoost::NormalizeWeights
(6) AdaBoost::FindLowestError
(7) AdaBoost::ClassifyExamples
(8) AdaBoost::UpdateWeights

DESCRIPTION (1)
-Generates all possible arrangement of features in detection window and put to the vector
DO IN LOOP
    -Runs main calculating function (2)
END

DESCRIPTION(2)
-Normalizes weights (5)
DO FOR EACH HAAR FEATURE
    -Puts sequentially next feature from list on all integral images
    -Finds the best threshold …
Run Code Online (Sandbox Code Playgroud)

pattern-recognition artificial-intelligence machine-learning computer-vision viola-jones

10
推荐指数
1
解决办法
6687
查看次数

加权中值计算

我正在寻找关于加权中值算法和/或C++中的示例代码的计算的好的学习材料.我的中位数的权重是0到1之间的值.你能推荐一些链接吗?

c++ algorithm

9
推荐指数
1
解决办法
8337
查看次数

SEH StackOverflow异常 - 是否真的无法捕获?

SEH exceptions在StackOverflow和CodeProject.net上读过很多文章.

SEH exceptions在我的C++程序中实现处理后,我受到堆栈溢出异常的影响,我的软件没有捕获它.

经过下一部分研究后我明白,以编程方式检测这种异常是不可能的,因为我们没有可用的堆栈地址空间,因此程序内存已损坏.

我想问你有关处理堆栈溢出异常的经验.它看起来像是一个挑战,如果在非托管代码编程语言中不可能,我真的很感兴趣?

下面我将介绍我的示例程序(C++)的一部分,它可以重现stack overflow exception.它适用于任何SEH exception,但不是堆栈溢出:

LONG WINAPI SehHandler(PEXCEPTION_POINTERS pExceptionPtrs)
{ 
    cerr << "Handled SEH exception!\n";
    cerr << "ContextRecord: " << pExceptionPtrs->ContextRecord << endl;
    cerr << "ExceptionRecord: " << pExceptionPtrs->ExceptionRecord << endl;

    // Write minidump file
    CreateMiniDump(pExceptionPtrs);

    // Terminate process
    TerminateProcess(GetCurrentProcess(), 1); 

    return EXCEPTION_EXECUTE_HANDLER;
}

int fib(unsigned int n) {
    if(n == 0) return 0;
    if(n == 1) return 1;
    return fib(n-1)+fib(n-2);
}

int main(){
    SetUnhandledExceptionFilter(SehHandler); 
    cout << fib(1000000); …
Run Code Online (Sandbox Code Playgroud)

c++ stack-overflow exception seh

1
推荐指数
1
解决办法
1118
查看次数