怎么根据真实值xml文件计算准确率召回率

怎么根据真实值xml文件计算准确率召回率,第1张

要计算准确率和召回率,您需要有一个已知真实值的数据集和一个预测结果,例如一个二分类问题,您可以将真实值标记为0或1,预测结果也是0或1。
假设您已经有了一个带有真实值的XML文件和一些预测结果。以下是计算准确率和召回率的步骤:
1 读取XML文件和预测结果,并将它们与真实值进行比较。对于每个实例,如果真实值和预测结果相同,则认为是一次正确分类,否则是一次错误分类。
2 计算准确率:将所有正确分类的实例数除以总实例数。
准确率 = 正确分类数 / 总实例数
3 计算召回率:将所有正确分类的实例数除以实际属于该类的总数。这意味着我们只考虑哪些实例应该被正确分类为该类。
召回率 = 正确分类数 / 实际属于该类的总数
4 如果您的数据集中有多个类别,则可以计算每个类别的准确率和召回率,并计算其平均值来获得整体指标。
请注意,准确率和召回率都是用来度量分类器性能的指标,准确率衡量的是分类器正确分类样本的能力,而召回率衡量的是分类器识别正样本的能力。在某些应用中,一个更高的准确率可能更为重要,而在其他应用中,更高的召回率可能更为重要。

可能是计算机配置低的问题,我在笔记本上运行进行简单的读取视频程序就很卡。可以换台式机试一试。
XML文件的路径应该用绝对路径,试试吧
"D:\\Program Files\\OpenCV\\data\\haarcascades\\haarcascade_frontalface_alt2xml"
另外的可能是没有链接上cv库,简单解决办法是在cvLoad之前调用一下cvCvtColor函数,这样就会加载cv库。
IplImage img = cvLoadImage("1jpg");
cvCvtColor(img, img, CV_BGR2RGB);
cvReleaseImage(&img);

