Theimgclist 100DaysOfMLCode Save

This repository will be the journal for 100DaysOfMLCode pledge started by Siraj.

Project README

100DaysOfMLCode

The above tweet explains how this repo started. This will be the journal for 100DaysOfMLCode pledge. I will add the progress I make everyday and will publish the code at regular intervals once I make enough progress with some task/problem.

Day Task Updates
Day 1 Object Detection-Windows 10 * Set up the environment on Windows 10(no GPU) * Used TensorFlow and pre-trained SSDMobileNet * Compared results with Yolo object detection
Day 2 Object Detection-Ubuntu * Set up the environment on Ubuntu(no GPU) * Used TensorFlow and pre-trained FasterRCNN model * Compared SSDLite with FasterRCNN
Day 3 Real Time Object Detection * Installed opencv * Used TensorFlow and pre-trained SSDlite model * Tried object detection on live camera feed
Day 4 Object Detection using Google Colab * Setup Colab for object detection * Added comments and explanation for readability * Used same code and instructions as Linux * Added code to upload a new image for testing
Day 5 Create dataset for gun detection * Collected few hundred images of guns for retraining the model * Found a relevant dataset * Collected few more images from Internet * Found a handy tool for downloading images
Day 6 Write a blog * Attended Uber Maps Tech Talk * There were 2 talks * Maps is a very interesting area to work on * Wrote a detailed blog
Day 7 Annotate the dataset * Used LabelImage for annotating the images * Each image should be separately annotated * Attended Actions on Google event
Day 8 Model training * Made some required configuration changes for training * Faced few issues which I was able to resolve using GitHub Issues * Reducing the batch size fixed OOM error
Day 9 Continue model training * Started the training again today * Been more than 5 hours so far and the loss has come down to 1.2 * I used the saved checkpoint to try object detection, it didnt work * Training needs patience!
Day 10 More model training * Left the model to train since yesterday * It has been training close to 30 hours!! * The model gave bad results * Pre-trained models are handy and helpful. But it doesn't mean we can settle with a specific one!
Day 11 Finally some gun detection * Training is much faster on Colab * While each training step took 20-30secs on local CPU, on Colab it was 2-3 seconds * Initial loss with ssd model was close to 30 * Using faster rcnn, initial loss was 3
Day 12 Train using Faster RCNN * Collected more images from IMFDB * Used 250 images for training * Took 20mins for the loss to reduce to 0.4
Day 13 Set up Raspberry Pi * Recently got a Raspberry Pi 3 Model B+ * Setting up Raspberry Pi was easy * Installed Raspbian OS * VNC-Viewer is a handy tool for desktop sharing
Day 14 Object Detection on Raspberry Pi * Steps followed for Ubuntu helped a bit * Installed TensorFlow and skipped Protobuf * Used generated protobuf files from Ubuntu * Faced issues, Stack Overflow was helpful
Day 15 Real Time Object Detection on Raspberry Pi * Used OpenCV for connecting to the USB camera * There was some delay in the inference * Because number of frames per second was close to 0.8 * Using Pi camera instead of a USB camera might improve fps rate
Day 16 TensorFlow Model Zoo * TensorFlow Model Zoo is a repository of many pre-trained models * ssd_mobilenet_v1_ppn_coco is based on Pooling Pyramid Network architecture * PPN is a new variant of Single Shot Detector * This pre-trained model is more than 3x times smaller in size when compared to ssd_mobilenet
Day 17 Read about Face Processing * Shape of the face, Albedo and reflectance are three major components of face processing * Albedo map captures variations in skin pigmentation * In case of unconstrained environment, a lot of external factors are dynamic * In constrained environment, there will be some agreed upon standards
Day 18 DeepDream and Neural Network Interpretation * DeepDream is a program that takes an image as an input and gives another image as an output * Ouput images look dream-like/artistic/unclear/random * Understanding how each of the layers interpret and learn the patterns, will help in making the models better
Day 19 Research on Face Editing and Processing using Deep Learning * Deep Learning models can be used for face editing and processing * Series of effects need to be applied when regular editing tools are used * There are DL models which can perform some of those tasks quickly
Day 20 Semantic Image Segmentaion * Semantic Segmentation segments each object * Instead of a bounding box, colored segments represent the objects * Used DeepLab Model from TensorFlow
Day 21 Kaggle Ship Detection Challenge, Run Length Encode, Blender * Airbus started Ship Detection Challenge on Kaggle * Challenge is to detect ships from satellite images * Came to know what Run Length Encode is * Installed Blender
Day 22 Blender * Blender is open source and easy to use * Many resources to get started and a big community * BlenderGuru is a very useful resource
Day 23 Blender Fundamentals * Finished Blender Fundamentals Tutorial * Recommend using a mouse with middle button and a keyboard with Numpad * Extrude and Edge loops are cool!
Day 24 Understanding Physics in Face Reconstruction * Physically based rendering (PBR) refers to the concept of using realistic shading/lighting models * Shader is the algorithm for calculating the Color of each pixel * A texture is just a standard bitmap image that is applied over the mesh surface!
Day 25 SfSNet Architecture * Training is done using an encoder-decoder network * SfSnet is used for image decompostion and reconstruction * Network is more than 80 layers deep
Day 26 What are Normal Maps? * Normal maps add more details to object surfaces * Gives an illusion of depth/height on the surface * Help in figuring out the geometry/shape of the scene/object
Day 27 What are Albedo Maps? * Best to remove highlights/shadows from texture maps * Using albedo maps highlights, shadows and light patches are removed * This gives an even/homogeneous layer with only the color component
Day 28 Skin Reflectance and BRDF * Skin reflectance is a complex process * Depends on factors like skin color, blood flow beneath the skin etc * Reflectance too contributes to variable face appearances and face encoding
Day 29 Compact Pseudocode for SfSNet * SfSNet uses two separate networks * Encoder-Decoder Network is used for obtaining real face data components * SfSNet with residual blocks is used for image decomposition and reconstruction
Day 30 Encoder-Decoder and Autoencoder Networks * Encoder-Decoder networks are good at feature representation * Autoencoders are variants of Encoder-Decoder networks * Autoencoders help in dimensionality reduction and input denoising
Day 31 Read more papers * SfSNet was quite useful and it has references to many other useful papers * In Neural Face Editing paper, GANs are used for image decomposition * InverseFaceNet estimates facial shape, pose, expression, reflectance
Day 32 Installed Dlib and tried Netron * Dlib is a C++ toolkit for machine learning and other purposes * Tried installing on Windows, switched to Ubuntu * Netron helps in quickly visualizing a saved neural network model
Day 33 3D Face Reconstruction * PRNET directly constructs 3D model from a 2D image * It extracts the 63 facial landmarks * The 2d face mask is used for construction of 3D model
Day 34 L1 Norm, L2 Norm, Max Norm * Used for calculating vector magnitudes or as loss functions * L1 norm is least absolute error * L2 is least squares error
Day 35 Face Landmarks/Fiducial Points * Facial landmark detection is a key part of face extraction/recognition * Face landmarks are coordinates of key face features * Gives the outline of the face
Day 36 Face Detection * The first step in any face processing task * Used Dlib for face detection * Assists more sophisticated tasks like face recognition, emotion analysis, age detection
Day 37 Face Landmarks Detection * Key part of face extraction/recognition * Used Dlib and a trained model for landmark detection * Used OpenCV to plot the landmarks on face
Day 38 Face Extraction * Used 68 landmark points for face extraction * Used OpenCV's convexHull() for better face mapping * Used fillConvexPoly() to fill the extracted face
Day 39 Face Mask * Mask gives pixel based object detection * Used for object segmentation * OpenCV's im.show() and im.write() work on different range of values
Day 40 TensorFlow's Tfrecords * There are several ways to feed data into the model * Tfrecords is TensorFlow's recommended data format * Provides efficient input pipeline
Day 41 Continued Reading about TfRecords * Took several blogs to understand TfRecords * Data -> Features -> Examples * Examples -> TfRecords file
Day 42-45 Dlib Face Detection with different images * Face detection's failing with eye glasses * Failed for many random face images * Did reasonably well for CelebA dataset
Day 46 Move out images without Face Mask * Only images with face mask should be used for training * Moved out images without face mask * Modified face mask code
Day 47-54 Pseudocode to Code * Starting with pseudocode helped * Used a subset of data for training * Colab is a great help! * Able to reproduce results from paper
Day 55-57 FaceNet(Paper) * Given a face image, output its embedding * Embeddings are used for face verification, recognition, clustering * Uses Triplet Loss
Day 58-60 Face Normalization(Paper) * Biometrics are being used in phones, airports etc * There's a need for document images to follow specification * Document proofs with proper face images help in efficient identity authentication * ICAO provides useful specifications
Day 61-63 Dlib Alternatives * Dlib is a useful toolkit * It's used for face detection, landmark extraction etc * Its fast face detection algorithm isn't accurate enough(comparatively) * Using multi task cascaded CNN is a good alternative
Day 64 FaceID white paper * FaceID is the tech behind iPhone X's face verification * Uses Deep Learning for face detection and recognitions * Uses gaze detection to detect user's attention * False rate of 1 in 1000000
Day 65-67 TensorFlow Roadshow * Full day community event * Had many informative sessions * Interacted with TensorFlow and Google Brain team * Published a Blog
Day 68-70 InOut - 2Day Hackathon * Participated in 2-Day hackathon * Built a web app for check-in and check-out * Applied Deep Learening model for face verification * Had a wonderful time
Day 71-77 Identity Management using Deep Learning * Transformed webapp from hackathon into Identity Management application * Register new user * Verify user against registered users and show user details * More features to be added * Demo
Day 78-79 Fast.ai Lecture 1(on-going course) AMP Roadshow * Attended fast.ai lecture1 live stream * Taking fast.ai is refreshing * Fast.ai forum is the best * Attended AMP Roadshow * AMP is for making web faster and friendlier
Day 80-87 Fast.ai Lecture 2 InOut Blog * Published blog on InOut hackathon * Fast.ai Lecture 2 * So many interesting projects from students * Got extra $500 GCP credits * Crestle.ai provides Jupyter notebook with GPU backend for free
Day 88-100 Fast.ai Live Classes Self Driving Car Nanodegree Scholarhip * Continued Fast.ai ongoing classes * Received Udacity and KPIT SDC Scholarship * The Great Robot Race is an interesting documentary * Finished Project 1 - Finding Lanes * Learning has become more accessible, interesting and fun!!

Now that I have successfully finished #100DaysOfMLCode challenge, the biggest takeaway from all the learning, practice and projects I have done so far would be the fact that there is so much more to learn, practice and try out!!

Learning has never been more easily accessible than it is now. Thanks to the universities, researchers, teachers and the wonderful community which make the emerging technologies and knowledge, available to anyone who is willing to learn.

Many, many and many more days of learning, practicing and trying fun and interesting projects ahead!!

Thank you Siraj Raval! 😄 😄

Open Source Agenda is not affiliated with "Theimgclist 100DaysOfMLCode" Project. README Source: theimgclist/100DaysOfMLCode

Open Source Agenda Badge

Open Source Agenda Rating