学渣一枚,毕设做hog+svm目标检测,关于hog特征提取的代码想请假各路大神
本人matlab编程小白 ,做的毕设是hog+svm目标检测。现在还在hog特征提取阶段。代码不会写啊啊啊 在网上搜到一个hog人脸识别的代码,按说也可以用在我的飞机识别课题上。。现在有一个问题就是这个代码读入的图片大小是256*256像素。我的飞机样本是40*40像素大小。跪求大神给点拨下这段代码里都有哪些需要改动的地方。要是怎么改也可以讲一下那真是感激涕零了。。。

    附网上搜到的matlab代码:

    clear all; close all; clc;

addpath('E:\road\');
img=double(imread('zhaopian.jpg'));
imshow(img,[]);
[m n]=size(img);

img=sqrt(img); %伽马校正

%下面是求边缘
fy=[-1 0 1]; %定义竖直模板
fx=fy'; %定义水平模板
Iy=imfilter(img,fy,'replicate'); %竖直边缘
Ix=imfilter(img,fx,'replicate'); %水平边缘
Ied=sqrt(Ix.^2+Iy.^2); %边缘强度
Iphase=Iy./Ix; %边缘斜率,有些为inf,-inf,nan,其中nan需要再处理一下

%下面是求cell
step=16; %step*step个像素作为一个单元
orient=9; %方向直方图的方向个数
jiao=360/orient; %每个方向包含的角度数
Cell=cell(1,1); %所有的角度直方图,cell是可以动态增加的,所以先设了一个
ii=1;

jj=1;
for i=1:step:m %如果处理的m/step不是整数,最好是i=1:step:m-step
ii=1;
for j=1:step:n %注释同上
tmpx=Ix(i:i+step-1,j:j+step-1);
tmped=Ied(i:i+step-1,j:j+step-1);
tmped=tmped/sum(sum(tmped)); %局部边缘强度归一化
tmpphase=Iphase(i:i+step-1,j:j+step-1);
Hist=zeros(1,orient); %当前step*step像素块统计角度直方图,就是cell
for p=1:step
for q=1:step
if isnan(tmpphase(p,q))==1 %0/0会得到nan,如果像素是nan,重设为0
tmpphase(p,q)=0;
end
ang=atan(tmpphase(p,q)); %atan求的是[-90 90]度之间
ang=mod(ang*180/pi,360); %全部变正,-90变270
if tmpx(p,q) if ang ang=ang+180; %移到第三象限
end
if ang>270 %如果是第四象限
ang=ang-180; %移到第二象限
end
end
ang=ang+0.0000001; %防止ang为0
Hist(ceil(ang/jiao))=Hist(ceil(ang/jiao))+tmped(p,q); %ceil向上取整,使用边缘强度加权
end
end
Hist=Hist/sum(Hist); %方向直方图归一化
Cell{ii,jj}=Hist; %放入Cell中
ii=ii+1; %针对Cell的y坐标循环变量
end
jj=jj+1; %针对Cell的x坐标循环变量
end

%下面是求feature,2*2个cell合成一个block,没有显式的求block
[m n]=size(Cell);
feature=cell(1,(m-1)*(n-1));
for i=1:m-1
for j=1:n-1

f=[];
f=[f Cell{i,j}(:)' Cell{i,j+1}(:)' Cell{i+1,j}(:)' Cell{i+1,j+1}(:)'];
feature{(i-1)*(n-1)+j}=f;
end
end

%到此结束,feature即为所求
%下面是为了显示而写的
l=length(feature);
f=[];
for i=1:l
f=[f;feature{i}(:)'];

end
figure
mesh(f)

再次感谢 !!!

1个回答

一脸懵逼 ,跪求各路大神指教啊

xiaohuangren1213
xiaohuangren1213 我也是这个课题啊,目前做到了提取出图片的所有hog特征,下一步是svm分类检测 有想交流的大神加微信呗 13772517972
大约一年之前 回复
qq1837016187
qq1837016187 有联系方式吗,跪求‘’
大约一年之前 回复
qq1837016187
qq1837016187 回复qq_41154473: 亲,毕设做完了吗,今年我的毕设是这个
大约一年之前 回复
qq_41154473
qq_41154473 亲,你的毕设是不是已经做完了。。我是今年要做目标检测的毕设,但是也不会代码。。能否劳烦亲发我一份,感激不尽!!!
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
学渣一枚,毕设做hog+svm目标检测,关于hog特征提取的代码想请假各路大神

本人matlab编程小白 ,做的毕设是hog+svm目标检测。现在还在hog特征提取阶段。代码不会写啊啊啊 在网上搜到一个hog人脸识别的代码,按说也可以用在我的飞机识别课题上。。现在有一个问题就是这个代码读入的图片大小是256*256像素。我的飞机样本是40*40像素大小。跪求大神给点拨下这段代码里都有哪些需要改动的地方。要是怎么改也可以讲一下那真是感激涕零了。。。 附网上搜到的matlab代码: clear all; close all; clc; addpath('E:\road\'); img=double(imread('zhaopian.jpg')); imshow(img,[]); [m n]=size(img); img=sqrt(img); %伽马校正 %下面是求边缘 fy=[-1 0 1]; %定义竖直模板 fx=fy'; %定义水平模板 Iy=imfilter(img,fy,'replicate'); %竖直边缘 Ix=imfilter(img,fx,'replicate'); %水平边缘 Ied=sqrt(Ix.^2+Iy.^2); %边缘强度 Iphase=Iy./Ix; %边缘斜率,有些为inf,-inf,nan,其中nan需要再处理一下 %下面是求cell step=16; %step*step个像素作为一个单元 orient=9; %方向直方图的方向个数 jiao=360/orient; %每个方向包含的角度数 Cell=cell(1,1); %所有的角度直方图,cell是可以动态增加的,所以先设了一个 ii=1; jj=1; for i=1:step:m %如果处理的m/step不是整数,最好是i=1:step:m-step ii=1; for j=1:step:n %注释同上 tmpx=Ix(i:i+step-1,j:j+step-1); tmped=Ied(i:i+step-1,j:j+step-1); tmped=tmped/sum(sum(tmped)); %局部边缘强度归一化 tmpphase=Iphase(i:i+step-1,j:j+step-1); Hist=zeros(1,orient); %当前step*step像素块统计角度直方图,就是cell for p=1:step for q=1:step if isnan(tmpphase(p,q))==1 %0/0会得到nan,如果像素是nan,重设为0 tmpphase(p,q)=0; end ang=atan(tmpphase(p,q)); %atan求的是[-90 90]度之间 ang=mod(ang*180/pi,360); %全部变正,-90变270 if tmpx(p,q)<0 %根据x方向确定真正的角度 if ang<90 %如果是第一象限 ang=ang+180; %移到第三象限 end if ang>270 %如果是第四象限 ang=ang-180; %移到第二象限 end end ang=ang+0.0000001; %防止ang为0 Hist(ceil(ang/jiao))=Hist(ceil(ang/jiao))+tmped(p,q); %ceil向上取整,使用边缘强度加权 end end Hist=Hist/sum(Hist); %方向直方图归一化 Cell{ii,jj}=Hist; %放入Cell中 ii=ii+1; %针对Cell的y坐标循环变量 end jj=jj+1; %针对Cell的x坐标循环变量 end %下面是求feature,2*2个cell合成一个block,没有显式的求block [m n]=size(Cell); feature=cell(1,(m-1)*(n-1)); for i=1:m-1 for j=1:n-1 f=[]; f=[f Cell{i,j}(:)' Cell{i,j+1}(:)' Cell{i+1,j}(:)' Cell{i+1,j+1}(:)']; feature{(i-1)*(n-1)+j}=f; end end %到此结束,feature即为所求 %下面是为了显示而写的 l=length(feature); f=[]; for i=1:l f=[f;feature{i}(:)']; end figure mesh(f) 再次感谢 !!!

关于opencv里实现svm+hog的行人检测

各位大佬们,我想问一下,我在opencv里实现了svm和hog的行人检测,最后要计算检测的精度的时候应该怎么计算,用什么公式?

LBP和HOG两种特征融合训练svm分类器,进行目标检测

如题,进行目标检测,比如在一幅图中找到一辆汽车,并将目标区域用矩形框标记,该怎样检测,如何编程呢?

用Matlab实现HOG特征提取结果

相问一下用Matlab提取HOG特征之后,所提取的HOG特征是一种什么形式啊,希望有人解答,菜鸟急的有点想哭了!!!

关于hog+SVM方法的问题

最近接触了hog+SVM的图片检测方法,基于opencv的C++和python代码都试着跑了,但都遇到同样的问题:如果我修改了wsize,把默认的128*64改成其它尺寸,block和cell的尺寸也改了,程序就会报错。请各位大神解答一下,多谢多谢!

关于svm+hog目标检测的问题 opencv

环境是vs2015+opencv3.4 Ptr<SVM> svm = StatModel::load<SVM>("SVM_HOG.xml");出现的问题是Error: Parsing error (Missing or invalid SVM type) in cv::ml::SVMImpl::read_ 有没有人知道怎么解决呀??

关于调用OPENCV库 编写HOG与SVM程序 不同样本训练结果问题

本人前一段时间写了一个车辆检测的程序方法HOG与SVM,利用opencv做的 一开始样本是128x96的 大概5000多正样本 7000多负样本 最近 我从新剪裁了一批新的样本 主要是车的车脸部分,然后今天从新训练发现了一些问题。 ![图片说明](https://img-ask.csdn.net/upload/201705/10/1494417539_932086.png) 如图 当车行驶到变大的时候我的程序 才会识别到,这次新的样本用的128x128的 比之前的要大,训练时候参数如下,我不太清楚窗口大小是不是一定要和样本大小一样? HOGDescriptor * hog = new HOGDescriptor(cvSize(128, 128), cvSize(16, 16), cvSize(8, 8), cvSize(8, 8), 9); 检测视频的时候,参数如下 myHOG.detectMultiScale(frame, found, 0, Size(8, 8), Size(0, 0), 1.15, 5); 以前,样本不标准,正样本里面含有很多背景部分,但是用以前样本生成的SVM检测是参数为myHOG.detectMultiScale(frame, found, 0.5, Size(16, 16), Size(0, 0), 1.15, 5);利用0.5的阈值也就是到超平面距离去掉了很多误报,而且块大小还要大一些就是粗糙一些,检测时候后面的车也会检测到,没有像现在这样离很近才能检测到,而且现在左右两侧有很多车都漏检。 所以想请问一下为什么? 我有几种想法 1.样本128x128过大,以前是128x96所以离得远的目标也能检测到,参数里面的Size(0,0)图像扩充大小我不是很理解?另外1.15是缩放比例,我不知道是图像扩大吗?如果是扩大,调大了应该会有作用,但是经过测试作用不大。 2.是不是参数理解有问题,请会的大神帮我说一下各个参数的设置 3.会不会是样本问题,负样本7000过少,不相干性太大(因为都是随便找的负样本) 正样本 从车身换到车脸我觉得问题不大。 请各位帮我分析一下,咱们共同进步!!!

利用hog+svm进行行人检测,opencv\modules\objdetect\src\hog.cpp, line899

if (CENTRAL_CROP) if (src.cols >=96 && src.rows >= 160) src = src(Rect(16, 16, 64, 128));//将96*160的INRIA正样本图片剪裁为64*128,即剪去上下左右各16个像素 //resize(src,src,Size(64,128)); cout << "SSSSSSSS:" << endl; vector<float> descriptors;//HOG描述子向量 cout << "111111:" << endl; # hog.compute(src, descriptors, Size(8, 8));//计算HOG描述子,检测窗口移动步长(8,8) //这步出现错误。 cout << "SSSSSSSS:" << endl; cout<<"描述子维数:"<<descriptors.size()<<endl; cout << descriptors.size() << endl; //处理第一个样本时初始化特征向 ``` ```

opencv++hog+svm这一段该怎么改,想让detector检测64*64的窗口

用64*64的正负样本训练的分类器,载入时不能检测,怀疑是检测子参数设置的问题,下面这一段该怎么改? ``` DescriptorDim = svm.get_var_count();//特征向量的维数,即HOG描述子的维数 int supportVectorNum = svm.get_support_vector_count();//支持向量的个数 cout<<"支持向量个数:"<<supportVectorNum<<endl; Mat alphaMat = Mat::zeros(1, supportVectorNum, CV_32FC1);//alpha向量,长度等于支持向量个数 Mat supportVectorMat = Mat::zeros(supportVectorNum, DescriptorDim, CV_32FC1);//支持向量矩阵 Mat resultMat = Mat::zeros(1, DescriptorDim, CV_32FC1);//alpha向量乘以支持向量矩阵的结果 //将支持向量的数据复制到supportVectorMat矩阵中 for(int i=0; i<supportVectorNum; i++) { const float * pSVData = svm.get_support_vector(i);//返回第i个支持向量的数据指针 for(int j=0; j<DescriptorDim; j++) { //cout<<pData[j]<<" "; supportVectorMat.at<float>(i,j) = pSVData[j]; } } //将alpha向量的数据复制到alphaMat中 double * pAlphaData = svm.get_alpha_vector();//返回SVM的决策函数中的alpha向量 for(int i=0; i<supportVectorNum; i++) { alphaMat.at<float>(0,i) = pAlphaData[i]; } //计算-(alphaMat * supportVectorMat),结果放到resultMat中 //gemm(alphaMat, supportVectorMat, -1, 0, 1, resultMat);//不知道为什么加负号? resultMat = -1 * alphaMat * supportVectorMat; //得到最终的setSVMDetector(const vector<float>& detector)参数中可用的检测子 vector<float> myDetector; //将resultMat中的数据复制到数组myDetector中 for(int i=0; i<DescriptorDim; i++) { myDetector.push_back(resultMat.at<float>(0,i)); } //最后添加偏移量rho,得到检测子 myDetector.push_back(svm.get_rho()); cout<<"检测子维数:"<<myDetector.size()<<endl; //设置HOGDescriptor的检测子 HOGDescriptor myHOG; myHOG.setSVMDetector(myDetector); //myHOG.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector()); //保存检测子参数到文件 ofstream fout("d:/hogmit/HOGDetectorForOpenCV.txt"); for(int i=0; i<myDetector.size(); i++) { fout<<myDetector[i]<<endl; } ```

hog特征数和图片大小有关吗?

为什么我用不同大小图片 所得特征数目一样????????????、

用不同特征训练两个SVM分类器检测同一种目标容易实现吗?

比如说分别用HOG特征和LBP特征,在SVM下训练两个分类器,检测的时候用两个分类器同时检测图片中的行人,容易实现吗?

如何将HOG和LBP特征融合?

![图片说明](https://img-ask.csdn.net/upload/201812/11/1544514792_812870.png) 比方说这个图,文章只是一笔带过,说把两种特征的直方图串联起来,但两个直方图的横纵坐标都不一样,如何串联? 还有什么能融合两种特征的方法,具体如何操作呢?

opencv249 hog+svm 错误

第二行代码老是报错 vector<float>descriptors;//结果数组 hog->compute(trainImg, descriptors, Size(1, 1), Size(0, 0)); //调用计算函数开始计算 cout << "HOG dims: " << descriptors.size() << endl; ``` ```

opencv hog训练svm检测行人,这个报错什么意思

![图片说明](https://img-ask.csdn.net/upload/201905/28/1559007040_13678.png)

svm训练自己的样本中计算hog时报错:写入位置发生冲突

想用svm+hog 对自己做的样本进行一个识别定位 结果总是报错:“中的 0x0f1b3f00 处有未经处理的异常: 0xC0000005: 写入位置 0x00823810 时发生访问冲突” 调试发现出错位置在: ``` hog->compute(trainImg, descriptors,Size(1,1), Size(0,0)); ``` 图像尺寸什么的和网上贴的代码一样的不清楚为什么会有这种错误。 有遇到过类似的问题的吗 求解答

关于机器学习中垃圾图像识别的特征提取问题。

如题,想用: **决策树、朴素贝叶斯和SVM**这三个传统机器学习算法,对github上的garythung的垃圾数据集进行识别分类。 1.但是对于图像预处理的特征提取有点云里雾里的,应该选取什么特征比较好啊?看了很多大神分享的博客,发现大家都是图像预处理之后,选择神经网络CNN进行训练的,无需特征提取。 所以有点困惑,了解到的有HOG,SIFT特征。 2.对于传统的机器学习算法,一定要进行特征提取吗?一些颜色特征、边缘特征也可以吗?这些颜色边缘一类的特征如何进行提取呢?也是使用opencv吗? 万分感谢万分感谢

如何将opencv中LBP 与 hog 特征融合到一起训练生成模型,通过模型查找图片中的物体并框出来

1.相通过HOG与LBP特征融合通过SVM训练生成模型 2.通过生成的模型识别图片中的训练物体,并框出来

opencv svm detector该怎么写?

我用64*128的图片,hog特征+svm可以成功检测出行人。但是换成64*64尺寸的图片,可以训练出svm模型,但是检测时会出错,觉得应该是detector的问题,但是不知道该怎么重写? 对提取好的HogFeatureMat进行pca降维后检测同样会出现类似的错误。detector该怎么重写,里面哪些参数需要调整?谢谢。代码如下 ``` #include <iostream> #include <fstream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/objdetect/objdetect.hpp> #include <opencv2/ml/ml.hpp> using namespace std; using namespace cv; #define PosSamNO 1114 //正样本个数 #define NegSamNO 12180 //负样本个数 #define TRAIN false//是否进行训练,true表示重新训练,false表示读取xml文件中的SVM模型 #define CENTRAL_CROP false //true:训练时,对96*160的INRIA正样本图片剪裁出中间的64*128大小人体 //HardExample:负样本个数。如果HardExampleNO大于0,表示处理完初始负样本集后,继续处理HardExample负样本集。 //不使用HardExample时必须设置为0,因为特征向量矩阵和特征类别矩阵的维数初始化时用到这个值 #define HardExampleNO 433 //继承自CvSVM的类,因为生成setSVMDetector()中用到的检测子参数时,需要用到训练好的SVM的decision_func参数, //但通过查看CvSVM源码可知decision_func参数是protected类型变量,无法直接访问到,只能继承之后通过函数访问 class MySVM : public CvSVM { public: //获得SVM的决策函数中的alpha数组 double * get_alpha_vector() { return this->decision_func->alpha; } //获得SVM的决策函数中的rho参数,即偏移量 float get_rho() { return this->decision_func->rho; } }; int main() { //检测窗口(64,128),块尺寸(16,16),块步长(8,8),cell尺寸(8,8),直方图bin个数9 HOGDescriptor hog(Size(64,128),Size(16,16),Size(8,8),Size(8,8),9);//HOG检测器,用来计算HOG描述子的 int DescriptorDim;//HOG描述子的维数,由图片大小、检测窗口大小、块大小、细胞单元中直方图bin个数决定 MySVM svm;//SVM分类器 //若TRAIN为true,重新训练分类器 if(TRAIN) { string ImgName;//图片名(绝对路径) ifstream finPos("d:/hogmit/pos/pos.txt");//正样本图片的文件名列表 //ifstream finPos("PersonFromVOC2012List.txt");//正样本图片的文件名列表 ifstream finNeg("d:/hogmit/neg/neg.txt");//负样本图片的文件名列表 Mat sampleFeatureMat;//所有训练样本的特征向量组成的矩阵,行数等于所有样本的个数,列数等于HOG描述子维数 Mat sampleLabelMat;//训练样本的类别向量,行数等于所有样本的个数,列数等于1;1表示有人,-1表示无人 //依次读取正样本图片,生成HOG描述子 for(int num=0; num<PosSamNO && getline(finPos,ImgName); num++) { cout<<"处理:"<<ImgName<<endl; //ImgName = "D:\\DataSet\\PersonFromVOC2012\\" + ImgName;//加上正样本的路径名 ImgName = "d:/hogmit/pos/" + ImgName;//加上正样本的路径名 Mat src = imread(ImgName);//读取图片 if(CENTRAL_CROP) src = src(Rect(16,16,64,128));//将96*160的INRIA正样本图片剪裁为64*128,即剪去上下左右各16个像素 //resize(src,src,Size(64,128)); vector<float> descriptors;//HOG描述子向量 hog.compute(src,descriptors,Size(8,8));//计算HOG描述子,检测窗口移动步长(8,8) // cout<<"描述子维数:"<<descriptors.size()<<endl; //处理第一个样本时初始化特征向量矩阵和类别矩阵,因为只有知道了特征向量的维数才能初始化特征向量矩阵 if( 0 == num ) { DescriptorDim = descriptors.size();//HOG描述子的维数 //初始化所有训练样本的特征向量组成的矩阵,行数等于所有样本的个数,列数等于HOG描述子维数sampleFeatureMat sampleFeatureMat = Mat::zeros(PosSamNO+NegSamNO+HardExampleNO, DescriptorDim, CV_32FC1); //初始化训练样本的类别向量,行数等于所有样本的个数,列数等于1;1表示有人,0表示无人 sampleLabelMat = Mat::zeros(PosSamNO+NegSamNO+HardExampleNO, 1, CV_32FC1); } //将计算好的HOG描述子复制到样本特征矩阵sampleFeatureMat for(int i=0; i<DescriptorDim; i++) sampleFeatureMat.at<float>(num,i) = descriptors[i];//第num个样本的特征向量中的第i个元素 sampleLabelMat.at<float>(num,0) = 1;//正样本类别为1,有人 } //依次读取负样本图片,生成HOG描述子 for(int num=0; num<NegSamNO && getline(finNeg,ImgName); num++) { cout<<"处理:"<<ImgName<<endl; ImgName = "d:/hogmit/neg/" + ImgName;//加上负样本的路径名 Mat src = imread(ImgName);//读取图片 //resize(src,img,Size(64,128)); vector<float> descriptors;//HOG描述子向量 hog.compute(src,descriptors,Size(8,8));//计算HOG描述子,检测窗口移动步长(8,8) //cout<<"描述子维数:"<<descriptors.size()<<endl; //将计算好的HOG描述子复制到样本特征矩阵sampleFeatureMat for(int i=0; i<DescriptorDim; i++) sampleFeatureMat.at<float>(num+PosSamNO,i) = descriptors[i];//第PosSamNO+num个样本的特征向量中的第i个元素 sampleLabelMat.at<float>(num+PosSamNO,0) = -1;//负样本类别为-1,无人 } //处理HardExample负样本 if(HardExampleNO > 0) { ifstream finHardExample("d:/hogmit/hard/hard.txt");//HardExample负样本的文件名列表 //依次读取HardExample负样本图片,生成HOG描述子 for(int num=0; num<HardExampleNO && getline(finHardExample,ImgName); num++) { cout<<"处理:"<<ImgName<<endl; ImgName = "d:/hogmit/hard/" + ImgName;//加上HardExample负样本的路径名 Mat src = imread(ImgName);//读取图片 //resize(src,img,Size(64,128)); vector<float> descriptors;//HOG描述子向量 hog.compute(src,descriptors,Size(8,8));//计算HOG描述子,检测窗口移动步长(8,8) //cout<<"描述子维数:"<<descriptors.size()<<endl; //将计算好的HOG描述子复制到样本特征矩阵sampleFeatureMat for(int i=0; i<DescriptorDim; i++) sampleFeatureMat.at<float>(num+PosSamNO+NegSamNO,i) = descriptors[i];//第PosSamNO+num个样本的特征向量中的第i个元素 sampleLabelMat.at<float>(num+PosSamNO+NegSamNO,0) = -1;//负样本类别为-1,无人 } } //输出样本的HOG特征向量矩阵到文件 ofstream fout("d:/hogmit/SampleFeatureMat.txt"); for(int i=0; i<PosSamNO+NegSamNO; i++) { fout<<i<<endl; for(int j=0; j<DescriptorDim; j++) { fout<<sampleFeatureMat.at<float>(i,j)<<" "; } fout<<endl; } //训练SVM分类器 //迭代终止条件,当迭代满1000次或误差小于FLT_EPSILON时停止迭代 CvTermCriteria criteria = cvTermCriteria(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 1000, FLT_EPSILON); //SVM参数:SVM类型为C_SVC;线性核函数;松弛因子C=0.01 CvSVMParams param(CvSVM::C_SVC, CvSVM::LINEAR, 0, 1, 0, 0.01, 0, 0, 0, criteria); cout<<"开始训练SVM分类器"<<endl; svm.train(sampleFeatureMat,sampleLabelMat, Mat(), Mat(), param);//训练分类器 cout<<"训练完成"<<endl; svm.save("d:/hogmit/SVM_HOG_mit_inria(1114pos+12180neg+433hard).xml");//将训练好的SVM模型保存为xml文件 } else //若TRAIN为false,从XML文件读取训练好的分类器 { cout<<"fail train"<<endl; //svm.load("SVM_HOG_2400PosINRIA_12000Neg_HardExample(误报少了漏检多了).xml");//从XML文件读取训练好的SVM模型 svm.load("d:/hogmit/SVM_HOG_2400PosINRIA_12000Neg_HardExample(误报少了漏检多了).xml"); } /************************************************************************************************* 线性SVM训练完成后得到的XML文件里面,有一个数组,叫做support vector,还有一个数组,叫做alpha,有一个浮点数,叫做rho; 将alpha矩阵同support vector相乘,注意,alpha*supportVector,将得到一个列向量。之后,再该列向量的最后添加一个元素rho。 如此,变得到了一个分类器,利用该分类器,直接替换opencv中行人检测默认的那个分类器(cv::HOGDescriptor::setSVMDetector()), 就可以利用你的训练样本训练出来的分类器进行行人检测了。 ***************************************************************************************************/ DescriptorDim = svm.get_var_count();//特征向量的维数,即HOG描述子的维数 int supportVectorNum = svm.get_support_vector_count();//支持向量的个数 cout<<"支持向量个数:"<<supportVectorNum<<endl; Mat alphaMat = Mat::zeros(1, supportVectorNum, CV_32FC1);//alpha向量,长度等于支持向量个数 Mat supportVectorMat = Mat::zeros(supportVectorNum, DescriptorDim, CV_32FC1);//支持向量矩阵 Mat resultMat = Mat::zeros(1, DescriptorDim, CV_32FC1);//alpha向量乘以支持向量矩阵的结果 //将支持向量的数据复制到supportVectorMat矩阵中 for(int i=0; i<supportVectorNum; i++) { const float * pSVData = svm.get_support_vector(i);//返回第i个支持向量的数据指针 for(int j=0; j<DescriptorDim; j++) { //cout<<pData[j]<<" "; supportVectorMat.at<float>(i,j) = pSVData[j]; } } //将alpha向量的数据复制到alphaMat中 double * pAlphaData = svm.get_alpha_vector();//返回SVM的决策函数中的alpha向量 for(int i=0; i<supportVectorNum; i++) { alphaMat.at<float>(0,i) = pAlphaData[i]; } //计算-(alphaMat * supportVectorMat),结果放到resultMat中 //gemm(alphaMat, supportVectorMat, -1, 0, 1, resultMat);//不知道为什么加负号? resultMat = -1 * alphaMat * supportVectorMat; //得到最终的setSVMDetector(const vector<float>& detector)参数中可用的检测子 vector<float> myDetector; //将resultMat中的数据复制到数组myDetector中 for(int i=0; i<DescriptorDim; i++) { myDetector.push_back(resultMat.at<float>(0,i)); } //最后添加偏移量rho,得到检测子 myDetector.push_back(svm.get_rho()); cout<<"检测子维数:"<<myDetector.size()<<endl; //设置HOGDescriptor的检测子 HOGDescriptor myHOG; myHOG.setSVMDetector(myDetector); //myHOG.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector()); //保存检测子参数到文件 ofstream fout("d:/hogmit/HOGDetectorForOpenCV.txt"); for(int i=0; i<myDetector.size(); i++) { fout<<myDetector[i]<<endl; } /**************读入图片进行HOG行人检测******************/ Mat src = imread("d:/hogmit/无标题.png"); //Mat src = imread("2007_000423.jpg"); //Mat src = imread("1.png"); vector<Rect> found, found_filtered;//矩形框数组 cout<<"进行多尺度HOG人体检测"<<endl; myHOG.detectMultiScale(src, found, 0, Size(8,8), Size(32,32), 1.05, 2);//对图片进行多尺度行人检测 //src为输入待检测的图片;found为检测到目标区域列表;参数3为程序内部计算为行人目标的阈值,也就是检测到的特征到SVM分类超平面的距离; //参数4为滑动窗口每次移动的距离。它必须是块移动的整数倍;参数5为图像扩充的大小;参数6为比例系数,即测试图片每次尺寸缩放增加的比例; //参数7为组阈值,即校正系数,当一个目标被多个窗口检测出来时,该参数此时就起了调节作用,为0时表示不起调节作用。 cout<<"找到的矩形框个数:"<<found.size()<<endl; //找出所有没有嵌套的矩形框r,并放入found_filtered中,如果有嵌套的话,则取外面最大的那个矩形框放入found_filtered中 for(int i=0; i < found.size(); i++) { Rect r = found[i]; int j=0; for(; j < found.size(); j++) if(j != i && (r & found[j]) == r) break; if( j == found.size()) found_filtered.push_back(r); } //画矩形框,因为hog检测出的矩形框比实际人体框要稍微大些,所以这里需要做一些调整 for(int i=0; i<found_filtered.size(); i++) { Rect r = found_filtered[i]; r.x += cvRound(r.width*0.1); r.width = cvRound(r.width*0.8); r.y += cvRound(r.height*0.07); r.height = cvRound(r.height*0.8); rectangle(src, r.tl(), r.br(), Scalar(0,255,0), 3); } imwrite("d:/hogmit/ImgProcessed3.jpg",src); namedWindow("src",0); imshow("src",src); waitKey();//注意:imshow之后必须加waitKey,否则无法显示图像 /******************读入单个64*128的测试图并对其HOG描述子进行分类*********************/ ////读取测试图片(64*128大小),并计算其HOG描述子 //Mat testImg = imread("person014142.jpg"); //Mat testImg = imread("noperson000026.jpg"); //vector<float> descriptor; //hog.compute(testImg,descriptor,Size(8,8));//计算HOG描述子,检测窗口移动步长(8,8) //Mat testFeatureMat = Mat::zeros(1,3780,CV_32FC1);//测试样本的特征向量矩阵 //将计算好的HOG描述子复制到testFeatureMat矩阵中 //for(int i=0; i<descriptor.size(); i++) // testFeatureMat.at<float>(0,i) = descriptor[i]; //用训练好的SVM分类器对测试图片的特征向量进行分类 //int result = svm.predict(testFeatureMat);//返回类标 //cout<<"分类结果:"<<result<<endl; system("pause"); } ```

opencv检测里遇到的setSVMDetector()问题

* 我的程序想将opencv行人检测迁移到别的检测中,但是我的图片是1:1,无法分解到3780维,请问这种有什么解决方法吗? * 能否直接更改setSVMDetector()的默认参数3780维? * 还是说可以更改图片大小,但我期望的原图仍要保持1:1的比例,分解3780只能得到 ``` 3780 = 2*2*3*5*7*9 # 9是9个bin ``` 贴一段自己的检测代码 ``` PosNum = 1997 # 有1997张正样本 NegNum = 1931 winSize = (20, 20) # 窗口刚好就是一张图的大小 blockSize = (10, 10) # 有4个块 blockStride = (5, 5) # 块步长5,5 cellSize = (5, 5) # 有4个cell nBin = 9 # 9个bin 一共3780维是opencv固定的 # 创建hog对象 hog = cv2.HOGDescriptor(winSize, blockSize, blockStride, cellSize, nBin) # 创建svm对象 svm = cv2.ml.SVM_create() # 计算hog # 设置特征维度 featureNum = int(((20-10)/5+1)*((20-10)/5+1)*4*9) # 324就不符合3780 # 初始化特征数组 featureArray = np.zeros(((PosNum+NegNum), featureNum), np.float32) # 二维数组,通过ij访问 # 初始化标签数组 labelArray = np.zeros(((PosNum+NegNum), 1), np.int32) # svm 监督学习 样本 标签 for i in range(0, PosNum): fileName = r'pic_pos\\'+str(i+1)+'.jpg' img = cv2.imread(fileName) # 图片加载 hist = hog.compute(img, (5, 5)) # 计算hog for j in range(0, featureNum): featureArray[i, j] = hist[j] labelArray[i, 0] = 1 for i in range(0, NegNum): fileName = r'pic_neg\\' + str(i + 1) + '.jpg' img = cv2.imread(fileName) # 图片加载 hist = hog.compute(img, (2, 2)) # 计算hog for j in range(0, featureNum): featureArray[i+PosNum, j] = hist[j] labelArray[i+PosNum, 0] = -1 # 负样本label=-1 svm.setType(cv2.ml.SVM_C_SVC) svm.setKernel(cv2.ml.SVM_LINEAR) svm.setC(0.01) # 训练 ret = svm.train(featureArray, cv2.ml.ROW_SAMPLE, labelArray) # 检测 # rho是svm得到的hog描述信息(不详细讨论) alpha = np.zeros((1), np.float32) # 一行一列数组 rho = svm.getDecisionFunction(0, alpha) # get方法获取rho print(rho) print(alpha) alphaArray = np.zeros((1, 1), np.float32) # 大小1*1 supportVArray = np.zeros((1, featureNum), np.float32) # 1*featureNum resultArray = np.zeros((1, featureNum), np.float32) # 1*featureNum alphaArray[0, 0] = alpha resultArray = -1*alphaArray*supportVArray # 检测 myDetect = np.zeros((325), np.float32) # 放检测结果 # myDetect = np.zeros((8101), np.uint8) # 放检测结果 我怀疑是灰度图uint8导致,因为源程序是rgb彩色图片 for i in range(0, 324): myDetect[i] = resultArray[0, i] # 前3780来自resultArray[0,i] # print(i, myDetect[i]) myDetect[324] = rho[0] # 最后一位来自rho[0] # 构建hog(重要 ) myHog = cv2.HOGDescriptor() myHog.setSVMDetector(myDetect) # 把myDetect属性传到myHog imageSrc = cv2.imread('s2.jpg', 0) # 读取待检测图片,2:彩色图片1,灰度图0 objs = myHog.detectMultiScale(imageSrc, 0, (5, 5), (20, 20), 1.05, 2) # 对应目标的检测 x = int(objs[0][0][0]) y = int(objs[0][0][1]) w = int(objs[0][0][2]) h = int(objs[0][0][3]) cv2.rectangle(imageSrc, (x, y), (x+w, y+h), (255, 0, 0), 2) # 绘制矩形框 cv2.imshow('dst', imageSrc) # 最终结果展示 cv2.waitKey(0) ``` 补充说明: 程序运行后出现error: (-215) checkDetectorSize() in function cv::HOGDescriptor::setSVMDetector 报错行69 myHog.setSVMDetector(myDetect) # 把myDetect属性传到myHog,目前我的猜测报错是因为维数问题,所以想着如何去更改维度

opencv默认的hog描述子只能操作64*128的图片吗

我想训练一个车辆识别的SVM分类器,用的是64*64的样本图片,会报错,是图片尺寸的问题吗? 如果把样本图片resize成64*128的尺寸,会影响训练效果吗? 代码用的是这个https://blog.csdn.net/masibuaa/article/details/16105073 好像可以训练出分类器,但是检测的时候会报错,如下: ![图片说明](https://img-ask.csdn.net/upload/201904/04/1554348174_885400.png)

MySQL 8.0.19安装教程(windows 64位)

话不多说直接开干 目录 1-先去官网下载点击的MySQL的下载​ 2-配置初始化的my.ini文件的文件 3-初始化MySQL 4-安装MySQL服务 + 启动MySQL 服务 5-连接MySQL + 修改密码 先去官网下载点击的MySQL的下载 下载完成后解压 解压完是这个样子 配置初始化的my.ini文件的文件 ...

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉系统全面的介绍。

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

navicat(内含激活码)

navicat支持mysql的可视化操作,内涵激活码,不用再忍受弹框的痛苦。

HTML期末大作业

这是我自己做的HTML期末大作业,花了很多时间,稍加修改就可以作为自己的作业了,而且也可以作为学习参考

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

基于STM32的电子时钟设计

时钟功能 还有闹钟功能,温湿度功能,整点报时功能 你值得拥有

学生成绩管理系统(PHP + MYSQL)

做的是数据库课程设计,使用的php + MySQL,本来是黄金搭配也就没啥说的,推荐使用wamp服务器,里面有详细的使用说明,带有界面的啊!呵呵 不行的话,可以给我留言!

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:itxy41)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

实用主义学Python(小白也容易上手的Python实用案例)

原价169,限时立减100元! 系统掌握Python核心语法16点,轻松应对工作中80%以上的Python使用场景! 69元=72讲+源码+社群答疑+讲师社群分享会&nbsp; 【哪些人适合学习这门课程?】 1)大学生,平时只学习了Python理论,并未接触Python实战问题; 2)对Python实用技能掌握薄弱的人,自动化、爬虫、数据分析能让你快速提高工作效率; 3)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; 4)想修炼更好的编程内功,优秀的工程师肯定不能只会一门语言,Python语言功能强大、使用高效、简单易学。 【超实用技能】 从零开始 自动生成工作周报 职场升级 豆瓣电影数据爬取 实用案例 奥运冠军数据分析 自动化办公:通过Python自动化分析Excel数据并自动操作Word文档,最终获得一份基于Excel表格的数据分析报告。 豆瓣电影爬虫:通过Python自动爬取豆瓣电影信息并将电影图片保存到本地。 奥运会数据分析实战 简介:通过Python分析120年间奥运会的数据,从不同角度入手分析,从而得出一些有趣的结论。 【超人气老师】 二两 中国人工智能协会高级会员 生成对抗神经网络研究者 《深入浅出生成对抗网络:原理剖析与TensorFlow实现》一书作者 阿里云大学云学院导师 前大型游戏公司后端工程师 【超丰富实用案例】 0)图片背景去除案例 1)自动生成工作周报案例 2)豆瓣电影数据爬取案例 3)奥运会数据分析案例 4)自动处理邮件案例 5)github信息爬取/更新提醒案例 6)B站百大UP信息爬取与分析案例 7)构建自己的论文网站案例

