project_people:josh_donckels
This is an old revision of the document!
Table of Contents
Project Idea
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.
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, pooling, normalization, and fully-connection
- Will update the neighboring pixels based on the output from the computation
- Pixel
- Holds the gray-scale value for 7 pixels, then has space for a couple more bits for flags in the future
- Router
- Will hold routing information based on which way for a packet to go based on where it is going
- Path
- Will help with guiding the packets to the specified Neuron cluster
- Packet
- Will hold information about 7 pixels, and will follow the path and routers to its destination to deliver the information
Goals
- Main Goal: Run a simple MNIST example with smaller training set of 0's, of image size 18×18(?)
- 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
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.
- These 3×3 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 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.
project_people/josh_donckels.1508768826.txt.gz · Last modified: 2017/10/23 14:27 by jdonckels