Skip to content

chenyfcitc/pcnn_simple

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mkdir build
cd build
cmake ..
make
  • Usage
    ./line_segmentation <path_to_your_image>

  • Parameters: You can adjust the following parameters in pcnn_simple.h

  - No of time steps = `PCNN_NO_OF_STEPS`   
   
    // Multiplier for the threshold at the current step.    
    double VT;
    
    // Synaptic weight - neighbours influence on linking compartment
    std::vector<double> W = {sqrt(1/2), 1.0, sqrt(1/2),
							 1.0, 1.0, 1.0, 
						     sqrt(1/2), 1.0, sqrt(1/2)};

    // Linking strength in the network.
    double B; (0.2 from paper)

    // step_value by which each oscillator's threshold is decreased if it 
    double step_value; 

For videos, you can uncomment the for loop in line_segmentation.cpp, but right now it is pretty slow.

(Adding the following stuff for easier collaboration and tracking)

Higher level Roadmap of things to be done (as of 25/10/15)

Development Log

  • Week 1
    • Late night 19/10/15 : Found pyclustering. Took out required files ccore and building on top of it.
    • Throughout the week : Getting familiar, adding support 2D weight matrices and rectangular images, methods to read output, executable for image/video line detection, minor contribution to pyclustering, mailing the author of pyclustering - who turned out to be pretty helpful and is already addressing issue #259, and of course adding and later removing my own bugs and getting confused here and there.
    • 25/10 : First part of paper is mostly done. PCNN needs tuning.
    • Results can be seen in `results/preliminary_Oct_25' directory. In the screenshots, "pcnn_result_n.png" is the image at time step n of the network. The "HSI image.png" has a misleading name. It's just a monochrome visualization of quantized intensities(in 64 lines, as written in paper) of the original image. The parameters can be seen from the commit from that day.

More ideas for power line detection / segmentation.

  • Stacked PCNN, in a ConvNet style architecture. This is a general idea for segmentation. Dunno about power lines.
    Here the convolution part is replaced by the PCNN equations. The output of the pixel is fed on to the next layer and so on.
    You could, in theory, tweak which temporal (or "serial") pulse should be passed on to the next network. Or you could just pass on everything as parallel channels.
    But then, you could also cherry pick wich time step for each layer should be chosen and passed on to the next.
    This whole thing is similar to (CRFs as RNNs) [http://www.robots.ox.ac.uk/~szheng/CRFasRNN.html]

Daniel's ideas(quoting):

Resources for CNN

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 99.2%
  • CMake 0.8%