Java8零基础入门视频教程

这门课程基于主流的java8平台,由浅入深的详细讲解了java SE的开发技术,可以使java方向的入门学员,快速扎实的掌握java开发技术!

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

零基础学C#编程—C#从小白到大咖

本课程从初学者角度出发,提供了C#从入门到成为程序开发高手所需要掌握的各方面知识和技术。 【课程特点】 1 由浅入深,编排合理; 2 视频讲解,精彩详尽; 3 丰富实例,轻松易学; 4 每章总结配有难点解析文档。 15大章节,228课时,1756分钟与你一同进步!

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

多功能数字钟.zip

利用数字电子计数知识设计并制作的数字电子钟(含multisim仿真),该数字钟具有显示星期、24小时制时间、闹铃、整点报时、时间校准功能

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

想学好JAVA必须要报两万的培训班吗? Java大神勿入 如果你: 零基础想学JAVA却不知道从何入手 看了一堆书和视频却还是连JAVA的环境都搭建不起来 囊中羞涩面对两万起的JAVA培训班不忍直视 在职没有每天大块的时间专门学习JAVA 那么恭喜你找到组织了,在这里有: 1. 一群志同道合立志学好JAVA的同学一起学习讨论JAVA 2. 灵活机动的学习时间完成特定学习任务+每日编程实战练习 3. 热心助人的助教和讲师及时帮你解决问题,不按时完成作业小心助教老师的家访哦 上一张图看看前辈的感悟: &nbsp; &nbsp; 大家一定迫不及待想知道什么是极简JAVA学习营了吧,下面就来给大家说道说道: 什么是极简JAVA学习营? 1. 针对Java小白或者初级Java学习者; 2. 利用9天时间,每天1个小时时间; 3.通过 每日作业 / 组队PK / 助教答疑 / 实战编程 / 项目答辩 / 社群讨论 / 趣味知识抢答等方式让学员爱上学习编程 , 最终实现能独立开发一个基于控制台的‘库存管理系统’ 的学习模式 极简JAVA学习营是怎么学习的? &nbsp; 如何报名? 只要购买了极简JAVA一:JAVA入门就算报名成功! &nbsp;本期为第四期极简JAVA学习营,我们来看看往期学员的学习状态: 作业看这里~ &nbsp; 助教的作业报告是不是很专业 不交作业打屁屁 助教答疑是不是很用心 &nbsp; 有奖抢答大家玩的很嗨啊 &nbsp; &nbsp; 项目答辩终于开始啦 &nbsp; 优秀者的获奖感言 &nbsp; 这是答辩项目的效果 &nbsp; &nbsp; 这么细致的服务,这么好的氛围,这样的学习效果,需要多少钱呢? 不要1999,不要199,不要99,只要9.9 是的你没听错,只要9.9以上所有就都属于你了 如果你: 1、&nbsp;想学JAVA没有基础 2、&nbsp;想学JAVA没有整块的时间 3、&nbsp;想学JAVA没有足够的预算 还等什么?赶紧报名吧,抓紧抢位,本期只招300人,错过只有等时间待定的下一期了 &nbsp; 报名请加小助手微信:eduxy-1 &nbsp; &nbsp;

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

