亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? geneticweaklearner.cpp

?? WeakLearner,弱分類器
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//LAB_LicenseBegin==============================================================
//  Copyright (c) 2005-2006, Hicham GHORAYEB < ghorayeb@gmail.com >
//  All rights reserved.
//
//	This software is a Library for Adaptive Boosting. It provides a generic 
//	framework for the study of the Boosting algorithms. The framework provides 
//	the different tasks for boosting: Learning, Validation, Test, Profiling and 
//	Performance Analysis Tasks.
//
//	This Library was developped during my PhD studies at:
//	Ecole des Mines de Paris - Centre de Robotique( CAOR )
//	http://caor.ensmp.fr
//	under the supervision of Pr. Claude Laurgeau and Bruno Steux
//
//  Redistribution and use in source and binary forms, with or without
//  modification, are permitted provided that the following conditions are met:
//
//      * Redistributions of source code must retain the above copyright
//        notice, this list of conditions and the following disclaimer.
//      * Redistributions in binary form must reproduce the above copyright
//        notice, this list of conditions and the following disclaimer
//        in the documentation and/or other materials provided with the distribution.
//      * Neither the name of the Ecole des Mines de Paris nor the names of
//        its contributors may be used to endorse or promote products
//        derived from this software without specific prior written permission.
//
//  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
//  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
//  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
//  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
//  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
//  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
//  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
//  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
//  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
//  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
//  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
//================================================================LAB_LicenseEnd
#include "GeneticWeakLearner.h"
#include "samples/learningsets/ILearningSet.h"
#include "samples/Sample.h"
#include "classifiers/features/ImageFeature.h"
#include "classifiers/features/ControlPointFeature.h"
#include "classifiers/features/IRandomWeakClassifierGenerator.h"

#include "LibAdaBoost/modules/options/GeneticWeakLearnerOptions.h"
using namespace modules::options;

#include "wlinterfaces/GeneticWeakLearnerInterface.h"
using namespace learners::wlinterfaces;

#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
using namespace std;

using namespace samples;
using namespace classifiers;
using namespace classifiers::features;
using namespace learners;

namespace learners{
	bool lessErr(const WeakClassifier *i1,const WeakClassifier *i2)
	{
		return i1->GetError() < i2->GetError();
	}
}

GeneticWeakLearner::GeneticWeakLearner()
:m_LearningSet	  ( NULL                      )
,m_RandomGenerator( NULL                      )
,m_nb_indiv		  ( GA_DEFAULT_NBR_INDIV      )
,m_winner_to_keep ( GA_DEFAULT_WINNER_TO_KEEP )
,m_looser_to_keep ( GA_DEFAULT_LOOSER_TO_KEEP )
,m_max_generation ( GA_DEFAULT_MAX_GENERATION )
,m_nb_mutation	  ( GA_DEFAULT_NBR_MUTATION   )
,m_interface      ( NULL                      )
,m_bestwc         ( t_indiv(NULL, 1.0)        )
{
	m_population.reserve( m_nb_indiv );
	m_StringLog.clear();
}

GeneticWeakLearner::GeneticWeakLearner(ILearningSet *learningSet)
:m_LearningSet    ( learningSet               )
,m_RandomGenerator( NULL                      )
,m_nb_indiv		  ( GA_DEFAULT_NBR_INDIV      )
,m_winner_to_keep ( GA_DEFAULT_WINNER_TO_KEEP )
,m_looser_to_keep ( GA_DEFAULT_LOOSER_TO_KEEP )
,m_max_generation ( GA_DEFAULT_MAX_GENERATION )
,m_nb_mutation	  ( GA_DEFAULT_NBR_MUTATION   )
,m_interface      ( NULL                      )
,m_bestwc         ( t_indiv(NULL, 1.0)        )
{
	m_population.reserve( m_nb_indiv );
	m_StringLog.clear();
}

GeneticWeakLearner::~GeneticWeakLearner()
{
	for(int i=0; i < m_population.size(); i++)
	{
		delete m_population[i];
		m_population[i] = NULL;
	}

	if( m_bestwc.first != NULL){
		delete m_bestwc.first;
	}

	m_population.clear();
}

// IWeakLearner
WeakClassifier *
GeneticWeakLearner::GetNewWeakClassifier(double &error)
{
	WeakClassifier *wc = NULL;

	// Initialize the Learner, random generation of the
	// initial population
	Reset();

	// Run the Genetic Algorithm 
	Learn();

	// Get the result of the genetic algorithm
	wc = (WeakClassifier *)m_bestwc.first->Clone();

	// Get the learning result
	error = m_bestwc.second;
	return wc;
}

// GA Protected Methods
void
GeneticWeakLearner::TestWeakClassifier(WeakClassifier *feature, const ILearningSet *learningSet)
{
	double err = 0.0;
	int nbTruePositive  = 0;
	int nbTrueNegative  = 0;
	int nbFalsePositive = 0;
	int nbFalseNegative = 0;

	//std::cout << "[CHECK POSITIVE SAMPLES]" <<std::endl;
	// CHECK POSITIVE SAMPLES
	for(unsigned i=0; i < learningSet->NbrOfPositiveSamples(); i++)
	{
		const Sample *sample = learningSet->GetPositiveSampleConstAt( i );

		int curClass = feature->Classify( sample );

		if( curClass == POSITIVE_CLASS_ID)
		{
			nbTruePositive++;
		}else{
			nbFalseNegative++;
			// INCREMENT ERROR
			err += sample->GetWeight();
		}
	}

	//std::cout << "[CHECK NEGATIVE SAMPLES]" <<std::endl;
	// CHECK NEGATIVE SAMPLES
	for(unsigned i=0; i < learningSet->NbrOfNegativeSamples(); i++)
	{
		const Sample *sample = learningSet->GetNegativeSampleConstAt( i );

		int curClass = feature->Classify( sample );

		if( curClass == NEGATIVE_CLASS_ID)
		{
			nbTrueNegative++;
		}else{
			nbFalsePositive++;
			// INCREMENT ERROR
			err += sample->GetWeight();
		}
	}

	//std::cout << "[SET THE ERROR]" <<std::endl;
	// SET THE ERROR
	feature->SetError( err );

	// LOG CLASSIFICATION RESULT FOR FURTHER PROCESSING
	feature->SetTruePositive( nbTruePositive );
	feature->SetTrueNegative( nbTrueNegative );
	feature->SetFalsePositive( nbFalsePositive );
	feature->SetFalseNegative( nbFalseNegative );
}

