|
@@ -194,8 +194,7 @@ double SemSegContextTree::getBestSplit ( std::vector<NICE::MultiChannelImageT<do
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- imgCount = ( int ) feats.size();
|
|
|
- featdim = feats[0].channels();
|
|
|
+ imgCount = (int)feats.size();
|
|
|
}
|
|
|
catch ( Exception )
|
|
|
{
|
|
@@ -224,15 +223,15 @@ double SemSegContextTree::getBestSplit ( std::vector<NICE::MultiChannelImageT<do
|
|
|
if ( forbidden_classes.find ( labelmapback[i] ) != forbidden_classes.end() )
|
|
|
fraction[i] = 0;
|
|
|
else
|
|
|
- fraction[i] = ( ( double ) maxSamples ) / ( ( double ) featcounter * a[i] * a.size() );
|
|
|
+ fraction[i] = ( (double)maxSamples ) / ( (double)featcounter * a[i] * a.size() );
|
|
|
}
|
|
|
|
|
|
featcounter = 0;
|
|
|
|
|
|
for ( int iCounter = 0; iCounter < imgCount; iCounter++ )
|
|
|
{
|
|
|
- int xsize = ( int ) currentfeats[iCounter].width();
|
|
|
- int ysize = ( int ) currentfeats[iCounter].height();
|
|
|
+ int xsize = (int)currentfeats[iCounter].width();
|
|
|
+ int ysize = (int)currentfeats[iCounter].height();
|
|
|
|
|
|
for ( int x = 0; x < xsize; x++ )
|
|
|
{
|
|
@@ -241,7 +240,7 @@ double SemSegContextTree::getBestSplit ( std::vector<NICE::MultiChannelImageT<do
|
|
|
if ( currentfeats[iCounter].get ( x, y, tree ) == node )
|
|
|
{
|
|
|
int cn = labels[iCounter] ( x, y );
|
|
|
- double randD = ( double ) rand() / ( double ) RAND_MAX;
|
|
|
+ double randD = (double)rand() / (double)RAND_MAX;
|
|
|
|
|
|
if ( labelmap.find ( cn ) == labelmap.end() )
|
|
|
continue;
|
|
@@ -267,7 +266,7 @@ double SemSegContextTree::getBestSplit ( std::vector<NICE::MultiChannelImageT<do
|
|
|
|
|
|
for ( mapit = e.begin() ; mapit != e.end(); mapit++ )
|
|
|
{
|
|
|
- double p = ( double ) ( *mapit ).second / ( double ) featcounter;
|
|
|
+ double p = (double)( *mapit ).second / (double)featcounter;
|
|
|
globent += p * log2 ( p );
|
|
|
}
|
|
|
|
|
@@ -283,7 +282,7 @@ double SemSegContextTree::getBestSplit ( std::vector<NICE::MultiChannelImageT<do
|
|
|
for ( int i = 0; i < featsPerSplit; i++ )
|
|
|
{
|
|
|
int x1, x2, y1, y2;
|
|
|
- int ft = ( int ) ( ( double ) rand() / ( double ) RAND_MAX * ( double ) ftypes );
|
|
|
+ int ft = (int)( (double)rand() / (double)RAND_MAX * (double)ftypes );
|
|
|
|
|
|
int tmpws = windowSize;
|
|
|
|
|
@@ -301,10 +300,10 @@ double SemSegContextTree::getBestSplit ( std::vector<NICE::MultiChannelImageT<do
|
|
|
tmpws *= 4;
|
|
|
}
|
|
|
|
|
|
- x1 = ( int ) ( ( double ) rand() / ( double ) RAND_MAX * ( double ) tmpws ) - tmpws / 2;
|
|
|
- x2 = ( int ) ( ( double ) rand() / ( double ) RAND_MAX * ( double ) tmpws ) - tmpws / 2;
|
|
|
- y1 = ( int ) ( ( double ) rand() / ( double ) RAND_MAX * ( double ) tmpws ) - tmpws / 2;
|
|
|
- y2 = ( int ) ( ( double ) rand() / ( double ) RAND_MAX * ( double ) tmpws ) - tmpws / 2;
|
|
|
+ x1 = (int)( (double)rand() / (double)RAND_MAX * (double)tmpws ) - tmpws / 2;
|
|
|
+ x2 = (int)( (double)rand() / (double)RAND_MAX * (double)tmpws ) - tmpws / 2;
|
|
|
+ y1 = (int)( (double)rand() / (double)RAND_MAX * (double)tmpws ) - tmpws / 2;
|
|
|
+ y2 = (int)( (double)rand() / (double)RAND_MAX * (double)tmpws ) - tmpws / 2;
|
|
|
|
|
|
int f1 = ( int ) ( ( double ) rand() / ( double ) RAND_MAX * ( double ) channelsPerType[ft].size() );
|
|
|
int f2 = ( int ) ( ( double ) rand() / ( double ) RAND_MAX * ( double ) channelsPerType[ft].size() );
|
|
@@ -359,7 +358,7 @@ double SemSegContextTree::getBestSplit ( std::vector<NICE::MultiChannelImageT<do
|
|
|
|
|
|
for ( int r = 0; r < randomTests; r++ )
|
|
|
{
|
|
|
- splits.push_back ( ( ( double ) rand() / ( double ) RAND_MAX*scale ) + minval );
|
|
|
+ splits.push_back ( ( (double)rand() / (double)RAND_MAX*scale ) + minval );
|
|
|
}
|
|
|
|
|
|
for ( int run = 0 ; run < randomTests; run++ )
|
|
@@ -394,7 +393,7 @@ double SemSegContextTree::getBestSplit ( std::vector<NICE::MultiChannelImageT<do
|
|
|
|
|
|
for ( mapit = eL.begin() ; mapit != eL.end(); mapit++ )
|
|
|
{
|
|
|
- double p = ( double ) ( *mapit ).second / ( double ) counterL;
|
|
|
+ double p = (double)( *mapit ).second / (double)counterL;
|
|
|
leftent -= p * log2 ( p );
|
|
|
}
|
|
|
|
|
@@ -402,13 +401,13 @@ double SemSegContextTree::getBestSplit ( std::vector<NICE::MultiChannelImageT<do
|
|
|
|
|
|
for ( mapit = eR.begin() ; mapit != eR.end(); mapit++ )
|
|
|
{
|
|
|
- double p = ( double ) ( *mapit ).second / ( double ) counterR;
|
|
|
+ double p = (double)( *mapit ).second / (double)counterR;
|
|
|
rightent -= p * log2 ( p );
|
|
|
}
|
|
|
|
|
|
//cout << "rightent: " << rightent << " leftent: " << leftent << endl;
|
|
|
|
|
|
- double pl = ( double ) counterL / ( double ) ( counterL + counterR );
|
|
|
+ double pl = (double)counterL / (double)( counterL + counterR );
|
|
|
|
|
|
double ig = globent - ( 1.0 - pl ) * rightent - pl * leftent;
|
|
|
|
|
@@ -469,7 +468,7 @@ inline double SemSegContextTree::getMeanProb ( const int &x, const int &y, const
|
|
|
val += forest[tree][currentfeats.get ( x,y,tree ) ].dist[channel];
|
|
|
}
|
|
|
|
|
|
- return val / ( double ) nbTrees;
|
|
|
+ return val / (double)nbTrees;
|
|
|
}
|
|
|
|
|
|
void SemSegContextTree::computeIntegralImage ( const NICE::MultiChannelImageT<SparseVectorInt> &infeats, NICE::MultiChannelImageT<SparseVectorInt> &integralImage )
|
|
@@ -590,7 +589,7 @@ void SemSegContextTree::computeIntegralImage ( const NICE::MultiChannelImageT<un
|
|
|
|
|
|
inline double computeWeight ( const double &d, const double &dim )
|
|
|
{
|
|
|
- return 1.0 / ( pow ( 2, ( double ) ( dim - d + 1 ) ) );
|
|
|
+ return 1.0 / ( pow ( 2, (double)( dim - d + 1 ) ) );
|
|
|
}
|
|
|
|
|
|
void SemSegContextTree::train ( const MultiDataset *md )
|
|
@@ -788,8 +787,8 @@ void SemSegContextTree::train ( const MultiDataset *md )
|
|
|
|
|
|
for ( int iCounter = 0; iCounter < imgcounter; iCounter++ )
|
|
|
{
|
|
|
- int xsize = ( int ) currentfeats[iCounter].width();
|
|
|
- int ysize = ( int ) currentfeats[iCounter].height();
|
|
|
+ int xsize = (int)currentfeats[iCounter].width();
|
|
|
+ int ysize = (int)currentfeats[iCounter].height();
|
|
|
|
|
|
for ( int x = 0; x < xsize; x++ )
|
|
|
{
|
|
@@ -804,13 +803,13 @@ void SemSegContextTree::train ( const MultiDataset *md )
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- for ( int i = 0; i < ( int ) a.size(); i++ )
|
|
|
+ for ( int i = 0; i < (int)a.size(); i++ )
|
|
|
{
|
|
|
- a[i] /= ( double ) featcounter;
|
|
|
+ a[i] /= (double)featcounter;
|
|
|
}
|
|
|
|
|
|
#ifdef DEBUG
|
|
|
- for ( int i = 0; i < ( int ) a.size(); i++ )
|
|
|
+ for ( int i = 0; i < (int)a.size(); i++ )
|
|
|
{
|
|
|
cout << "a[" << i << "]: " << a[i] << endl;
|
|
|
}
|
|
@@ -863,7 +862,7 @@ void SemSegContextTree::train ( const MultiDataset *md )
|
|
|
|
|
|
for ( int tree = 0; tree < nbTrees; tree++ )
|
|
|
{
|
|
|
- int t = ( int ) forest[tree].size();
|
|
|
+ int t = (int)forest[tree].size();
|
|
|
int s = startnode[tree];
|
|
|
startnode[tree] = t;
|
|
|
//TODO vielleicht parallel wenn nächste schleife trotzdem noch parallelsiert würde, die hat mehr gewicht
|
|
@@ -1097,7 +1096,7 @@ void SemSegContextTree::train ( const MultiDataset *md )
|
|
|
#ifdef DEBUG
|
|
|
for ( int tree = 0; tree < nbTrees; tree++ )
|
|
|
{
|
|
|
- int t = ( int ) forest[tree].size();
|
|
|
+ int t = (int)forest[tree].size();
|
|
|
|
|
|
for ( int i = 0; i < t; i++ )
|
|
|
{
|
|
@@ -1107,10 +1106,10 @@ void SemSegContextTree::train ( const MultiDataset *md )
|
|
|
{
|
|
|
cout << ", feat: " << forest[tree][i].feat->writeInfos() << " ";
|
|
|
opOverview[forest[tree][i].feat->getOps() ]++;
|
|
|
- contextOverview[forest[tree][i].depth][ ( int ) forest[tree][i].feat->getContext() ]++;
|
|
|
+ contextOverview[forest[tree][i].depth][ (int)forest[tree][i].feat->getContext() ]++;
|
|
|
}
|
|
|
|
|
|
- for ( int d = 0; d < ( int ) forest[tree][i].dist.size(); d++ )
|
|
|
+ for ( int d = 0; d < (int)forest[tree][i].dist.size(); d++ )
|
|
|
{
|
|
|
cout << " " << forest[tree][i].dist[d];
|
|
|
}
|
|
@@ -1368,6 +1367,7 @@ void SemSegContextTree::semanticseg ( CachedExample *ce, NICE::Image & segresult
|
|
|
#endif
|
|
|
|
|
|
string cndir = conf->gS ( "SSContextTree", "cndir", "" );
|
|
|
+
|
|
|
int allClasses = ( int ) probabilities.channels();
|
|
|
vector<int> useclass ( allClasses, 1 );
|
|
|
#ifdef WRITEGLOB
|
|
@@ -1468,7 +1468,7 @@ void SemSegContextTree::semanticseg ( CachedExample *ce, NICE::Image & segresult
|
|
|
}
|
|
|
#undef VISUALIZE
|
|
|
#ifdef VISUALIZE
|
|
|
- for ( int j = 0 ; j < ( int ) probabilities.numChannels; j++ )
|
|
|
+ for ( int j = 0 ; j < (int)probabilities.numChannels; j++ )
|
|
|
{
|
|
|
//cout << "class: " << j << endl;//" " << cn.text ( j ) << endl;
|
|
|
|