top of page

Common-sense Image Recognition

I have been fascinated by computer science and programming for a long time, especially with lower-level systems.

 

My area of scientific interest is computer science, specifically deep learning artificial intelligence. For my project, I plan to test the efficiency of common-sense machine learning in the application of image recognition. From reading relevant literature, I have come to understand that common-sense AI is a new development over the last year and proves to be both cheaper in terms of computing resources and more efficient in terms of time to train each model. I want to use this technique in the field of image recognition because it seems like a novel way to utilize this approach that has not yet been done publicly.


I still need to learn a great deal in order to attempt this project. I plan to take the Practical Deep Learning for Coders course offered by fast.ai. In order to accomplish this, I will try to finish one of their lessons a week. Following this schedule, I should be done in around 7 weeks.

Progress Update: 1/20/19

I finished the first FastAI lesson and now have a much better idea of how the rest of my project is going to be accomplished. I’m going to keep completing one lesson a week. I also did some experimenting on my own with different small test datasets following the guidelines of the first lesson. My confidence in this project is growing the more I learn, so I do think I will be able to make a sizeable amount of progress on it during the year and a half I have left. That’s all for this week; I should have more to say next week after I finish a more sizeable lesson.

Progress Update: 1/26/19

I’m completing the second FastAI lesson as this goes out, so I’m staying on track to finish the course on time. It was hard to find the time this week to do it earlier, but at least I’m doing it now. I also revised my project proposal based on the new knowledge I’ve gained. I really don’t have anything else to say just because my weekly goals are so simple: just to finish one lesson.

Progress Update: 2/2/19

I've continued to stay on track to finish this course on time. I'll do the third lesson tomorrow. I also came up with a few alternative areas I could expand into if my current project doesn't pan out, like generative adversarial networks. I'm also going to need to decide eventually whether I'm going to stick with PyTorch and the FastAI library, go to pure PyTorch, or Tensorflow. I shouldn't need to decide this soon.

Progress Update: 2/9/19

I didn't end up having time to do the 3rd FastAI lesson last weekend. I have to run a 25 minute class during MARC, and that's taken up all of my time so I never actually get to work on my project. My computer's also semi-broken, so I won't be able to work on it until I get that fixed. I need to get that fixed before I can do my class, because I'm planning to demonstrate running a simple convolutional neural network. Hopefully in a week or so once this project is over I'll be able to start working on my actual project again but I'm worried I'll have forgotten a lot of details from the course by then.

Progress Update: 2/18/19

I finished my lesson plan for my class on neural networks and deep learning. Deciding on what to teach and how to do it made me realize how much I've already learned and how well I actually understand my research area even though I often don't feel like it. I was planning to run a test neural network in class, but recent updates to the FastAI library combined with some technical problems of my own didn't give me enough time to get that sorted out. I actually think my presentation will be stronger without it, because I'll have more time to explain the things that actually matter rather than just showing a blank terminal window with 1 or 2 print statements. I'm feeling fairly confidant for my presentation tomorrow and I hope I'm able to explain everything as well as I think I can. I know it will probably be a little confusing in the beginning, but I've planned for that. I won't try to go into too much depth, because I do not have enough time. I plan to go over the Universal Approximation Theorem to explain a bit of the practicality of neural networks and deep learning in particular. Then I'll probably just go into gradient descent and its applications. I think that should be enough depth on the theoretical/low level ideas of neural networks, and I know I can explain it well. Instead of the test neural network, I'm going to have everyone build a dataset together of whatever they want, and then I'll build the neural network at home. In the future, I might show it quick in class.

Progress Update: 2/24/19

Everything went pretty much according to plan. The only problem was that I noticed halfway through that I forgot to make a specific slide going over my project in particular and how it addressed the problems I was describing. I know my lesson was probably pretty hard to understand, but I think everyone walked out of it with a basic understanding of what I was trying to describe. I think that's about all I could hope for because of how difficult it is to explain to someone with no base knowledge in the subject.

Progress Update: 3/10/19

Now that my lesson's over, the next step is just to keep working on the FastAI course. With 4 lessons left, I should be able to finish it before Spring Break. I don't know if I'm going to watch all of them, because not all of the subjects pertain to my project, but I probably will. I'm also still figuring out the FastAI 1.0 library. I finally got my first original CNN to work today in class which was pretty exciting. I was able to get an accuracy of 98.6% with only a single epoch of training which was surprising. My next step with that test is to use changing learning rates. I think I'm in a good place to start work on my actual main project after Spring Break.

Progress Update: 3/17/19

For my final project this year I've decided to build the first step of my final project: an object detection model. Right now, I'm planning to implement the Faster-RCNN model in PyTorch with the FastAI library, and I think this will work fairly well.

​

I also decided to start over with the FastAI course and take the 2019 version. I already like it much better than the 2018 version, because they improved on almost everything about it. I already understand things that I had trouble understanding before the 2019 course. For these reasons, I think this was the right choice. My plan is to try to do 2 or 3 lessons a week while still practicing on my own. I think this is definitely achievable. With this time-frame, I'll be done with the course by Spring Break, so then I can start to focus more on the specifics of object detection. I still need to decide what kind of objects I want to be able to detect.

Progress Update: 3/23/19

This week, I spent most of my energy building a CNN for CIFAR-100. I was able to get to an accuracy of 50% with relatively low loss on both my training and validation sets. I was fairly proud of this result, because of how I was able to go from my initial model with a 10% accuracy all the way up to 50%. I could not get a higher accuracy with more epochs or a changed learning rate without overfitting. I was able to substantially increase my accuracy by training the lower layers at a lower learning rate. With time, and more experience from the later FastAI lessons, I hope to be able to return and improve on my current model in the future.

Progress Update: 3/30/19

Over Spring Break, I have two main objectives. One, to finish the FastAI 2019 course once and for all. I've set up a specific schedule to get this done that I plan to stick to. Two, I want to read up more on Faster-RCNN and specific implementations in PyTorch. If I have time, I want to begin writing my own implementation. That's all there is to say for now, I'll just have to see how well I can stick to my plan.

bottom of page