OpenCV开发SVM算法是基于LibSVM软件包开发的,LibSVM是台湾大学林智仁(Lin Chih-Jen)等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包。用OpenCV使用SVM算法的大概流程是1)设置训练样本集需要两组数据,一组是数据的类别,一组是数据的向量信息。2)设置SVM参数利用CvSVMParams类实现类内的成员变量svm_type表示SVM类型:CvSVM::C_SVC C-SVCCvSVM::NU_SVC v-SVCCvSVM::ONE_CLASS 一类SVMCvSVM::EPS_SVR e-SVRCvSVM::NU_SVR v-SVR成员变量kernel_type表示核函数的类型:CvSVM::LINEAR 线性:u‘vCvSVM::POLY 多项式:(ru'v + coef0)^degreeCvSVM::RBF RBF函数:exp(-r|u-v|^2)CvSVM::SIGMOID sigmoid函数:tanh(ru'v + coef0)成员变量degree针对多项式核函数degree的设置,gamma针对多项式/rbf/sigmoid核函数的设置,coef0针对多项式/sigmoid核函数的设置,Cvalue为损失函数,在C-SVC、e-SVR、v-SVR中有效,nu设置v-SVC、一类SVM和v-SVR参数,p为设置e-SVR中损失函数的值,class_weightsC_SVC的权重,term_crit为SVM训练过程的终止条件。其中默认值degree = 0,gamma = 1,coef0 = 0,Cvalue = 1,nu = 0,p = 0,class_weights = 03)训练SVM调用CvSVM::train函数建立SVM模型,第一个参数为训练数据,第二个参数为分类结果,最后一个参数即CvSVMParams4)用这个SVM进行分类调用函数CvSVM::predict实现分类5)获得支持向量除了分类,也可以得到SVM的支持向量,调用函数CvSVM::get_support_vector_count获得支持向量的个数,CvSVM::get_support_vector获得对应的索引编号的支持向量。实现代码如下:view plain// step 1: float labels[4] = {10, -10, -10, -10}; Mat labelsMat(3, 1, CV_32FC1, labels); float trainingData[4][2] = { {501, 10}, {255, 10}, {501, 255}, {10, 501} }; Mat trainingDataMat(3, 2, CV_32FC1, trainingData); // step 2: CvSVMParams params; paramssvm_type = CvSVM::C_SVC; paramskernel_type = CvSVM::LINEAR; paramsterm_crit = cvTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6); // step 3: CvSVM SVM; SVMtrain(trainingDataMat, labelsMat, Mat(), Mat(), params); // step 4: Vec3b green(0, 255, 0), blue(255, 0, 0); for (int i=0; iimagerows; i++) { for (int j=0; jimagecols; j++) { Mat sampleMat = (Mat_float(1,2) i,j); float response = SVMpredict(sampleMat); if (fabs(response-10) 00001) { imageatVec3b(j, i) = green; } else if (fabs(response+10) 0001) { imageatVec3b(j, i) = blue; } } } // step 5: int c = SVMget_support_vector_count(); for (int i=0; i i++) { const float v = SVMget_support_vector(i); } OpenCV支持的目标检测的方法是利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade Classification)。注意,新版本的C++接口除了Haar特征以外也可以使用LBP特征。先介绍一下相关的结构,级联分类器的计算特征值的基础类FeatureEvaluator,功能包括读 *** 作read、复制clone、获得特征类型getFeatureType,分配分配窗口的 *** 作setImage、setWindow,计算有序特征calcOrd,计算绝对特征calcCat,创建分类器特征的结构create函数。级联分类器类CascadeClassifier。目标级联矩形的分组函数groupRectangles。接下来,我尝试使用CascadeClassifier这个级联分类器类检测视频流中的目标(haar支持的目标有人脸、人眼、嘴、鼻、身体。这里尝试比较成熟的人脸和眼镜)。用load函数加载XML分类器文件(目前提供的分类器包括Haar分类器和LBP分类器(LBP分类器数据较少))具体步骤如下:1)加载级联分类器调用CascadeClassifier类成员函数load实现,代码为:view plainCascadeClassifier face_cascade; face_cascadeload("haarcascade_frontalface_altxml"); 2)读取视频流这部分比较基础啦~~从文件中读取图像序列,读取视频文件,读取摄像头视频流看过我之前的文章,这3种方法应该了然于心。3)对每一帧使用该分类器这里先将图像变成灰度图,对它应用直方图均衡化,做一些预处理的工作。接下来检测人脸,调用detectMultiScale函数,该函数在输入图像的不同尺度中检测物体,参数image为输入的灰度图像,objects为得到被检测物体的矩形框向量组,scaleFactor为每一个图像尺度中的尺度参数,默认值为11,minNeighbors参数为每一个级联矩形应该保留的邻近个数(没能理解这个参数,-_-|||),默认为3,flags对于新的分类器没有用(但目前的haar分类器都是旧版的,CV_HAAR_DO_CANNY_PRUNING利用Canny边缘检测器来排除一些边缘很少或者很多的图像区域,CV_HAAR_SCALE_IMAGE就是按比例正常检测,CV_HAAR_FIND_BIGGEST_OBJECT只检测最大的物体,CV_HAAR_DO_ROUGH_SEARCH只做初略检测),默认为0minSize和maxSize用来限制得到的目标区域的范围。这里调用的代码如下:view plainface_cascadedetectMultiScale( frame_gray, faces, 11, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) ); 4)显示目标这个也比较简单,调用ellips函数将刚才得到的faces矩形框都显示出来更进一步,也可以在得到的每一幅人脸中得到人眼的位置,调用的分类器文件为haarcascade_eye_tree_eyeglassesxml,先将脸部区域选为兴趣区域ROI,重复上诉步骤即可,这里就不详细介绍了。当然,感兴趣的朋友也可以试试其他的xml文件作为分类器玩一下啊,感觉LBP特征虽然xml文件的大小很小,但效果还可以,不过我没有做过多的测试。光说不练假把式,最后贴上效果图和源代码的下载地址代码下载地址:>

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13377044.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-24
下一篇 2023-07-24

发表评论

登录后才能评论

评论列表(0条)

保存