User Tools

Site Tools


project_people:josh_donckels

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
project_people:josh_donckels [2017/10/09 23:49] jdonckelsproject_people:josh_donckels [2017/12/10 20:01] (current) jdonckels
Line 1: Line 1:
-===== Project Idea ===== +===== Project Concept ===== 
-Implement a convolutional neural network (CNN) that will be able to classify an input image.  It will use the layers based around a very basic CNN including: convolution layer, pooling layer, rectifier layer, and a fully-connected layer.  This will have to start off static in the MFM, as passing data would be very difficult otherwise.  This will require five elements that I will go into detail further down this page. +Implement a convolutional neural network (CNN) that will be able to classify an input pattern (a 3x3 window on the MFM).  It will use the layers based around a very basic CNN including: convolution layer and a fully-connected layer.  This will have to start off static in the MFM, as passing data would be very difficult otherwise.  This will require five elements that I will go into detail further down this page. 
  
 ===== Elements ===== ===== Elements =====
   * Neuron:   * Neuron:
     * Will contain the weights from the pre-trained network that it will be using to classify the image     * Will contain the weights from the pre-trained network that it will be using to classify the image
-    * Deal with all of the computations for the convolution, pooling, normalization, and fully-connection+    * Deal with all of the computations for the convolution
     * Will update the neighboring pixels based on the output from the computation     * Will update the neighboring pixels based on the output from the computation
-  * Pixel +  * Init_Layer: 
-    * Holds the gray-scale value for 7 pixelsthen has space for a couple more bits for flags in the future +    * This is the middle Neuronwhich will initialize, reset, and repair all of the other Neurons in the specific filter 
-  * Router +    * This will also contain its own weight, and bias which will be summed into the total from the filter 
-    * Will hold routing information based on which way for a packet to go based on where it is going +  * FC_Neuron: 
-  * Path +    * Neurons for the fully-connected layer, which will used fixed point multiplication to calculate its values.  
-    * Will help with guiding the packets to the specified Neuron cluster +    * There will be four layers of 12, which will each represent pattern to be classified 
-  * Packet  +  * FC_Init_Layer: 
-    * Will hold information about 7 pixelsand will follow the path and routers to its destination to deliver the information+    * Will initialize, reset, and repair the FC_Neurons in each layer 
 +  * Label: 
 +    * Will be used to classify the network once it is completemeaning the FC_Layer_Twelve will create this once the the classification values are complete
  
-===== Goals ====== 
-   * Main Goal: Run a simple MNIST example with smaller training set of 0's, of image size 18x18(?) 
-     * First Step: Get a layout that will work for the CNN (X) 
-     * Second Step: Get 7 packets sent from one cluster of pixels to another cluster of pixels ( ) 
-     * Third Step: Get pixel packets from all other clusters of pixels to one Neuron cluster, then run that specific convolution layer over all pixels from the image  ( ) 
-     * Fourth Step: Get the above goal to work with all clusters of Neurons ( ) 
-     * Fifth Step: Implement the pooling step ( ) 
-     * Sixth Step: Set-up the rectifier layer ( ) 
-     * Seventh Step: Create the fully-connected outcome ( ) 
-     * Eight Step: Classify the image  ( ) 
  
 ===== Weekly Logs ===== ===== Weekly Logs =====
