Changeset 111


Ignore:
Timestamp:
08/06/2009 11:30:26 AM (10 years ago)
Author:
dave
Message:

benchmarking in faceident

Location:
foam/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • foam/trunk/eigentools/src/main.cpp

    r97 r111  
    4949double scale = 1; 
    5050 
    51 //int w=50; 
    52 //int h=80; 
    53 int w=20; 
    54 int h=30; 
     51int w=50; 
     52int h=80; 
     53//int w=20; 
     54//int h=30; 
    5555 
    5656PCA pca(w*h); 
     
    123123        //FILE *f=fopen("davelight-20x30.pca", "wb"); 
    124124        //pca.Save(f); 
    125         pca = LoadPCA("../data/eigenspaces/spacek-20x30.pca"); 
    126         PCA subspace = LoadPCA("dave-resynthed-sub.pca"); 
    127  
    128         //pca.Compress(0,10); 
    129         //pca.Compress(0,30); 
     125        pca = LoadPCA("../no-redist/eigenspaces/spacek-50x80.pca"); 
     126        //PCA subspace = LoadPCA("../data/eigenspaces/davelight-spacek-20x30.pca"); 
    130127                 
    131128        //pca.EigenTransform() *= subspace.EigenTransform().Transposed(); 
    132129         
    133         PCA davesubspace = MakeSubspace(pca,"../data/images/faces/dave/*.png"); 
    134         SavePCA(davesubspace,"davelight-spacek-20x30.pca"); 
     130        //PCA davesubspace = MakeSubspace(pca,"../data/images/faces/dave/*.png"); 
     131        //SavePCA(davesubspace,"davelight-spacek-20x30.pca"); 
    135132                 
     133        pca.Compress(0,100); 
     134         
    136135        src = src.Scale(w,h).RGB2GRAY(); 
    137136        Vector<float> d(src.ToFloatVector());    
     
    361360        static float t=0; 
    362361 
    363         for (unsigned int i=0; i<10; i++) 
    364         { 
    365                 //camera.Blit(Image(w,h,1,(pca.GetEigenTransform().GetRowVector(i)*50*sin(t))/((i+1) * 1) //+pca.GetMean() 
    366                 //      ),(i%30)*(w+2),0+(i/30)*(h+2)); 
    367                 camera.Blit(Image(w,h,1,pca.GetEigenTransform().GetRowVector(i)*3 //+pca.GetMean() 
    368                         ),(i%30)*(w+2),0+(i/30)*(h+2)); 
    369         } 
    370          
    371         t+=0.1; 
    372          
    373         camera.Blit(Image(w,h,1,pca.GetMean()),0,300); 
    374         camera.Blit(src,60,300); 
    375         camera.Blit(Image(w,h,1,pca.Synth(params)),120,300); 
     362        for (unsigned int i=0; i<100; i++) 
     363        { 
     364                camera.Blit(Image(w,h,1,(pca.GetEigenTransform().GetRowVector(i)*100*sin(t))/((i+1) * 0.5)+pca.GetMean() 
     365                        ),(i%12)*(w+2),0+(i/12)*(h+2)); 
     366                //camera.Blit(Image(w,h,1,pca.GetEigenTransform().GetRowVector(i)*5+pca.GetMean() 
     367                //      ),(i%10)*(w+2),0+(i/10)*(h+2)); 
     368        } 
     369         
     370        t+=0.05; 
     371         
     372        static int frame=0; 
     373        char fn[256]; 
     374        snprintf(fn,256,"out-%06d.jpg",frame); 
     375        cvSaveImage(fn,camera.m_Image); 
     376        frame++; 
     377         
     378        //camera.Blit(Image(w,h,1,pca.GetMean()),0,300); 
     379        //camera.Blit(src,60,300); 
     380        //camera.Blit(Image(w,h,1,pca.Synth(params)),120,300); 
    376381 
    377382    cvShowImage("result", camera.m_Image); 
  • foam/trunk/faceclassifier/src/App.cpp

    r96 r111  
    2424using namespace std; 
    2525 
    26 //int w=50; 
    27 //int h=80; 
    28  
    29 int w=20; 
    30 int h=30; 
     26int w=50; 
     27int h=80; 
     28 
     29//int w=20; 
     30//int h=30; 
    3131 
    3232App::App(const string &filename) : 
     
    5959         
    6060        PCA pca(w*h); 
    61         //FILE *f=fopen("../data/eigenspaces/spacek-50x80.pca", "rb"); 
    62         FILE *f=fopen("../data/eigenspaces/spacek-20x30.pca", "rb"); 
     61        FILE *f=fopen("../no-redist/eigenspaces/spacek-50x80.pca", "rb"); 
     62        //FILE *f=fopen("../data/eigenspaces/spacek-20x30.pca", "rb"); 
    6363        pca.Load(f); 
    6464        fclose(f); 
    65         pca.Compress(20,300); 
     65        pca.Compress(10,500); 
    6666         
    6767        m_Classifier = new PCAClassifier(pca); 
    6868        m_FaceBank = new FaceBank(w,h,0.4,0.1,m_Classifier); 
    6969        cvInitFont( &m_Font, CV_FONT_HERSHEY_PLAIN, 0.5, 0.5, 0, 1, CV_AA ); 
     70        cvInitFont( &m_LargeFont, CV_FONT_HERSHEY_PLAIN, 25, 25, 0, 10, CV_AA ); 
    7071     
    7172        cvNamedWindow( "face classifier", 1 ); 
    7273         
    73         Benchmark(); 
     74        Benchmark("yale"); 
    7475} 
    7576 
     
    8081static CvScalar colors[] = 
    8182    { 
    82         {{255,255,255}}, 
    83         {{0,0,0}}, 
     83        {{0,0,255}}, 
    8484        {{0,128,255}}, 
    8585        {{0,255,255}}, 
     
    8888        {{255,255,0}}, 
    8989        {{255,0,0}}, 
    90         {{255,0,255}} 
     90        {{255,0,255}}, 
    9191    }; 
    9292 
     
    191191                        if (d!=m_DebugNames.end()) 
    192192                        { 
    193                                 sprintf(s,"%s %0.2f",d->second.c_str(),confidence); 
     193                                sprintf(s,"%s",d->second.c_str()); 
    194194                        } 
    195195                        else 
    196196                        { 
    197                                 sprintf(s,"%d %0.2f",ID,confidence); 
     197                                sprintf(s,"%d",ID); 
    198198                        } 
    199199                         
    200                         cvPutText(camera.m_Image, s, cvPoint(r->x,r->y+r->height-5), &m_Font, colors[0]); 
     200                        cvPutText(camera.m_Image, s, cvPoint(r->x,r->y+r->height-5), &m_LargeFont, colors[ID]); 
    201201 
    202202                        if (!m_Learn) 
     
    218218                { 
    219219                        Vector<float> p = c->GetGroupMean(m_FaceNum); 
    220                         cerr<<p.Magnitude()<<endl; 
    221220                        Vector<float> r = c->GetPCA().Synth(p); 
    222221                        camera.Blit(Image(w,h,1,r),0,100); 
     
    234233} 
    235234 
    236 void App::Benchmark() 
     235void App::Benchmark(const string &test) 
    237236{ 
    238237        cerr<<"Running benchmark test"<<endl; 
    239         vector<string> people=Glob("../data/benchmark/trek/training/*"); 
     238        string path(string("../data/benchmark/")+test); 
     239        vector<string> people=Glob(path+string("/training/*")); 
    240240        int ID=0; 
    241241        m_Learn=true; 
     
    251251                        Image image(*ii); 
    252252                        Update(image); 
    253                         string fn=*ii+"-out.png"; 
    254                         cvSaveImage(fn.c_str(),image.m_Image); 
     253                        //string fn=*ii+"-out.png"; 
     254                        //cvSaveImage(fn.c_str(),image.m_Image); 
    255255                } 
    256256                ID++; 
     
    259259        m_Learn=false; 
    260260         
    261         vector<string> images=Glob("../data/benchmark/trek/control/*.jpg"); 
     261        /*vector<string> images=Glob(path+string("/control/*.jpg")); 
    262262        for(vector<string>::iterator ti=images.begin(); ti!=images.end(); ++ti) 
    263263        {        
     
    267267                string fn=*ti+"-out.png"; 
    268268                cvSaveImage(fn.c_str(),test.m_Image); 
    269         } 
    270  
    271         images=Glob("../data/benchmark/trek/test/*.jpg"); 
     269        }*/ 
     270 
     271        int imgw=1024; 
     272        int imgh=768; 
     273        Image out(imgw,imgh,8,3); 
     274        int across=13; 
     275        int down=13; 
     276        int w=imgw/across; 
     277        int h=imgh/down; 
     278 
     279        int i=0; 
     280        vector<string> images=Glob(path+string("/test/*.jpg")); 
    272281        for(vector<string>::iterator ti=images.begin(); ti!=images.end(); ++ti) 
    273282        {        
     
    275284                Image test(*ti);         
    276285                Update(test); 
    277                 string fn=*ti+"-out.png"; 
    278                 cvSaveImage(fn.c_str(),test.m_Image); 
    279         } 
    280 } 
     286                int x=i%across; 
     287                int y=i/across; 
     288                out.Blit(test.Scale(w,h),x*w,y*h); 
     289                cerr<<x*w<<" "<<y*h<<endl; 
     290                i++; 
     291        } 
     292         
     293        char fn[256]; 
     294        snprintf(fn,256,"%s/out.jpg",path.c_str()); 
     295        cvSaveImage(fn,out.m_Image); 
     296} 
  • foam/trunk/faceclassifier/src/App.h

    r96 r111  
    3636         
    3737private: 
    38         void Benchmark(); 
     38        void Benchmark(const string &test); 
    3939         
    4040        CvCapture* m_Capture; 
     
    5050        bool m_Learn;  
    5151        CvFont m_Font;  
     52        CvFont m_LargeFont;  
    5253         
    5354        IplImage *frame; 
  • foam/trunk/faceident/Makefile

    r94 r111  
    1111 
    1212# for the minute, go out and up to link to the vision lib 
    13 CCFLAGS = `pkg-config --cflags opencv` -ggdb -Wall -O3 -ffast-math -Wno-unused -DTIXML_USE_STL  
    14 LDFLAGS =  
    15 LIBS    = `pkg-config --libs opencv` -lYARP_dev -lYARP_sig -lYARP_OS -lACE  
     13CCFLAGS = -I../vision/src `pkg-config --cflags opencv` -ggdb -Wall -O3 -ffast-math -Wno-unused -DTIXML_USE_STL  
     14LDFLAGS = -L../vision/ 
     15LIBS    = `pkg-config --libs opencv` -lYARP_dev -lYARP_sig -lYARP_OS -lACE -lvision  
    1616 
    1717CC = g++ 
  • foam/trunk/faceident/src/main.cpp

    r91 r111  
    3434#include "ImageUtils.h" 
    3535#include "SceneState.h" 
     36#include "Image.h" 
     37#include "FileTools.h" 
    3638 
    3739using namespace std; 
     
    7981int framenum=0; 
    8082 
     83map<int,string> m_DebugNames; 
     84 
    8185BufferedPort<Bottle> ctrlport;    
     86 
     87void Benchmark(const string &test); 
    8288 
    8389////////////////////////////////////////////////////////// 
     
    165171        if( capture ) 
    166172        { 
     173            Benchmark("yale"); 
     174 
     175         
     176         
    167177                for(;;) 
    168178                { 
     
    225235} 
    226236 
    227 void detect_and_draw( IplImage* img ) 
     237static CvScalar colors[] =  
    228238{ 
    229         static CvScalar colors[] =  
    230         { 
    231239                {{0,0,255}}, 
    232240                {{0,128,255}}, 
     
    237245                {{255,0,0}}, 
    238246                {{255,0,255}} 
    239         }; 
    240  
    241         IplImage *small_img; 
    242         int j; 
    243  
    244         small_img = cvCreateImage( cvSize( cvRound (img->width/scale), 
    245                 cvRound (img->height/scale)), 8, 3 ); 
    246         CvSize imgsize = cvGetSize(small_img); 
    247         cvResize( img, small_img, CV_INTER_LINEAR ); 
    248         cvClearMemStorage( storage ); 
     247}; 
     248 
     249 
     250 
     251void Update( Image &img ) 
     252{ 
     253 
     254        CvSize imgsize = cvGetSize(img.m_Image); 
    249255 
    250256        CvFont font; 
     
    257263        cvInitFont( &helpfont, CV_FONT_HERSHEY_PLAIN, 0.5, 0.5, 0, 1, CV_AA ); 
    258264 
     265        CvFont largefont; 
     266        cvInitFont( &largefont, CV_FONT_HERSHEY_PLAIN, 25, 25, 0, 10, CV_AA ); 
     267 
    259268        if( cascade ) 
    260269        { 
    261270                double t = (double)cvGetTickCount(); 
    262                 CvSeq* faces = cvHaarDetectObjects( small_img, cascade, storage, 
     271                CvSeq* faces = cvHaarDetectObjects( img.m_Image, cascade, storage, 
    263272                        1.1, 2, 0 
    264273                        //|CV_HAAR_FIND_BIGGEST_OBJECT 
     
    362371                                float confidence=0; 
    363372                                // get the face area as a sub image 
    364                                 IplImage *face = SubImage(small_img, *r); 
     373                                IplImage *face = SubImage(img.m_Image, *r); 
    365374                                // pass it into the face bank  
    366375                                if (learn) 
     
    381390                                { 
    382391                                        char s[32]; 
    383                                         sprintf(s,"%d %0.2f",ID,confidence); 
    384                                         cvPutText(small_img, s, cvPoint(r->x,r->y+r->height-5), &font, color); 
     392                                        sprintf(s,"%d",ID); 
     393                                        cvPutText(img.m_Image, s, cvPoint(r->x,r->y+r->height-5), &largefont, color); 
    385394                                        int x=(facebank.GetFaceWidth()+8)*ID; 
    386395                                        int y=imgsize.height-facebank.GetFaceHeight(); 
     
    388397                                        y-=5*imagenum; 
    389398                                         
    390                                         cvLine(small_img, cvPoint(r->x+r->width/2,r->y+r->height/2), 
     399                                        cvLine(img.m_Image, cvPoint(r->x+r->width/2,r->y+r->height/2), 
    391400                                                cvPoint(x+facebank.GetFaceWidth()/2,y+facebank.GetFaceHeight()/2), color); 
    392401 
    393                                         cvRectangle(small_img,cvPoint(x-1,y-1),cvPoint(x+facebank.GetFaceWidth(),y+facebank.GetFaceHeight()), color); 
     402                                        cvRectangle(img.m_Image,cvPoint(x-1,y-1),cvPoint(x+facebank.GetFaceWidth(),y+facebank.GetFaceHeight()), color); 
    394403 
    395404                                        if (imagenum>=0) 
    396405                                        { 
    397                                                 BlitImageAlpha(facebank.GetFaceMap()[ID]->m_ImageVec[imagenum],small_img,cvPoint(r->x,r->y),0.75); 
     406                                                BlitImageAlpha(facebank.GetFaceMap()[ID]->m_ImageVec[imagenum],img.m_Image,cvPoint(r->x,r->y),0.75); 
    398407                                        } 
    399408 
     
    404413                                } 
    405414 
    406                                 cvRectangle(small_img, cvPoint(r->x,r->y), cvPoint(r->x+r->width,r->y+r->height), color); 
     415                                cvRectangle(img.m_Image, cvPoint(r->x,r->y), cvPoint(r->x+r->width,r->y+r->height), color); 
    407416                        } 
    408417                } 
     
    429438                snprintf(info,256,"detecting faces"); 
    430439        } 
    431         cvPutText(small_img, info, cvPoint(20,30), &infofont, CV_RGB(0,0,0)); 
     440        cvPutText(img.m_Image, info, cvPoint(20,30), &infofont, CV_RGB(0,0,0)); 
    432441 
    433442        snprintf(info,256,"keys:"); 
    434         cvPutText(small_img, info, cvPoint(20,50), &helpfont, CV_RGB(0,0,0)); 
     443        cvPutText(img.m_Image, info, cvPoint(20,50), &helpfont, CV_RGB(0,0,0)); 
    435444        snprintf(info,256,"number key 0-9 : learn face"); 
    436         cvPutText(small_img, info, cvPoint(20,60), &helpfont, CV_RGB(0,0,0)); 
     445        cvPutText(img.m_Image, info, cvPoint(20,60), &helpfont, CV_RGB(0,0,0)); 
    437446        snprintf(info,256,"'d' : face detect mode"); 
    438         cvPutText(small_img, info, cvPoint(20,70), &helpfont, CV_RGB(0,0,0)); 
     447        cvPutText(img.m_Image, info, cvPoint(20,70), &helpfont, CV_RGB(0,0,0)); 
    439448        snprintf(info,256,"'c' : clear all faces"); 
    440         cvPutText(small_img, info, cvPoint(20,80), &helpfont, CV_RGB(0,0,0)); 
     449        cvPutText(img.m_Image, info, cvPoint(20,80), &helpfont, CV_RGB(0,0,0)); 
    441450 
    442451#ifdef SHOW_FACES 
     
    450459                { 
    451460                        //BlitImage(*im,small_img,cvPoint(x,y)); 
    452                         BlitImage(*im,small_img,cvPoint(x,y)); 
     461                        BlitImage(*im,img.m_Image,cvPoint(x,y)); 
    453462                        //y-=facebank.GetFaceHeight()+2; 
    454463                        y-=5; 
     
    456465        } 
    457466#endif 
    458  
    459  
    460         cvShowImage( "result", small_img ); 
     467} 
     468 
     469void detect_and_draw( IplImage* img ) 
     470{ 
     471        IplImage *small_img; 
     472        int j; 
     473 
     474        small_img = cvCreateImage( cvSize( cvRound (img->width/scale), 
     475                cvRound (img->height/scale)), 8, 3 ); 
     476        CvSize imgsize = cvGetSize(small_img); 
     477        cvResize( img, small_img, CV_INTER_LINEAR ); 
     478        cvClearMemStorage( storage ); 
     479         
     480        Image img2(small_img); 
     481        Update(img2); 
     482 
     483        cvShowImage( "result", img2.m_Image ); 
    461484        framenum++; 
    462485#ifdef SAVE_FRAMES 
     
    464487        sprintf(name,"out-%0.4d.jpg",framenum); 
    465488        cerr<<"saving "<<name<<endl; 
    466         cvSaveImage(name,small_img); 
     489        cvSaveImage(name,img2.m_Image); 
    467490#endif 
    468491 
    469492        cvReleaseImage( &small_img ); 
    470493} 
     494 
     495 
     496void Benchmark(const string &test) 
     497{ 
     498        cerr<<"Running benchmark test"<<endl; 
     499        string path(string("../data/benchmark/")+test); 
     500        vector<string> people=Glob(path+string("/training/*")); 
     501        int ID=0; 
     502        learn=true; 
     503         
     504        for(vector<string>::iterator pi=people.begin(); pi!=people.end(); ++pi) 
     505        { 
     506                m_DebugNames[ID]=pi->substr(pi->find_last_of("/")+1,pi->length()); 
     507                vector<string> images=Glob(*pi+"/*.jpg"); 
     508                cerr<<*pi<<endl; 
     509                for(vector<string>::iterator ii=images.begin(); ii!=images.end(); ++ii) 
     510                { 
     511                        cerr<<ID<<" "<<*ii<<endl; 
     512                        facenum=ID; 
     513                        Image image(*ii); 
     514                        Update(image); 
     515                        string fn=*ii+"-out.png"; 
     516                        cvSaveImage(fn.c_str(),image.m_Image); 
     517                } 
     518                ID++; 
     519        } 
     520         
     521        learn=false; 
     522         
     523        /*vector<string> images=Glob(path+string("/control/*.jpg")); 
     524        for(vector<string>::iterator ti=images.begin(); ti!=images.end(); ++ti) 
     525        {        
     526                cerr<<*ti<<endl; 
     527                Image test(*ti);         
     528                Update(test); 
     529                string fn=*ti+"-out.png"; 
     530                cvSaveImage(fn.c_str(),test.m_Image); 
     531        }*/ 
     532 
     533        int imgw=1024; 
     534        int imgh=768; 
     535        Image out(imgw,imgh,8,3); 
     536        int across=13; 
     537        int down=13; 
     538        int w=imgw/across; 
     539        int h=imgh/down; 
     540 
     541        int i=0; 
     542        vector<string> images=Glob(path+string("/test/*.jpg")); 
     543        for(vector<string>::iterator ti=images.begin(); ti!=images.end(); ++ti) 
     544        {        
     545                cerr<<*ti<<endl; 
     546                Image test(*ti);         
     547                Update(test); 
     548                int x=i%across; 
     549                int y=i/across; 
     550                out.Blit(test.Scale(w,h),x*w,y*h); 
     551                cerr<<x*w<<" "<<y*h<<endl; 
     552                i++; 
     553        } 
     554         
     555        char fn[256]; 
     556        snprintf(fn,256,"%s/out.jpg",path.c_str()); 
     557        cvSaveImage(fn,out.m_Image); 
     558} 
  • foam/trunk/vision/src/FileTools.cpp

    r99 r111  
    2929        { 
    3030                string path=g.gl_pathv[n]; 
    31                 ret.push_back(path); 
     31                if (path[path.find_last_of("/")+1]!='.') 
     32                { 
     33                        ret.push_back(path); 
     34                } 
    3235        } 
    3336        globfree (&g); 
Note: See TracChangeset for help on using the changeset viewer.