9/09/2015

opencv 3.0 cascade_gpu example source code

opencv 2.49 example is here
http://study.marearts.com/2014/09/opencv-face-detection-using-adaboost.html



#include < iostream>    
#include "opencv2\objdetect\objdetect.hpp"
#include "opencv2\highgui\highgui.hpp"
#include "opencv2\imgproc\imgproc.hpp"
#include "opencv2\cudaobjdetect.hpp"
#include "opencv2\cudaimgproc.hpp"

#ifdef _DEBUG               
#pragma comment(lib, "opencv_core300d.lib")       
#pragma comment(lib, "opencv_highgui300d.lib")    
#pragma comment(lib, "opencv_imgcodecs300d.lib")  
#pragma comment(lib, "opencv_objdetect300d.lib")  
#pragma comment(lib, "opencv_imgproc300d.lib")  
#pragma comment(lib, "opencv_cudaobjdetect300d.lib")  
#else       
#pragma comment(lib, "opencv_core300.lib")       
#pragma comment(lib, "opencv_highgui300.lib")    
#pragma comment(lib, "opencv_imgcodecs300.lib")    
#pragma comment(lib, "opencv_objdetect300.lib")  
#pragma comment(lib, "opencv_imgproc300.lib")  
#pragma comment(lib, "opencv_cudaobjdetect300.lib")  
#endif        

using namespace std;
using namespace cv;


void main()
{
 //for time measure  
 float TakeTime;
 unsigned long Atime, Btime;

 //window  
 namedWindow("origin");

 //load image  
 Mat img = imread("sh.jpg");
 Mat grayImg; //adaboost detection is gray input only.  
 cvtColor(img, grayImg, CV_BGR2GRAY);

 //load xml file  
 string trainface = ".\\haarcascade_frontalface_alt.xml";

 //declaration  
 Ptr< cuda::CascadeClassifier> cascade_gpu = cuda::CascadeClassifier::create(trainface);

 
 /////////////////////////////////////////////  
 
 //gpu case face detection code  
 cuda::GpuMat faceBuf_gpu;
 cuda::GpuMat GpuImg;
 vector< Rect> faces;

 GpuImg.upload(grayImg);
 Atime = getTickCount();

 cascade_gpu->detectMultiScale(GpuImg, faceBuf_gpu);
 cascade_gpu->convert(faceBuf_gpu, faces);
 Btime = getTickCount();
 TakeTime = (Btime - Atime) / getTickFrequency();
 printf("detected face(gpu version) =%d / %lf sec take.\n", faces.size(), TakeTime);
 Mat faces_downloaded;
 if (faces.size() >= 1)
 {
  for (size_t i = 0; i < faces.size(); ++i)
   rectangle(img, faces[i], Scalar(255));
 } 

 /////////////////////////////////////////////////  
 //result display  
 imshow("origin", img);
 waitKey(0);
}


mnist image dataset (jpg files)

The MNIST dataset is a dataset of handwritten digits, comprising 60 000 training examples and 10 000 test examples. The dataset can be downloaded from http://yann.lecun.com/exdb/mnist/.
MNIST data is provided in binary file for user convenience.

But, in my case, this binary type is more difficult.
I am needed image files.

I want to start whole process of deep learning(make leveldb file, learning, classify) using MNIST data and compare to example result in caffe model.


This site tells me a hint how to make image datas.

This is my matlab code for making jpg file.

%%
clc;
clear all;

% Change the filenames if you've saved the files under different names
% On some platforms, the files might be saved as 
% train-images.idx3-ubyte / train-labels.idx1-ubyte


images = loadMNISTImages('t10k-images.idx3-ubyte');
labels = loadMNISTLabels('t10k-labels.idx1-ubyte');

%images = loadMNISTImages('train-images.idx3-ubyte');
%labels = loadMNISTLabels('train-labels.idx1-ubyte');

 
% We are using display_network from the autoencoder code
display_network(images(:,1:60000)); % Show the first 100 images
disp(labels(1:1));

% save one digit number to jpg file
%{
[w h]=size(images)
endIndex = h;

dindex=zeros(10,1);
for j=1:endIndex
    aImg = reshape( images(:,j), 28, 28);
    imshow(aImg);
    
    label = labels(j);
    dindex( label+1 ) = dindex( label+1 ) +1;
    dataD = strcat('./data2/mnist_', num2str( label ), '_', num2str( dindex(label+1) ), '.jpg' );
    
    %dindex
    imwrite(aImg, dataD);
    dataD
end




fileID = fopen('test.txt','w');
%make path and label
dindex=zeros(10,1);
for j=1:endIndex
    
    label = labels(j);
    dindex( label+1 ) = dindex( label+1 ) +1;
    dataD = strcat('/data2/mnist_', num2str( label ), '_', num2str( dindex(label+1) ), '.jpg' );
    fprintf(fileID,'%s %d\n',dataD, label);    
end
fclose(fileID);
%}
---

And images of mnist files


If you need images of mnist, request to me, I will send by email.
The file size is approximately 37 MB.

Thank you.

full data is here.
https://www.amazon.com/clouddrive/share/S4KGsmQIRtfINLbZ9O3nF5QNh5Xk4ZG702sWKKhybDf?ref_=cd_ph_share_link_copy