// IWeakLearner
void
GeneticWeakLearner::Learn(void)
{
	assert( m_LearningSet != NULL );

	const GeneticWeakLearnerInterface *myInterface = (const GeneticWeakLearnerInterface *)GetWeakLearnerInterface();

	ostringstream oStrLog;

	unsigned generation = 0;
	unsigned nbr_generation_no_improvement = 0;

	oStrLog.clear();

	/* TODO:: SAVE THE BEST FEATURE IN THE EVOLUTION POPULATION
	* from one iteration to another
	*/
	generation = 0;
	while( true ){
		// ITERATES OVER ALL THE INDIV IN THE POPULATION
		// APPLY EACH WEAK CLASSIFIER ON THE LEARNING SET
		// AND GET THE RESULT ERROR.
		GeneticWeakLearner::t_population::iterator it;
		for(it = m_population.begin(); it != m_population.end(); it++){
			// EVALUATE THE CURENT WEAK CLASSIFIER ON THE LEARNING SET
			WeakClassifier *wc = (*it);
			TestWeakClassifier(wc, m_LearningSet);
		}

		// SORT THE WEAK CLASSIFIERS IN THE POPULATION RESPECT TO ERROR
		std::sort(m_population.begin(), m_population.end(), lessErr );

		for(unsigned t=0; t < (m_population.size() - 1); t++)
		{
			//std::cerr << t << "-->"<< m_population[t]->GetError() << ", " << m_population[t+1]->GetError() << std::endl;
			assert( m_population[t]->GetError() <= m_population[t+1]->GetError());
		}

		// Clone The Best WeakClassifier
		WeakClassifier *cur_bestwc = (WeakClassifier *)m_population.front()->Clone();
		double cur_error = m_population.front()->GetError();
		
		// DO SOME LOG ON THAT STEP: Report results of this generation
		std::cout
			//<< "Current Error = "
			<< setprecision( 5 )
			<< setw( 7 )
			<< left
			<< cur_error << " c, "
			<< setprecision( 5 )
			<< setw( 7 )
			<< left
			<< m_bestwc.second << " l, "
			<< setfill(' ')
			<< setw( 4 )
			<< nbr_generation_no_improvement
			<< "th time"
			<< "("
			<< setw( 4 )
			<< cur_bestwc->GetTruePositive()
			<< "/"
			<< setw( 4 )
			<< m_LearningSet->NbrOfPositiveSamples() 
			<< " pos"
			<< ", "
			<< setw( 4 )
			<< cur_bestwc->GetTrueNegative() 
			<< "/" 
			<< setw( 4 )
			<< m_LearningSet->NbrOfNegativeSamples() 
			<< " neg"
			<< ", "
			<< setw( 4 )
			<< cur_bestwc->GetTrueNegative() + cur_bestwc->GetTruePositive()
			<< "/"
			<< setw( 4 )

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电视剧免费全集观看| 国产精品美女一区二区三区| 国产成人av资源| 午夜视频久久久久久| 国产精品乱子久久久久| 日韩欧美一级片| 欧美日韩国产首页| av不卡免费电影| 国产a区久久久| 蜜臀av一区二区在线观看| 一区二区三区成人在线视频| 久久久精品国产免费观看同学| 精品视频在线看| 色国产精品一区在线观看| 国产91精品免费| 国产美女精品在线| 久久99久久久久| 99国产精品久久久久久久久久久 | 欧美r级在线观看| 欧美视频在线一区二区三区 | 不卡一二三区首页| 国内外成人在线| 久久99精品一区二区三区| 五月天亚洲婷婷| 亚洲图片欧美色图| 一区二区三区自拍| 亚洲欧美精品午睡沙发| 国产精品美女久久久久aⅴ | 国产日产欧美一区二区视频| 欧美电影免费观看完整版| 欧美猛男超大videosgay| 欧美专区日韩专区| 欧美偷拍一区二区| 欧美日韩久久一区| 欧美日韩日本视频| 欧美一区二区三区不卡| 欧美高清性hdvideosex| 91精品国产91热久久久做人人 | 国产欧美一区视频| 国产精品丝袜一区| 国产精品日日摸夜夜摸av| 国产精品毛片久久久久久| 国产精品―色哟哟| 亚洲日本成人在线观看| 伊人开心综合网| 亚洲国产日韩在线一区模特| 日韩在线播放一区二区| 强制捆绑调教一区二区| 久久国产精品露脸对白| 国产成人激情av| 99亚偷拍自图区亚洲| 一本一本久久a久久精品综合麻豆| 色综合天天做天天爱| 欧美亚洲禁片免费| 欧美一区二区免费| 国产日韩欧美一区二区三区乱码 | 亚洲免费av网站| 亚洲午夜视频在线| 男人操女人的视频在线观看欧美 | caoporn国产一区二区| 91免费在线视频观看| 精品视频999| 精品国偷自产国产一区| 国产精品免费免费| 午夜免费久久看| 国产乱人伦偷精品视频免下载| 成人涩涩免费视频| 欧美中文字幕不卡| 久久亚洲免费视频| 亚洲精品亚洲人成人网在线播放| 日韩高清欧美激情| 国产a视频精品免费观看| 在线观看欧美黄色| 精品国产免费久久| 亚洲乱码中文字幕综合| 日本不卡不码高清免费观看| 国产一区二区免费看| 色综合久久久久| 日韩三级中文字幕| 亚洲欧洲精品一区二区三区| 肉丝袜脚交视频一区二区| 成人激情动漫在线观看| 这里只有精品视频在线观看| 欧美国产日韩亚洲一区| 午夜精品免费在线| 成人短视频下载| 欧美一级生活片| 亚洲天堂2014| 国内不卡的二区三区中文字幕| 色婷婷综合久久久中文一区二区| 日韩美女视频在线| 一区二区三区国产豹纹内裤在线 | 激情综合一区二区三区| 91九色02白丝porn| 亚洲国产高清不卡| 免费不卡在线视频| 在线视频一区二区免费| 国产女主播在线一区二区| 五月天激情综合| 91捆绑美女网站| 国产无人区一区二区三区| 天堂在线一区二区| 91久久线看在观草草青青| 久久日韩精品一区二区五区| 亚洲不卡一区二区三区| 9久草视频在线视频精品| 免费观看日韩电影| 国产欧美日韩中文久久| 久久久777精品电影网影网| 亚洲一卡二卡三卡四卡| 成人一区二区三区| 天天综合网天天综合色| 91在线精品一区二区| 国产亚洲精品aa| 日av在线不卡| 91麻豆精品久久久久蜜臀| 亚洲精品成人悠悠色影视| av亚洲精华国产精华精| 中文字幕免费观看一区| 国产一区二区三区最好精华液| 91精品国产91热久久久做人人| 一区二区三区 在线观看视频| 成人美女视频在线观看18| 久久久精品蜜桃| 国产米奇在线777精品观看| 精品久久一二三区| 另类综合日韩欧美亚洲| 日韩视频一区二区| 免费高清不卡av| 日韩午夜在线影院| 免费高清在线视频一区·| 日韩一二三四区| 久久99日本精品| 久久免费视频色| 国产成人免费在线视频| 欧美国产日韩精品免费观看| 国产成人精品亚洲777人妖| 国产三级一区二区三区| 国产白丝精品91爽爽久久| 国产日本亚洲高清| 成人av电影免费观看| 国产精品福利av| 色综合天天综合网国产成人综合天| 国产精品蜜臀在线观看| 色婷婷综合久色| 香蕉成人啪国产精品视频综合网| 欧美日韩二区三区| 久久国产视频网| 国产午夜亚洲精品不卡| kk眼镜猥琐国模调教系列一区二区| 国产精品嫩草影院av蜜臀| 91尤物视频在线观看| 亚洲综合一二三区| 91麻豆精品国产91久久久久久久久 | 老司机一区二区| 久久香蕉国产线看观看99| 久久久久久久久久久电影| 国产成人av电影| 亚洲欧美激情视频在线观看一区二区三区| zzijzzij亚洲日本少妇熟睡| 玉米视频成人免费看| 91精品国产一区二区三区蜜臀| 蜜臀久久99精品久久久久久9| 国产亚洲成av人在线观看导航| 91一区一区三区| 舔着乳尖日韩一区| 久久久欧美精品sm网站| 99久久久无码国产精品| 偷拍日韩校园综合在线| 精品日本一线二线三线不卡| 国产宾馆实践打屁股91| 亚洲午夜影视影院在线观看| 精品欧美乱码久久久久久| 99精品视频一区二区| 日韩国产在线一| 欧美韩国日本综合| 欧美色区777第一页| 激情深爱一区二区| 亚洲三级久久久| 欧美成人国产一区二区| 99久精品国产| 精品亚洲国内自在自线福利| 亚洲人成精品久久久久| 欧美va日韩va| 91福利小视频| 国产酒店精品激情| 日韩精品欧美成人高清一区二区| 中文字幕欧美激情| 日韩一区国产二区欧美三区| 99九九99九九九视频精品| 久久成人18免费观看| 亚洲国产乱码最新视频| 国产午夜亚洲精品羞羞网站| 欧美剧情电影在线观看完整版免费励志电影 | 亚洲同性gay激情无套| 日韩一区二区精品葵司在线 | 亚洲欧洲精品一区二区三区不卡| 在线综合视频播放| 91福利资源站| 成人国产精品免费网站|