Side Project Ideas / Interest for the December - New Year's Break

(Jeremy Howard) #3

This is a great idea. I suspect a regular thread is best - more interactive.

For part 2 I assume that you’ve largely mastered the techniques from part 1, so you’ll definitely want to practice lots over the break to ensure you’re comfortable with what we’ve covered.

(Arjun Rajkumar) #4

Has the dates for Part2 been anounced? Got to clear up my calendar :slight_smile:

(Jeremy Howard) #5



Well… this is going to be weird…

I would like to build my very own version of the fastai library, though much, much, much simpler.

I see a lot of people on the forums doing really amazing things with the library itself (hello @anandsaha :slight_smile: ) or using the library to great success in Kaggle competitions. I guess I do not know Python that well (yesterday for instance was learning about iterators) and I also seem to have a thing for simplicity - I really, really like toy examples, etc.

I basically want to take what worked best for me in studying Ruby on Rails and apply it here. Rails is now a massive framework that is really hard to navigate but there is this cool book - Rebuilding Rails - that took me from being a super novice kind of person, allowed me to touch things and play around with them, and took me to having at least a somewhat decent understanding of how the major pieces fit together. I have spent my last two years working with rails and it was only this book that made a real difference in my understanding of things.

Personally, I am starting to see it as my limitation that I am that way, that I am having a hard time using high level, complex things. I still think I have come a long way in my thinking from where I was a year ago (thx to adamantly following advice from Jeremy and Rachel) - here I do think that this approach might be justified and is something I am actually excited to do! More so than getting a superb score on this or that kaggle competition, though I am hoping to come to that at some point :slight_smile:

Obviously, I would like to ask @jeremy if he is okay with my approach, if starting with a blank slate and moving things over as I need them would be okay with him. Ofc I have no aspirations of this ever being usable at all for anything and if I do keep it in my public github repo I will basically say that hey, go there to fastai, since this is me just messing around to learn stuff. I do also hope that at some point - through this activity - I will be finally able to make non-trivial contributions to fastai library. If I can come to the point where I understand what is going on in the code and can add functionality per Jeremy’s suggestion or based on me finding a need for something, that would be a dream come true.

Yesterday I started doing the thing Jeremy outlines in one of the ML1 lectures - start creating synthetic datasets and playing around with them and it was a great experience. I ended up fitting a sigmoid somehow to some weird two class dataset I created :slight_smile: I think this here is just taking the concept to next level.

Also, another concept I bring from my experience on becoming a self-taught rails dev, and in the words of the creator of rails -

read a lot of code, write a lot of code

When I open a jupyter notebook and I embark to do even simple things, I encounter a lot of friction and need to be looking up even simple stuff continually. I think that this exercise would finally allow me an opportunity to maybe reduce that a little bit by reading a lot of code and writing a lot of code :slight_smile:

@jeremy I do realize that this might be a bit unusual and would really love to hear what you think - above all wouldn’t want to do anything that you would find questionable or not in the spirit of how you envision learning or even use the fastai library in a way that you would not like it to be used.

(Jeremy Howard) #7

Sounds great! Ideally over the 2 parts of this course we’ll learn how to replicate every part of fastai, so this should be absolutely doable.


As quite a few of you showed interest in the project idea I shared, I thought I would give you an update on where I am with this :slight_smile:

Here is a link to a notebook demonstrating nearly all that the code I have written thus far can do.

What I got out of this project thus far:

  • Deep sense of appreciation for the fastai library. There are so many things happening there per line of code and a lot of the functionality is simply amazing!
  • Freezing batchnorm seems very powerful! If you have a small dataset, enabling this feels like cheating :slight_smile:
  • Learning PyTorch - PyTorch doesn’t hide anything so a project such as this is a great opportunity to explore what things it makes available and what they do and to get to know the framework a little bit!
  • Learning Python - I haven’t used Python extensively and have done very little OOP in general so this is a nice opportunity to learn.
  • Working on this is the most fun I’ve had programming in a very long time.
  • Working with the code has a nice, homely feeling! (probably since I either wrote or copied in all of the code there :wink: Normally I would be surrounded by code that someone else wrote so this is a nice change!)

Having said that, I’ve had mixed feelings while working on this. I think that I will continue to work on the project since it seems to work well with my level of experience and with my personality + I am learning a lot. Still, if you are capable of figuring out what fastai code does, you probably would be better off working with it directly instead of trying to build something on your own. I think I might be slowly getting to this level where I would be able to do that, but it is a bit of a catch 22 situation - had I not attempted this project I wouldn’t have the background to navigate fastai! I am speaking from experience as that is what I initially attempted but after several hours of no progress I looked for a different approach.

Also, what probably makes quite a big difference, is the fact that Jeremy began to explain lower level concepts in the lectures. I think had I waited till this week’s lecture, I might have actually had a significantly better chance of figuring out what fastai was doing (though this might be being optimistic and maybe there is no substitute for actually writing code to learn).

Overall, I do not think I can complain :slight_smile: Despite all, I am very happy that I set out to work on this!