Line 35: Line 27:
    * Also will work on fixing a size for the CNN based around a smallish image     * Also will work on fixing a size for the CNN based around a smallish image 
  
 +Week 8 Update:
 +   * Updated project page to more clearly state what my projects is and my goals
 +   * Messed around with trying to get my own images as inputs for tiny_dnn
 +   * Researched how small my input images could be for a CNN
 +
 +Week 9 Update:
 +   *Created Demo video for progress on project
 +   *New Title: Object Classification in the Movable Feast Machine
 +   *Scaled back project a lot to 3x3 hand made images without padding. So they represent object as the pixel values can only be 0 or 1.  
 +     * These 3x3 images can contain a dot (1) or a 2-length line (0).  
 +     * I get a 80% successful classification rate in tiny_dnn with the new CNN structure and these input images 
 +   *Researched into CNN structures and tested them in tiny_dnn with hand-made images of 9x9, 7x7, 5x5, 3x3, with padding and without 
 +   *New CNN structure is a 12 layer Convolution layer, that goes into a Fully_connected layer that takes in 12 input and outputs 2 results.
 +   *Implemented working convolution layer in MFM, which takes pixels from a image element and will calculate the output from this layer
 +   *Created shell for Fully-Connected layer for MFM, contains weights and biases, but nothing else yet.  
 +   *Scratched communication concept, as I can place all layer in a sort of column fashion, so there is no need for this
 +
 +Week 10 Update:
 +   *Implemented the fully connected layer
 +   *Compared values with weights and results from each layer with the tiny-dnn output, they compared well
 +     * The results weren't exact, but I found a bug where the values were changing barely based on certain Neurons exceeding their stages and skipping certain steps
 +   * Found some major problems in the weights I was using after testing every single possible input pattern
 +     * Will find better weights in week 11
 +   * Forgot to put my week 10 update on week 10....
 +
 +Week 11 Update:
 +   *Found better patterns and shapes to use together, am using a 2x2 box and a horizontal 2 length line
 +     * Will look into adding more objects that can still be successfully classified
 +     * Implemented these weights and biases into the project, and it classifies 8/10 possible patterns (6 from the horizontal 2 length line, and 4 from the 2x2 box)
 +   * Does not pull the image (pixels) from a element anymore, now can be hand drawn by the user
 +   * Tested hitting the network with "radiation", and it failed horribly every time
 +   * Working towards getting a reset to work
 +     * The neurons in the convolution already had their weights stored separately from their output values, whil the fully connected layer did not
 +       * I have successfully separated the weights and the output values for the fully-connected layer, and it works perfectly  
 +   * Added a reset element, as when the Neurons see it, they will reset the network
 +   * Created a presentation for this project
 +
 +Week 12 Update:
 +   *Fixed bug with fully_connected layer when the simulation was going too fast for it to correctly pass the weights
 +   *Created scripts to get data from modifying parameters for training in tiny_dnn and then will compare the results to what I get from my pre-trained model
 +   *Added different objects, so It can classify up to 5 now, with a much worse percentage...
 +   *Wrote the abstract for this project
 +
 +Week 13 Update:
 +   *Added more rotations and shifts of each shape, and this increased the classification rates for every number of classification patterns
 +     * Can no only classify 4, but way better percentages up by about 20-30% from the previous version
 +   * Also found a problem with the version I was using in tiny-dnn, but was able to fix it.  Was having to do with the rescaling of the outputs
 +   * Created more plots with the improved numbers and places them in my paper
 +   * Added a lot more to my paper including introduction, methods, some results, and some sort of conclusion/discussion
 +   * Corrected my abstract
 +   * Fixed my CNN in the MFM to be more robust, where when a big chunk is removed it will repair itself, and then when a reset is used it can be re-run
 +
 +Week 14 Update:
 +   *Found a few bugs in the repairing and was able to improve it
 +   *Redesigned fully-connected layer, to where it can classify four different patterns at any rotation
 +     * Box, two-length line, L shape, and a three-length line, I get a global max of 77.5% class rate
 +     * Went back to three as I was running into problems and I get consistent 85% classification rate
 +   * Improved paper, still need more plots for results and an improved discussion
 +     * Finished Paper!
 +   
 +Week 15 Update: 
 +   *Improved slides, and practiced presenting.  
 +   *Finished everything and turned it in.
 +
 +
 +  
  
project_people/josh_donckels.1507592990.txt.gz · Last modified: 2017/10/09 23:49 by jdonckels