Skip to main content

Day 5 (7/12/19): Convolutional Neural Networks in Pytorch

I started off today by reading a few papers written on topics related to my project of combining open set recognition with incremental learning. I understand the goals and challenges associated with creating a CNN with these capabilities but am not yet sure exactly how I will implement them concretely in a model to experiment with.

The rest of the morning I spent going through Andrew Ng's course on Convolutional Neural Networks. I feel like I learned a lot regarding how convolutions work, how to control padding and stride, and understanding the structure of notable case studies such as the LeNet-5, AlexNet, VGGNet, and ResNet. These open-source networks are helpful places to start when I implement my own CNNs because they have already chosen decent hyperparameters which could then be fine-tuned to fit a specific problem.

Visualization of VGG-19 vs. Plain Network vs. Residual Network structure


Around noon, the other interns and I listened to a seminar given by David Messinger on how hyper spectral imaging can be used to learn about artifacts like the Gough Map of Great Britain. It was a very interesting talk and was well worth it to attend (the free pizza was an added plus).

After lunch, I wrote my problem statement / part of my abstract for the openset incremental learning project I will begin soon. Here is the link to that draft paper:
Incremental Open Set Recognition: Exploring Novel Input Detection in Incremental Learning Models

Finally, I spent the rest of the day playing around with creating and training CNNs with the Pytorch module. I made a small network with a few convolutions and pooling layers which eventually fed into three fully connected layers. Using a Cross Entropy Loss Function and Stochastic Gradient Descent during training to optimize the weighted parameters, here were the model's results testing on the CIFAR-10 dataset:

Accuracy of the network on the 10000 test images: 58 %
Accuracy of plane : 67 %
Accuracy of   car : 82 %
Accuracy of  bird : 45 %
Accuracy of   cat : 29 %
Accuracy of  deer : 56 %
Accuracy of   dog : 55 %
Accuracy of  frog : 66 %
Accuracy of horse : 58 %
Accuracy of  ship : 75 %
Accuracy of truck : 47 %


Four sample CIFAR-10 images of model's predicted labels vs. ground truth labels
GroundTruth:    cat  ship  ship  plane
Predicted:    cat  ship  ship  ship

This network is clearly not ideal for classifying these images (at only 58% accuracy overall), but I am excited to start exploring transfer learning and practice implementing pre-trained effective networks next week.

Comments

Popular posts from this blog

Day 29 (8/15/19): Final Day Before Presentations

Most of today was also spent practicing and editing my presentation to make it as professional as I can. I'm really looking forward to the opportunity to present my work to faculty and friends tomorrow. Here is a link to the slides for my final presentation: Novelty Detection in Streaming Learning using Neural Networks

Day 28 (7/14/19): Presentation Dry Run

In the morning, all of us interns got the chance to practice our presentations in front of each other in the auditorium. I was pretty happy with how mine went overall but the experience was definitely valuable in identifying typos or slight adjustments that should be made. Throughout the rest of the day, I tried to implement these changes and clean up a few plots that I want to include for Friday.

Day 9 (7/18/19): Incrementally Learning CUB200

Today I continued my work learning about incremental learning models by testing out different strategies on the CUB200 dataset. From what I understand from reading various articles, there seem to be five different approaches to mitigating catastrophic forgetting in lifelong learning models. These are regularization methods (adding constraints to a network's weights), ensemble methods (train multiple classifiers and combine them), rehearsal methods (mix old data with data from the current session), dual-memory methods (based off the human brain, includes a fast learner and a slow learner), and sparse-coding methods (reducing the interference with previously learned representations).  All of these methods have their constraints and I don't believe it is yet clear what method (or what combination of different methods) is best. Full rehearsal obviously seems to be the most effective at making the model remember what it had previously learned but given that all training exam...