- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 opencv 的新手。我正在尝试在 opencv 中使用 HOGDescriptor 提取图像的特征。我正在尝试使用 Opencv2.2 训练支持 vector 机,它能够检测图像中的人类。我正在使用包含 614 个正样本和 1218 个负样本的 INRIA 训练样本。
问题:我没有得到好的结果。当我用训练样本测试 SVM 时,准确度是 70%。任何人都可以帮助我如何调整 SVM 的参数以获得不等的负数和正数。我的 SVM 的参数是:
CvMat *m=cvCreateMat(2,1,CV_32FC1);
cvmSet(m,0,0,1);
cvmSet(m,1,0,1);
CvSVMParams params;
params.svm_type = CvSVM::C_SVC;
params.kernel_type = CvSVM::LINEAR;
params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6);
params.class_weights=m;
params.C=1000;
SVM训练的全部代码是:
void svm_train(char *列表){
int num_files=1832;
int features=1620;
float des;
int val=0;
int file_num=0;
int total=num_files*features;
int count=0;
Mat training_mat(num_files,features,CV_32FC1);
float label[1832];
for(int i=0;i<614;i++)
label[i]= 1.0;
for(int j=614;j<1832;j++)
label[j]= -1.0;
Mat labels(num_files,1,CV_32FC1,label);
char *s;
fstream inputfile(list,ios::in);
while(count<=total)
{
if(val<=(features-1))
{inputfile>>des;
training_mat.at<float>(file_num,val)= des;
val++;
}
else
{
val=0;
file_num++;
}
count++;
}
count--;
cout<<count;
CvMat *m=cvCreateMat(2,1,CV_32FC1);
cvmSet(m,0,0,1);
cvmSet(m,1,0,1);
CvSVMParams params;
params.svm_type=CvSVM::C_SVC;
params.kernel_type = CvSVM::LINEAR;
params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6);
params.class_weights=m;
inputfile.close();
CvSVM svm;
pg=svm.get_default_grid(CvSVM::C);
params.C=1000;
fstream filelist("result1.txt",ios::app);
filelist<<params.C;
filelist<<"\t1218";
filelist<<"\t\t614";
svm.train(training_mat,labels,Mat(),Mat(),params);
svm.save("svm_train.xml");
filelist.close();
这里的列表初始化了文件名,它存储了从训练样本中提取的特征,即负样本和正样本。总号每张图片的特征数 = 1620。
最佳答案
我不认为设置参数有硬性规定。它或多或少基于一定限度下的命中和试用。
但是您应该阅读以下链接,该链接是关于设置 SVM 开发人员编写的参数的。这不是为了数学......看看
关于c++ - 使用 HOGDescriptor 训练 CvSVM 检测图像中的人类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22104356/
我正在尝试使用特征包模型、训练和支持 vector 机。我正在使用 this教程和this示例代码。我正在使用 Windows 8 和 OpenCV 2.4.10。我在 Visual Studio 2
在使用线路时... map classes_classifiers; classes_classifiers.insert(pair(class_,CvSVM())); 当我编译它时,我收到了错误..
使用opencv CvSVM的一些问题 它使用的是哪种支持向量机?是用svmlight吗? OpenCV2.2 有 svmlight,但我找不到太多关于它的引用资料。 如果我使用 CvSVM,我是否需
我正在尝试使用 this 来熟悉 CvSVM包含 590 张图像的手动标记数据库,从 0-5 分级(0 为模糊,5 为完美)。如果等级 =3,我将其标记为 1(清晰)。 对于功能,我只是使用五种不同的
我正在使用 OpenCV 3.0.0 我已经包含了所有这些库和命名空间,但我仍然收到“CvSVM 未在此范围内声明”的错误 #include #include #include "opencv2/
我使用openCV。我已经训练了SVM,但是输出文件太大(在svm.save()之后)。我想在iPhone的应用程序中使用经过训练的SVM,但文件约为300 Mb。存档后文件大小约为6 Mb。 所以,
我已经在 opencv 中为人脸创建了一个 SVM 检测器。我想分开训练和预测的过程。因此,我想找到一种方法将 CvSVM SVM 对象存储在我的硬盘中,以便在我不需要再次训练新模型的情况下随时访问它
我想创建一个 Opencv CvSVM 对象的 std::vector。当我编译这段代码时: typedef vector svm_vec; svm_vec svm_data = svm_vec();
我找不到关于如何将 SVM 参数传递给 opencv cvSvm 类的正确引用。我得到了参数列表,但没有任何关于如何将参数转换为 CV 数据结构的教程。 请问有什么帮助吗? 最佳答案 构造一个CvSV
我正在使用 Bag of Words 训练图像。但是,每次我更改 if 语句或符号中的条件值时,例如来自 if(response0)或来自 if(responsekeypoints;
我的目标是训练 SVM 并获得支持 vector ,我可以将其插入 opencv 的 HOGdescriptor 以进行对象检测。 我收集了 4000~ 个正样本和 15000~ 个负样本,并使用 o
我是 opencv 的新手。我正在尝试在 opencv 中使用 HOGDescriptor 提取图像的特征。我正在尝试使用 Opencv2.2 训练支持 vector 机,它能够检测图像中的人类。我正
这是一个愚蠢的问题,因为我对 SVM 还很陌生, 我已经成功地使用 OpenCV 的 HoGDescriptor 提取特征和位置: vector features; vector locations;
我使用 CvSVM 仅对两种类型的面部表情进行分类。我使用基于 LBP(局部二进制模式)的直方图从图像中提取特征,并使用 cvSVM::train(data_mat,labels_mat,Mat(),
我正在做一个项目,我需要使用 HOG 特征检测汽车的尾部。计算出 HOG 特征后,我使用正样本和负样本训练了 cvsvm。 cvsvm 正确地对新数据进行了分类。这是我用来训练 cvsvm 的代码。
我想知道如何创建“CvSVM”对象的 vector 。我试过使用: vector svm_bank; 但每当我使用: new_model.train(training_inputs, targets,
我正在使用 OpenCV LibSVM 开发手写字符识别系统。我已经为特征向量提取了 14 个特征,包括 Hu 矩、仿射不变矩、角数等。对于每个字符,我使用 5 个样本(对于字母“A”,有 5 种类型
我是一名优秀的程序员,十分优秀!