Ejemplo n.º 1
1
std::vector< std::vector< std::vector<double> > > NeuralNetwork::readDataFromFile(std::string fpath){
    std::vector< std::vector<double> > inputMatrix;
    std::vector< std::vector<double> > outputMatrix;
    std::ifstream trainingFile(fpath);
    std::string line;
    while(getline(trainingFile, line)){
        //structure is x_1,...,x_n y_1,y_2,...,y_m (comma and space separated)
        int spacePosition = (int)line.find(" ");
        int lastCommaPosition = -1;
        int nextCommaPosition = (int)line.find(",",lastCommaPosition+1);

        //get inputs
        std::vector<double> input;
        while(nextCommaPosition != std::string::npos && nextCommaPosition < spacePosition){
            input.push_back(stod(line.substr(lastCommaPosition+1,nextCommaPosition)));
            lastCommaPosition = nextCommaPosition;
            nextCommaPosition = (int)line.find(",",nextCommaPosition+1);
        }
        input.push_back(stod(line.substr(lastCommaPosition+1,spacePosition)));

        //get outputs
        std::vector<double> output;
        lastCommaPosition = spacePosition;
        nextCommaPosition = (int)line.find(",",lastCommaPosition+1);
        while(nextCommaPosition != std::string::npos && nextCommaPosition < line.length()){
            output.push_back(stod(line.substr(lastCommaPosition+1,nextCommaPosition)));
            lastCommaPosition = nextCommaPosition;
            nextCommaPosition = (int)line.find(",",lastCommaPosition+1);
        }
        output.push_back(stod(line.substr(lastCommaPosition+1)));

        //add these training data points to the training matrices
        inputMatrix.push_back(input);
        outputMatrix.push_back(output);
    }
    trainingFile.close();
    std::vector< std::vector< std::vector<double> > > dataFromFile;
    dataFromFile.push_back(inputMatrix);
    dataFromFile.push_back(outputMatrix);
    return dataFromFile;
}
Ejemplo n.º 2
0
void LRMachine::loadTrainingSet(std::string filename) {
//	std::cout << "I'm loading training set with the LRMachine from " << filename << std::endl;

	std::string line;
	std::ifstream trainingFile(filename.c_str());

	if(trainingFile.is_open()){
		while(std::getline(trainingFile,line)) {
			Sample tmp;

			tmp.setInput(Utils::vStovD(Utils::split(line,';')));

			std::getline(trainingFile,line);

			std::vector<int> res;

			res.push_back(atoi(line.c_str()));

			tmp.setResult(res);

			C_trainingSet.push_back(tmp);
		}

		trainingFile.close();
	} else{
		std::cout << "Unable to open file" << std::endl;
	}
}
void FacialFeatureRecognizerTest::compareSmileFrownSimilarFacesTest()
{
	Ptr<FaceRecognizer> model = createFisherFaceRecognizer();
    FacialFeatureRecognizer recognizer(model, 0, NULL, NULL, NULL);
	QString trainingFile("/home/zane/Documents/COS301/training.xml");
	recognizer.loadTrainingFromXML(trainingFile);

	Mat face1 = imread("../../testFiles/FaceRec/barack_smile.jpg", CV_LOAD_IMAGE_UNCHANGED);
	Mat face2 = imread("../../testFiles/FaceRec/barack_frown.jpg", CV_LOAD_IMAGE_UNCHANGED);

	string faceCascade = "/home/zane/Documents/COS301/MainProject/testFiles/haarcascade_frontalface_alt2.xml";
	Filter* faceDetect = new FaceDetectFilter(faceCascade);
	Filter* preProc = new PreProcessingFilter(140, 150);

	ImageData* data1 = new ImageData(face1, 0);
	data1 = faceDetect->filter(data1);
	data1 = preProc->filter(data1);

	ImageData* data2 = new ImageData(face2, 0);
	data2 = faceDetect->filter(data2);
	data2 = preProc->filter(data2);

	double expected = 5800;
	double actual = recognizer.compareFaces(data1->faces[0], data2->faces[0]);

	QVERIFY(actual <= expected);
}