机器学习实战系列套餐(必备基础+经典算法+案例实战)

机器学习实战系列套餐以实战为出发点,帮助同学们快速掌握机器学习领域必备经典算法原理并结合Python工具包进行实战应用。建议学习顺序:1.Python必备工具包:掌握实战工具 2.机器学习算法与实战应用:数学原理与应用方法都是必备技能 3.数据挖掘实战:通过真实数据集进行项目实战。按照下列课程顺序学习即可! 课程风格通俗易懂,用最接地气的方式带领大家轻松进军机器学习!提供所有课程代码,PPT与实战数据,有任何问题欢迎随时与我讨论。

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

MFC一站式终极全套课程包

该套餐共包含从C小白到C++到MFC的全部课程,整套学下来绝对成为一名C++大牛!!!

【数据结构与算法综合实验】欢乐连连看(C++ & MFC)案例

这是武汉理工大学计算机学院数据结构与算法综合实验课程的第三次项目:欢乐连连看(C++ & MFC)迭代开发代码。运行环境:VS2017。已经实现功能:开始游戏、消子、判断胜负、提示、重排、计时、帮助。

YOLOv3目标检测实战:训练自己的数据集

YOLOv3是一种基于深度学习的端到端实时目标检测方法,以速度快见长。本课程将手把手地教大家使用labelImg标注和使用YOLOv3训练自己的数据集。课程分为三个小项目:足球目标检测(单目标检测)、梅西目标检测(单目标检测)、足球和梅西同时目标检测(两目标检测)。 本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。包括:安装Darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入探究。 除本课程《YOLOv3目标检测实战:训练自己的数据集》外,本人推出了有关YOLOv3目标检测的系列课程,请持续关注该系列的其它课程视频,包括: 《YOLOv3目标检测实战:交通标志识别》 《YOLOv3目标检测:原理与源码解析》 《YOLOv3目标检测:网络模型改进方法》 敬请关注并选择学习!

u-boot-2015.07.tar.bz2

uboot-2015-07最新代码,喜欢的朋友请拿去

相关热词 c# 按行txt c#怎么扫条形码 c#打包html c# 实现刷新数据 c# 两个自定义控件重叠 c#浮点类型计算 c#.net 中文乱码 c# 时间排序 c# 必备书籍 c#异步网络通信
立即提问