2014年3月30日星期日

The research function

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
This (matlab pseudo) function describes the correct routine to do a decent computer vision research, based on my 1.5 years PhD study. Could be very wrong or a very narrow perspective. But hope it helps.

Input : 
         Dataset : The dataset you employ to evaluate your proposed method or model (Never propose any problem without a concrete dataset, then you don't know if your proposal is valid or not.  So if you haven't got a dataset for your research, do make one before you start anything.).
         Problem : The research problem you propose to study, including several POINTS you propose to address.
         D2PMapping : Abbreviation for dataset to problem point mapping. Find out the dataset examples or  visualizations that exactly describe your proposed points. (This is VERY important, as if you make a point but don't find out a dataset support, then you are building a room in the sky which would very probably turn out to be a waste of  time.)

 Output : 
          Paper : Everybody knows.

 Author : panly099@gmail.com
 Version : 1.0 31/03/2014 Everything started.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function Paper = research( Dataset, Problem, D2PMapping )
% Rule of the thumb : Everything must be based on solid evidences. More specifically, your Problem needs existing papers to support, and it also needs Dataset examples to support its each and every point. 

%% 1. Problem validation

       % 1.1 Make very sure that your Problem has not being studied, is essentially novel, is not the variation of existing problems which can be solved by employing existing solutions. The method to achieve this is to read a LOT relevant and better to be recent and good-quality papers.

       % 1.2 Make very sure that your Problem is a concrete and focused problem. Normally it should be a very specific step/ a bundle of specific steps in a framework. The more it is focused, the more valuable it would be.

       % 1.3 Convince yourself first that your Problem  is a useful one that can benefit broadly, a challenging one that needs loads of efforts, and definitely a novel one again.

        Check (Problem) ;
        
       % 1.4 Make very sure that all the points you proposed in your problem are really existing problems, i.e., you can find out dataset examples/middle results to show that it exists, not just a WORD!  People like to raise concepts without spending any time to see if this concept has data supporting, which makes them being very wrong at the very first step.

        Check (Dataset, D2PMapping);

%% 2. Model proposal 
        
        %2.1 Propose a model/method that addresses all the points in the Problem and it should be inspired by the existing Dataset and D2PMapping. DON'T ever just make it out by random thoughts or concepts crossed in your mind. Borrowing existing technology is necessary, but you have to add something brand new into that model to be your contribution. 

        Model = makeModel(Dataset, Problem, D2PMapping);

%% 3. Thorough supportive analyses

        % 3.1 Evaluate your model thoroughly by tuning all the parameters in broad ranges. Evaluate each and every part of your model to show that they are useful. Visualize as  many aspects of your model as possible. Quantitative results are mandatory.

     [Plots, Figures, Tables] = Evaluate(Model, Dataset, Problem, D2PMapping);
   
%% 4. Write paper
     Paper = makePaper(Problem, Model, Dataset, Plots, Figures, Tables);
end