I have been developing backend applications for the last few years.
After reading Hackers & Painters
I was captivated by the Lisp, to this day still am. And under the influence of Paul and Hacker News,
I picked up Clojure, a Lisp on JVM.
Not only because Lisp is an elegant, beautiful language, it is also one of the few languages that involved in the creation of the Artificial Intelligence.
Alas, I never had the chance to use Lisp or other languages to build intelligent applications professionally.
To me, advent of machine learning is like the discovery/invention of the calculus in math/engineering, or to put simply, it is Fourier transformation on steroids.
Natura non facit saltus(nature does not make jumps). Everything in real life is continuous. If traditional programming is meant to process discrete/selective data part, machine learning is here for the continuous part.
I did my fair share of experimentation of machine learning with various hobby projects, now I would like to transition into a machine learning expert within 6 months
Machine learning is a interdisciplinary subject. To understand the itsy-bitsy details of the modern machine learning algorithms, it might take a good grasp of Linear Algebra, Statistics, Probability theory, Information theory, Calculus and perhaps some Physics. An academic or bottom up approach has a long feedback loop. A longer feedback loop increases the risk of burning out, thus I will spend my time equally on building an end to end system and learning the basics.
Here is my plan, I will create the Morning app(web app), which focuses on apparel detection at first stage. I do not have any novel ideas at the moment, which I believe will come to me along the way . :) I will document my journey of creating this app by series of blogs.
I did some amount of research and here is the basic architecture I've came up with.
┌──────────┐ ┌─────────────────┐
◈────┤ Web ├───◈ ▣─────────────────┤ Backend ├─────────────────────▣
└──────────┘ └─────────────────┘
┌───────────────────┐ ┌───────────────┐ ┌───────────┐ ┌───────────────────┐
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │ │ Object │ │ │
│WebRTC Live Stream ├─────────▶│ Web Server │────▶│ Detection │──▶│ Apparel Detection │
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
└───────────────────┘ └───────────────┘ └───────────┘ └───────────────────┘
▲ │
│ │
└────────────────────────────────────────────────────────────────────┘
Project will be open source, and I might use WebRTC, Python, TensorFlow, Keras, and OpenCV for this project.
Object detection is a hard problem to tackle, so I will use the Object Detection model within official TensorFlow repo for now. The rest, I will build them from scratch.
There are a lot of computer vision datasets are available in the wild,
to name a few MNIST, CIFAR-10, CIFAR-100, ImageNet, Google Open Images, Youtube-8M ...etc
And every journey starts from hello world
, so is mine. I will start from MNIST, then will up the ante gradually till I can't afford GPUs.
Here are the resources I've been working on.
There are a lot to learn and I will use Anki to assist my learning process.
Anki
Papers to Explore:
- Object detection https://ai.googleblog.com/2017/06/supercharge-your-computer-vision-models.html
- DeepFashion https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Liu_DeepFashion_Powering_Robust_CVPR_2016_paper.pdf
- DeepFashion2 https://arxiv.org/pdf/1901.07973.pdf
Courses
- Deep Learning Specialization https://www.coursera.org/specializations/deep-learning?action=enroll&utm_campaign=WebsiteCoursesDLSTopButton&utm_medium=institutions&utm_source=deeplearningai
- Introduction to Deep Learning http://introtodeeplearning.com/index.html
- TensorFlow in Practice https://www.deeplearning.ai/tensorflow-in-practice
- Neural Networks https://www.youtube.com/watch?v=SGZ6BttHMPw&list=PL6Xpj9I5qXYEcOhn7TqghAJ6NAPrNmUBH
- MIT Deep Learning https://www.youtube.com/watch?v=O5xeyoRL95U&list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf
TensorFlow
- TensorFlow Tips 1 https://www.youtube.com/watch?v=K9ypGzuP6xQ&list=PLQY2H8rRoyvxso6rsvcDeMzekGuLxbTEB
- TensorFlow Tips 2 https://www.youtube.com/watch?v=inN8seMm7UI&list=PLQY2H8rRoyvyK5aEDAI3wUUqC_F0oEroL
- Coding TensorFlow https://www.youtube.com/watch?v=KNAWp2S3w94&list=PLQY2H8rRoyvwLbzbnKJ59NkZvQAW9wLbx&index=3
- Inside TensorFlow https://www.youtube.com/watch?v=IzKXEbpT9Lg&list=PLQY2H8rRoyvzIuB8rZXs7pfyjiSUs8Vza
- TensorFlow Extended https://www.youtube.com/watch?v=drYM04t57tU&list=PLQY2H8rRoyvxR15n04JiW0ezF5HQRs_8F
WebRTC
TensorFlow Object Detection API
Python
- https://pythonprogramming.net/introduction-intermediate-python-tutorial/
- https://pythonprogramming.net/matplotlib-intro-tutorial/
- https://pythonprogramming.net/introduction-python3-pandas-data-analysis/
- https://pythonprogramming.net/introduction-deep-learning-python-tensorflow-keras/
Kaggle
- https://google.qwiklabs.com/quests/25?utm_source=gcp&utm_medium=website
- https://google.qwiklabs.com/catalog?keywords=machine+learning&page=2&per_page=50
Math
Linear Algebra
https://www.youtube.com/watch?v=fNk_zzaMoSs&list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_abCalculus
https://www.youtube.com/watch?v=WUvTyaaNkzM&list=PLZHQObOWTQDMsr9K-rj53DwVRMYO3t5YrDifferential Equations
https://www.youtube.com/watch?v=p_di4Zn4wz4&list=PLZHQObOWTQDNPOjrT6KVlfJuKtYTftqH6Mutivariable Calculus
https://www.youtube.com/watch?v=TrcCbdWwCBc&list=PLSQl0a2vh4HC5feHa6Rc5c0wbRTx56nF7
Blogs