What I will focus on to succeed in this course
(helena s) #9

great thread though i don’t have a NY’s break…
echoing Radek’s idea i’d love to build something even simpler, like middle school simpler - like Scratch/Snap but for the DL kind projects for kids/girls - thinking to start with deeplearn.js /p5.js - generative arts and crafts :slight_smile:

(Anup) #10

@jeremy When does part 2 start ? Also, how do international fellows apply for part 2 ? Do we need to send an email to Rachel again ?

(Maureen Metzger) #11

@helena, love your idea, I have a middle schooler and have thought a great goal would be to be able to explain all of this to her at a level she can understand. It’s mostly just addition and multiplication, so no problem, right? :wink:

I think most kids that age have no idea that half of what’s on their smartphones uses ML/AI of some sort – they LOVE their SnapChat filters but don’t make the connection that AI is how those dog ears and noses end up on the right part of their faces LOL If they knew that, I think a lot of them (girls included, maybe even moreso!) would be a lot more interested in coding!

(Sanyam Bhutani) #12

Apart from the Toy Project ideas that I would like to work on and the kaggle competitions that every one is participating in,
I had an idea similar to @radek : to create a ‘FastCV’ library. But on second thoughts, it should probably be called ‘SlowCV’.

The idea is to create tutorials for Computer Vision in a manner inspired from FAST AI(Inspired, not similar because similar would be insult to Fast AI ).

The motivation is that since my freshman year, I found it really difficult to find a suitable entry into Computer Vision practise since there are no good beginner entry ways into Computer Vision, and all the resources point you to the theory behind Image processing, even the courses at my college which would leave you with doing matrix multiplications on paper for Final Exams.

I have managed to gather a group of friends and start a Technical club, got my College folks interested in it as well.

The ideology we have come across so far is to discuss the basic concepts behind Image processing by creating walk through of the most common Projects in CV:

  • Lisence plate Recognition
  • Face Detection
  • ‘Face’ Filters
  • Object Search Engines
  • Image Tagging/Captioning.

(helena s) #13

totally! also having a tangible outcome is important - that’s why i think robotics/raspberry/arduino clubs are more prevalent than pure programming ones… speaking of the former the coolest hashtag i’ve learned today is #AIY - stands for AI Yourself! and the coolest kit/project to go with it: Google AIY Vision Kit - so ordering one for xmas :slight_smile:

(Jeremy Howard) #14

This is a great update! Sounds like a really valuable experience. I hope that through this you’ll feel like to can effectively contribute to the library as we learn more about it. :slight_smile:

(Nikhil B ) #16

The Side projects Thread is a great idea. The course has loads to offer for people from all initial conditions and learning rates!

I feel like there are a lot of directions I haven’t had time to explore yet, and each one can be a wild & fun journey. In order to maintain some structure and not get overwhelmed it might be good to identify one vector and work on it deeply (bad pun).

Strictly coursework : Practice and re-run all the FastAI lessons. Get very familiar with tools/ environment so that you are ready for 2nd course :wink:

Contributing to FastAI libraries Learn to use Github properly. Go through working code and identify what can be corrected /enhanced. Work with others to contribute to a live project.

Read/Implement ideas from latest papers There were a lot of papers discused so far in the course, spend time discussing about them/blogging/implementing parts of them.

Kaggle Competitions For the competitive ones among us! Get familiar common best practices to get SoTA results.

Use FastAI to solve your own problem See what can be improved in your life/at work using these techniques.

Other things that could be done over the long holidays:

  • Be more interactive here, on Twitter and other online ML forums;
  • Build your own Deep Learning Machine,
  • Meet FastAI Fellows in your local area.

(Jeremy Howard) #17

Especially early in the new year, when the MOOC comes out, there will be lots of new students wanting help…

(Heather Barnes) #18

Hello! I’m sorry but I didn’t see this thread before. Are you still looking for people to collaborate for project ideas?

(Tim Lee) #19


Currently, I’ve been working on trying to implement this paper on trees + NN. But ive been meaning also to build the movie lens example to practice embeddings. Do you have a particular interest?

(helena s) #21

my pet project is around applying DL technique to food/cooking: in particular multi-modal translation - at this stage, experimenting with CycleGAN using my food sketches and photos

(Sanyam Bhutani) #22

Looks interesting! :smiley:
Can you share a few resources to Cycle GANs that you found useful? (I haven’t gone through the Part2, just the Part 1v2. Is it better to go through Part 2 and then consider this topic?)

(helena s) #23

thank you! Next thing is to work on resolution - Jeremy talks low res -> hi res in part 2.
tbh i just skimmed part2 so far, but i tried CycleGAN for data augmentation and found it so fascinating that decided to apply it to my hobbies which are cooking and sketching :slight_smile:
the CycleGAN project page is quite comprehensive, and the PyTorch code worked like a charm…

(helena s) #24

more fun with cycleGAN - it’s so engrossing - keep starring at the screen mesmerized by the training process