Project Concept
Implement a convolutional neural network (CNN) that will be able to classify an input pattern (a 3×3 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
Neuron:
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
Will update the neighboring pixels based on the output from the computation
Init_Layer:
This is the middle Neuron, which will initialize, reset, and repair all of the other Neurons in the specific filter
This will also contain its own weight, and bias which will be summed into the total from the filter
FC_Neuron:
Neurons for the fully-connected layer, which will used fixed point multiplication to calculate its values.
There will be four layers of 12, which will each represent a pattern to be classified
FC_Init_Layer:
Label:
Weekly Logs
Week 7 Update:
Now understand the concept of CNN better through messing with tiny_dnn
Found “final” design for blocks of CNN
Will now work on communication between the blocks in the CNN
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 3×3 hand made images without padding. So they represent object as the pixel values can only be 0 or 1.
Researched into CNN structures and tested them in tiny_dnn with hand-made images of 9×9, 7×7, 5×5, 3×3, 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
Found some major problems in the weights I was using after testing every single possible input pattern
Forgot to put my week 10 update on week 10….
Week 11 Update:
Found better patterns and shapes to use together, am using a 2×2 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 2×2 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
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
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
Week 15 Update: