Bjoern Froehlich hace 13 años
padre
commit
d54b6433ec
Se han modificado 2 ficheros con 35 adiciones y 28 borrados
  1. 28 28
      semseg/SemSegContextTree.cpp
  2. 7 0
      semseg/SemSegCsurka.cpp

+ 28 - 28
semseg/SemSegContextTree.cpp

@@ -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;
 

+ 7 - 0
semseg/SemSegCsurka.cpp

@@ -1517,6 +1517,13 @@ void SemSegCsurka::classifyregions ( CachedExample *ce, NICE::Image & segresult,
           preMap.set ( pce[i].second.x, pce[i].second.y, r.scores[j], j + s*klassen );
         }
 
+        if(r.uncertainty < 0.0)
+        {
+          cerr << "uncertainty: " << r.uncertainty << endl;
+          pce[i].second.svec->store(cerr);
+          cerr << endl;
+          exit(-1);
+        }
 #ifdef UNCERTAINTY
         uncert[s] ( pce[i].second.x, pce[i].second.y ) = r.uncertainty;
         maxu = std::max ( r.uncertainty, maxu );