Jekyll2022-05-14T19:08:57+00:00https://theimgclist.github.io//feed.xmlAvinash KappaBusy with Machine LearningAvinash KappaPre-trained Models are Helpful. But!2019-06-14T00:00:00+00:002019-06-14T00:00:00+00:00https://theimgclist.github.io//RethinkingPretraining<p align="center"><img src="\assets\images\pretraining.jpeg" /></p>
<p align="center"></p>
<blockquote>
<p><strong>From the Abstract</strong>: We report competitive results on object detection and instance segmentation on the COCO dataset using standard models trained from random initialization.The results are no worse than their ImageNet pre-training counterparts, with the sole exception of increasing the number of training iterations so the randomly initialized models may converge. Training from random initialization is surprisingly robust; our results hold even when: (i) using only 10% of the training data, (ii) for deeper and wider models, and (iii) for multiple tasks and metrics.</p>
</blockquote>
<h2>Transfer Learning — Pre-train & Fine-tune Paradigm</h2>
<p>Deep learning has seen a lot of progress in recent years. It’s hard to think of an industry that doesn’t use deep learning. The availability of large amounts of data along with increased computation resources have fueled this progress. There have been many well known and novel methods responsible for the growth of deep learning.</p>
<p>One of those is transfer learning, which is the method of using the representations/information learned by one trained model for another model that needs to be trained on different data and for a similar/different task. Transfer learning uses pre-trained models (i.e. models already trained on some larger benchmark datasets like ImageNet).</p>
<p>Training a neural network can take anywhere from minutes to months, depending on the data and the target task. Until a few years ago, due to computational constraints, this was possible only for research institutes and tech organizations.</p>
<p>But with pre-trained models readily available (along with a few other factors), that scenario has changed. Using transfer learning, we can now build deep learning applications that solve vision-related tasks much quicker.</p>
<p>With recent developments in the past year, transfer learning is now possible for language-related tasks as well. All of this proves that Andrew Ng was right about what he said few years ago — that transfer learning will be the next driver of commercial ML success.</p>
<h2>Different modes of training</h2>
<p align="center"><img src="\assets\images\trainingstrategy.jpeg" /></p>
<p align="center"><a href="https://towardsdatascience.com/transfer-learning-from-pre-trained-models-f2393f124751">Pic Credits</a></p>
<p>In the blog <a href="https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html">Building powerful image classification models using very little data</a>, Francois Chollet walks through the process of training a model with limited data. He starts with training a model from scratch for 50 epochs and gets an accuracy of 80% on dogs vs cats classification. Using the bottleneck features of a pre-trained model, the accuracy jumps to 90% using the same data. As a last step, on fine-tuning the top layers of the network, an accuracy of 94% is reported.</p>
<p>As is evident here, using transfer learning and pre-trained models can boost accuracy without taking much time to converge, as compared to a model trained from scratch. Does this mean the pre-train and fine-tune paradigm is a clear winner against training from scratch?</p>
<p>The above image helps visualize a few possibilities when training a model. The image on the right represents a model in which the convolution base of a trained model is frozen and the bottleneck features obtained from it are used to retrain the further layers. This is a typical scenario with pre-trained models. The image in the middle represents a model where, except for the few initial layers, the rest of the network is trained. And the final model on the left represents training a model from scratch—that’s the method we’ll be looking into in this blog.</p>
<p>In the pre-train and fine-tune paradigm, model training starts with some learned weights that come from a pre-trained model. This has become more standard, especially when it comes to vision-related tasks like object detection and image segmentation.</p>
<p>Models that are pre-trained on ImageNet are good at detecting high-level features like edges, patterns, etc. These models understand certain feature representations, which can be reused. This helps in quicker convergence and is used in state-of-the-art approaches to tasks like object detection, segmentation, and activity recognition. But how good are these representations?</p>
<h2>Feature Representations and Random Initialization</h2>
<p>Feature representations learned by pre-trained models are domain dependent. They learn from the benchmark dataset they’re trained on. Can we achieve universal feature representations by building much larger datasets? Some work is already done in this area, where datasets which are almost 3000 times the size of ImageNet are annotated.</p>
<p>However, the improvements on target tasks scale poorly with the size of the datasets used for pre-training. It shows that simply building much larger datasets doesn’t always lead to better results on the target tasks. The other alternative is to train a model from scratch with random weight initialization.</p>
<p>To train a model from scratch, all the parameters or weights in the network are randomly initialized. The experiments carried out in the paper Rethinking ImageNet Pre-training use Mask R-CNN as the baseline. This baseline model was trained on the COCO dataset both with and without pre-training, and the results were compared.</p>
<p>The results obtained prove that by training the model for a sufficient number of iterations and by using appropriate techniques, the model trained from scratch also gives comparative and close results to that of the fine-tuned model.</p>
<h2>Related Work</h2>
<p>If you’re used to working with pre-trained models, training from scratch might sound time- and resource-consuming. To interrogate this assumption, we can look at prior research done on training models from scratch instead of using pre-trained models.</p>
<p>DetNet and CornerNet use specialized model architectures to accommodate training models from scratch. But there was no evidence that these special architectures have given any comparative results to that of the pre-train & fine-tune paradigm.</p>
<p>In this work, the authors considered using existing baseline architectures with a couple of changes. One is to train the model for more iterations, and the other is to use batch normalization alternatives like group normalization and synchronized batch normalization. With this the authors were able to produce results that were close to that of the fine-tune approach.</p>
<h2>Normalization and Convergence Comparison</h2>
<p>If models are trained from scratch without proper normalization, it can produce misleading results, which might mean that training from scratch is not optimal at all.</p>
<p>For vision-related tasks, training data consists of images of high resolution. This means the batch size has to be adjusted accordingly to meet the memory constraints. Batch normalization works well with bigger batch sizes. The bigger the batch size, the better. But with high resolution images and memory constraints, model training has to limit its batch size to a smaller number. This leads to bad results with BN.</p>
<p>To avoid this, group normalization and synchronized batch normalization are used. Group normalization is independent of the batch size. Synchronized BN uses multiple devices. This increases the effective batch size and avoids small batches, which enables training models from scratch.</p>
<p>The fine-tuned models get kind of a head start, as the pre-trained model has already learned high-level features. That means the models trained from scratch cannot converge as fast as the fine-tuned models. Though this makes fine-tuned models better, one should also consider the time and resources it takes to pre-train a model on large benchmark datasets like ImageNet. Over a million images are trained for many iterations during ImageNet pre-training. So for the random initialized training to catch up, the model needs many training iterations.</p>
<p align="center"><img src="\assets\images\instances.jpeg" /></p>
<p>The image here summarizes the number of training samples seen in both cases—with and without pre-training. Depending on the target task, the samples can be images, instances, or pixels. For a segmentation task, the model works at the pixel level. For object detection what matters is the instances of objects in each image. We see that except in segmentation (pixel-level task), training from scratch takes a substantially lower number of training images.</p>
<h2>Experimental Settings and Results</h2>
<p>Here are the experiment settings—the architecture and hyperparameters used. The experiments use Mask R-CNN with ResNet and ResNext architectures as the baseline. GN or SyncBN are used for normalization. The model is trained with an initial learning rate of 0.02, and it’s reduced by 10 times in the last 60k and 20k iterations respectively. The training data is flipped horizontally and there is no test time augmentation for the baseline model. A total of 8 GPUs were used for training.</p>
<p align="center"><img src="\assets\images\experiments.jpeg" /></p>
<p>By training a model with these settings on the COCO dataset with 118K training and 5k validation samples, the model trained from scratch was able to catch up in accuracy with that of a pre-trained model.</p>
<p>In this case, object detection and image segmentation are the two target tasks. Average precision for bounding boxes and masks are the metrics. As we can see in the plot above, the one on the left was trained with ResNet 101 and GN, whereas the one on right shows results for Mask RCNN with ResNet50 and SyncBN.</p>
<p>We see that when fine tuning, pre-training gives the model a head start, as we see the AP starts with a value close to 20. Whereas when training from scratch, the model starts with an AP value of close to 5. But the important thing to note is that, the model trained from scratch goes on to give close results. These spikes here indicate the results of applying different schedules and learning rates, all merged into the same plot.</p>
<h2>Enhanced Baselines</h2>
<p>The authors also tried making enhancements to their baseline model. Better results were reported by adding scale augmentation during training. Similarly, using Cascade RCNN and test time augmentation also improved the results.</p>
<p><strong>We see that with train and test time augmentation, models trained from scratch give better results than the pre-trained models.</strong> These plots show the results with enhanced baseline models.</p>
<p align="center"><img src="\assets\images\enhanced.jpeg" /></p>
<h2>Experiments with Less Data</h2>
<p>The final experiment was to try different amounts of training data. While the first interesting finding from this work is that we can get comparable results even with models trained from scratch, the other surprising discovery is that even when there’s less data, training from scratch can still yield close results to that of the fine tuned models.</p>
<p>When working with only 1/3rd of the whole COCO training data, i.e. close to 35K images, experiments show that the fine-tune approach starts overfitting after some iterations. That shows that ImageNet pre-training doesn’t automatically help reduce overfitting. But despite less data, training from scratch still catches up with fine-tuned results.</p>
<p>When only one-tenth of training data (close to 10k images) is used for training, a similar trend is noticed. We can see in the image on left—with the pre-train & fine-tune approach, the model starts to overfit after some iterations.</p>
<p>We see in the plots on the middle and right that training from scratch gives pretty close results to that of the fine-tuned models. What if we try with much less data? Like using one hundredth of the entire training data? When only 1k images are used, training from scratch still converges rather slowly. But it produces worse results. While the pre-trained models give AP of 9.9, the approach in consideration gives only 3.5. This is a sign that the model has overfitted due to a lack of data.</p>
<p align="center"><img src="\assets\images\lessdata.jpeg" /></p>
<h2>Summary</h2>
<ul>
<li>Training from scratch on target tasks is possible without architectural changes or specialized networks.</li>
<li>Training from scratch requires more iterations to sufficiently converge.</li>
<li>Training from scratch can be no worse than its ImageNet pre-training counterparts under many circumstances, down to as few as 10k COCO images.</li>
<li>ImageNet pre-training speeds up convergence on the target task but does not necessarily help reduce overfitting unless we enter a very small data regime.</li>
<li>ImageNet pre-training helps less if the target task is more sensitive to localization than classification.</li>
<li>Pre-training can help with learning universal representations, but we should be careful when evaluating the pre-trained features.</li>
</ul>
<h2>Conclusion</h2>
<p>The paper doesn’t claim that the pre-train and fine-tune approach is not recommended in anyway. But the experiments included have shown that for some scenarios, training a model from scratch gave slightly better results than the fine-tune/pre-train approach. What this means is that if computation is not a constraint, then for certain scenarios and configuration settings, the model trained from scratch gives better results than the fine-tuned ones.</p>
<p>This is an interesting study, especially because the pre-train and fine-tune paradigm is being used more as a standard procedure. And considering where deep learning is being applied—including use cases for automobiles, health, retail, etc., where even slight improvements in accuracy can make huge differences— it’s essential for research to not only aim for novel and innovative methods, but also to study existing methods in more detail. This could lead to better insights and new discoveries.</p>
<blockquote>
<p>Did you find this post useful? Head over <a href="https://heartbeat.fritz.ai/pre-trained-machine-learning-models-vs-models-trained-from-scratch-63e079ed648f">here</a> and feel free to post your comments/feedback. Thanks for reading 😄 😄</p>
</blockquote>
<blockquote>
<p>Thanks to <a href="https://heartbeat.fritz.ai/">HeartBeat</a> for publishing this blog!</p>
</blockquote>Avinash KappaLooking Inside the Neural Network Black Box2019-06-05T00:00:00+00:002019-06-05T00:00:00+00:00https://theimgclist.github.io//ModelInterpretability<p align="center"><img src="\assets\images\modelviz.jpg" /></p>
<p align="center"></p>
<p><strong>Introduction: What is Deep Learning?</strong><br />
There has been tremendous development and progress over the past few years in how some technologies have impacted and blended into our human lives. Deep learning has been at the forefront of such technologies and has found applications in many industries — retail, health, automobiles, finance, and transportation to name a few.</p>
<p>Deep learning uses <a href="https://heartbeat.fritz.ai/from-y-x-to-building-a-complete-artificial-neural-network-327da18894af">artificial neural networks</a> to learn representations and patterns in provided data and comes up with task-specific outputs. The cabs we take to reach the office, the algorithms that sort out our emails, the <a href="https://heartbeat.fritz.ai/recommendation-systems-models-and-evaluation-84944a84fb8e">recommendation engines</a> behind apps like YouTube, Netflix, Amazon, and many more applications like these are powered by deep learning.</p>
<p>Given enough data, deep learning models learn from the examples provided and automatically extract patterns that exist in the data, which in turn helps in performing various tasks.</p>
<p>Some of these tasks include <a href="https://www.fritz.ai/features/object-detection.html">object detection</a>, <a href="https://www.fritz.ai/features/image-labeling.html">image classification</a>, language understanding, speech recognition, and more. The amount of data available has grown exponentially in the past decade. That along with high computational capabilities have fueled the application and growth of deep learning.</p>
<p>The artificial neural networks used in deep learning are inspired by human biological brains. The way we perceive things around us starts with taking inputs from sensory organs, which get passed through layers of neurons. Deep learning models have a similar layered structure in which learning happens incrementally, with each layer building on top of the layer before it.</p>
<p align="center"><img src="\assets\images\mlp.jpg" /></p>
<p align="center"><a href="http://neuralnetworksanddeeplearning.com/">Pic Credits</a></p>
<p><strong>Deep Learning vs Standard Algorithms</strong><br />
In a nutshell, deep learning models take some input, use their layers to process the input information, and provide task-specific outputs.</p>
<p>But isn’t that what the traditional algorithms do as well? On a very high level, these models, are like any algorithms we use to automate a task. The main difference between the two is how they internally process the data and operate on it.</p>
<p>Here we have an example of a binary search algorithm. It takes in a list of numbers and a query item. It has hand-coded logic that works on the data and returns whether the query item is present in the list. As we can see, every part of the algorithm is interpretable and we can easily understand what the algorithm does:</p>
<p align="center"><img src="\assets\images\traditionalalgo.jpg" /></p>
<p align="center"><a href="http://interactivepython.org/runestone/static/pythonds/SortSearch/TheBinarySearch.html">Pic Credits</a></p>
<p>Lets take another example. Given data like the speed at which a person is moving, an algorithm might have to recognize the person’s activity. For a few possible outcomes like recognizing whether the person is walking, running, or cycling, the rule-driven approach works perfectly.</p>
<p>But what if we have another activity like playing golf? How can the same algorithm recognize this new activity? More rules? Perhaps, but it’s not hard to see the problem or flaw in this approach. More complicated tasks ask for more and more rules. Deriving these rules manually can be time consuming, error prone, inefficient, and (most importantly) it makes the algorithm less generic. It is also practically impossible to manually derive rules for more complicated tasks.</p>
<p align="center"><img src="\assets\images\activityrecognition.jpg" /></p>
<p align="center"><a href="https://www.coursera.org/learn/introduction-tensorflow/lecture/PoOzi/a-primer-in-machine-learning">Pic Credits</a></p>
<p>The image below helps in summarizing all of these key differences. While traditional algorithms take data along with hand-coded rules to produce the output, ML models take samples of the data along with the correct answers. They then use this to understand the patterns in the data to automatically derive the rules.</p>
<p><strong>Model Interpretability and Visualization</strong><br />
So how do neural networks manage to find patterns in data? How do they learn from existing data, and what do the inner layers of these artificial neural networks look like? All of this is studied under fields referred to as model interpretability and visualization, which are currently very active areas of research.</p>
<p align="center"><img src="\assets\images\traditionalvsml.jpg" /></p>
<p align="center"><a href="https://www.coursera.org/learn/introduction-tensorflow/lecture/PoOzi/a-primer-in-machine-learning">Pic Credits</a></p>
<p>To get an overview of what model interpretability is and why it’s critical, let’s take an example problem. The first thing we need to solve any problem is data. For this example, we’ll use the dataset called Food-101, which has 101,000 images in total, with 101 types of food.</p>
<p>Each type of food has 1000 example images—750 of them for training and 250 for testing. It’s a normal procedure in machine learning to split data we have into training and test sets so that we can train our model on training data and use the test data for evaluating a model’s performance.</p>
<p>We’ll be doing the same for this example, in which we’ll build and train a model for multi-class food classification. What does it exactly do? Well, we’re basically going to extend upon the famous hotdog/not hotdog example from HBO’s Silicon Valley and make it work on 101 types of food instead of just one!</p>
<iframe width="700" height="393" src="https://www.youtube.com/embed/pqTntG1RXSY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
<p><br /></p>
<p><strong>Training Our Model</strong><br />
The entire code for Food-101 Multi-class Food Classification is published here as a Kaggle Kernel. Once extracted, the dataset contains a folder with 101 sub directories. Each sub directory contains images of a specific food class.</p>
<p align="center"><img src="\assets\images\food101.jpg" /></p>
<p align="center"><a href="https://www.vision.ee.ethz.ch/datasets_extra/food-101/">Pic Credits</a></p>
<p>Using train.txt and test.txt, which contains the file names that belong to train and test data respectively, I split the data into train and test folders using the helper method prepare_data(). At the end of this step, we’ll have a train folder with 75,750 images, and a test folder with 25250 images.</p>
<p>Working with the whole dataset would require a lot of training hours. Since I was using Google Colab for model training, I decided to go with a subset of data. To start with, I chose 3 food classes — apple pie, pizza, and omelette—to run my experiments and train the model. The idea is to extend this to more classes (11 classes) once the model is performing well.</p>
<p>We now have train_data and test_data with only 3 classes of food for model training. Instead of building and training a model from scratch, I used the Inception V3 pre-trained model as this helps in faster training. After training the model for 30 epochs, we see a validation accuracy of 95%.</p>
<p>Below are the plots showing accuracy and loss when the model is trained on the aforementioned 3 classes of data. As a next step, I repeated the training by extending the data to 11 classes and the results were similar. When I tried to train the model on the whole dataset, it took 50–55mins per epoch on Colab.</p>
<p>Though I didn’t run the model for enough epochs on the whole dataset, the model would give more or less the same kind of performance when trained on whole data. This may not be the case for all datasets, though. In this case, the ImageNet dataset on which the pre-trained model is trained on already has classes of data that are similar to that of Food-101. Hence the pre-trained model was providing good results.</p>
<p align="center"><img src="\assets\images\food101loss.jpg" /></p>
<p align="center"></p>
<p><strong>How Neural Networks Learn</strong><br />
Now that we have a model that’s giving us 95% accuracy, does that mean we are good to go ahead and deploy the trained model into production? This could have been the case if we were dealing with standard algorithms.</p>
<p>But with neural networks, it’s not enough that the model is giving expected and correct results. It’s also necessary and critical to know how it’s doing it. To understand this better, let’s put aside our food classifier for a moment and think about other applications where deep learning is used. For example, self-driving cars, cancer detection, face recognition, etc.</p>
<p>In all these scenarios, it’s critical to make sure that the neural networks are learning the right features/patterns. This isn’t only useful in improving the model performance, but more importantly, it’s critical to know the “why” and “how” as deep learning gets adapted to industries like healthcare, autonomous vehicles, the legal system etc.</p>
<p>This is where model interpretability and visualization come into play in better understanding neural networks’ outputs.</p>
<p>Neural networks learn incrementally. The first layer looks for edges and gradients. The second layer builds on top of it and looks for curves and simple patterns. We can see below how the visual interpretability is lost as we go deeper into the neural network. That’s because the deeper layers, instead of looking for edges and curves, try to find class-specific and abstract features.</p>
<p>To better understand this, think about how we would hand-sketch a dog or a cat on a piece of paper. In order to draw the ear, snout, or tail of a dog, we’d need to first start with lines. We’d then put those lines together with curves and other patterns to show more abstract features. Similarly, neural networks learn to recognize/learn features in this way.</p>
<p align="center"><img src="\assets\images\layerviz.jpg" /></p>
<p align="center"><a href="https://arxiv.org/abs/1311.2901">Pic Credits</a></p>
<p><strong>Visualizing Our Model</strong><br />
Let’s now return to the model we trained to visualize the inner layer activations. The first layer in Inception V3 is a convolution layer with 32 filters (conv2d in the below image). The input given is an image of an apple pie.</p>
<p>Each cell in the grid of images below is an activation. An activation is the output obtained after a filter is applied on the input from the previous layer. While all of the activations are visibly interpretable as apple pie in the first conv2d layer, we can see some sparse activations in the third layer (activation). As we go deeper into the neural network, we’ll have more of these sparse activations.</p>
<p align="center"><img src="\assets\images\activations.jpg" /></p>
<p align="center"></p>
<p>Activation map visualization helps us understand how the input is transformed from one layer to another as it goes through several operations. We can also generate heat maps using gradients to find out which regions in the input images were instrumental in determining the output class. As we see in the below two images, the class activation maps are different for different input images. This helps us understand what a neural network looks for in an image to classify it as an apple pie or a pizza.</p>
<p align="center"><img src="\assets\images\heatmap.jpg" /></p>
<p align="center"></p>
<p><strong>Conclusion</strong><br />
Using these methods along with several others, we can get a glimpse of a neural network’s black box and its inner layers. We can use these techniques to verify whether the model is learning the right features for classifying images correctly. When there’s bias in data, the model might fail to classify or learn the right features.</p>
<p>While performance metrics like accuracy and loss can give us an indication of bias in data, model interpretability can provide further evidence of what’s going wrong with the data.</p>
<p>With deep learning becoming ubiquitous, it’s critical to understand what’s going on inside neural networks. There’s still a lot of progress to be made in this direction, and I hope this blog gave you a quick overview of what model interpretability is.</p>
<p><strong>References</strong><br />
<a href="https://www.amazon.com/Deep-Learning-Python-Francois-Chollet/dp/1617294438">Deep Learning with Python by Francois Cholett</a> — a must read!</p>
<p><a href="https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html">Building Powerful Image Classification Models</a></p>
<p><a href="https://blog.keras.io/how-convolutional-neural-networks-see-the-world.html">How Convolutional Neural Networks See the World</a></p>
<p><a href="https://distill.pub/2018/building-blocks/">The Building Blocks of Interpretability</a></p>
<p><a href="https://distill.pub/2017/feature-visualization/">Feature Visualization</a></p>
<blockquote>
<p>Did you find this post useful? Head over <a href="https://heartbeat.fritz.ai/model-interpretability-and-visualization-looking-inside-the-neural-network-black-box-79f45f2cb771">here</a> and give it a clap(or two 😉 ). Thanks for reading 😄 😄</p>
</blockquote>
<blockquote>
<p>Thanks to <a href="https://heartbeat.fritz.ai/model-interpretability-and-visualization-looking-inside-the-neural-network-black-box-79f45f2cb771">HeartBeat</a> for publishing this blog!</p>
</blockquote>Avinash KappaUdacity KPIT Scholarship Program2019-01-28T00:00:00+00:002019-01-28T00:00:00+00:00https://theimgclist.github.io//UdacitySDC<p align="center"><img src="\assets\images\sdccomplete.jpg" /></p>
<p align="center"></p>
<p>Udacity offers several scholarship programs in partnership with leading technology companies like Google, Facebook, KPIT. I got a chance to apply for one of their recent scholarship programs — Udacity KPIT Autonomous Tech Scholarship. As part of this program, the scholars who get accepted will have access to Udacity’s Self Driving Car Nanodegree Term1 course. After 2 weeks of waiting, I got the confirmation mail that I have been accepted to the scholarship program! This was a big opportunity as the scholarship program not only gives access to a very interesting course from Udacity but also gives the chance to interview for KPIT.</p>
<p align="center"><img src="\assets\images\sdcrecipient.jpg" /></p>
<p align="center"></p>
<p>Since this was a scholarship program which was given to a few hundred applicants out of thousands who applied, the accepted scholars need to meet some course requirements. While the regular nanodegree students get 3 months to finish Term1 of the course, we as scholars get 2 months to finish the course with strict deadlines for projects completion. If you are a college going student or have a full time job, this can make your schedule super busy. But still, you don’t want to lose the opportunity when it comes knocking on your doors right? “If a window of opportunity appears, don’t pull down the shade.” — these are not my words but Tom Peters’.</p>
<p>Until a few years ago, news or discussions about self driving cars or autonomous vehicles were not often heard about. That has now changed drastically, with laws being made and several states from some countries already allowing testing of self driving cars(even without a safety driver). Automobiles has been one of those industries which took a leap forward with the help of recent technology advancements. Whether or not you own/ride an SDC in the near future, it is informative to know its building blocks and understand different technologies that are involved. Through several lessons and 5 projects, the course gave us enough to know a lot about all that.</p>
<iframe width="700" height="393" src="https://www.youtube.com/embed/_UfCR2PkKkE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
<p><br /></p>
<p>The distinguishing feature of an autonomous vehicle is its ability to see and know the world around it with the help of cameras and sensors. This enables the vehicle to capture large amounts of real world data. The data is then processed and used for perception and decision making. All of this makes Computer Vision a key component for aiding the self driving cars and vehicles. For example, self driving cars depend on lane detection to navigate and drive.</p>
<p>Fully automated vehicle replaces the human driver with an empty seat. For that, we need an autonomous system which can mimic human driver besides other things. This is where Behavioral Cloning comes in. Using the data collected from a car driven by a human, a neural network can be trained to learn to mimic the human’s driving. Though this is doable, the trained model will be as good as the kind of scenarios it possibly comes across from the training data. But don’t we have access to tons of data? Yes, we do. The problem with applying Deep Learning is that more often than not the data collected will not capture all real time scenarios. For example, to avoid crashes and accidents, the model needs to be fed such scenarios from the data. For reasons like these, researchers feel there is still time for Machine Learning to completely take over the rule-based systems when it comes to autonomous vehicles.</p>
<iframe width="700" height="393" src="https://www.youtube.com/embed/jwXaEO528JE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
<p><br /></p>
<p>Though I did take some Udacity courses before, this scholarship program besides helping me a lot in knowing more about how self driving cars work, gave me an opportunity to be part of a learning community and to get feedback for my work and projects. I have to thank the course instructors David Silver, Ryan Keenan etc and Udacity Support Team who were available on Slack for any help we needed. Thanks to all my project reviewers who kindly acknowledged my request to share any references to improve my projects by providing many useful resources and comments. Thanks to KPIT for sponsoring this program which already benefited hundreds of students and learners. It’s amazing how accessible it is to learn new and upcoming technologies from the best researchers in the field and from the best organizations. A big thanks to Udacity and Udacity India for having courses and scholarship programs which bring together students, job seekers and leading companies.</p>
<p>Terramax, Darkhorse, Highlander, Sandstorm, Stanley and few others were all ready for a race. The path was not a smooth racing track and the racers were driven by code! Curious to know who won? Watch The Great Robot Race. Thanks to Sebastian Thrun for all his courses and contributions!</p>
<iframe width="700" height="393" src="https://www.youtube.com/embed/vCRrXQRvC_I" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code><br/>
</code></pre></div></div>
<blockquote>
<p>Did you find this post useful? Head over <a href="https://medium.com/@theimgclist/udacity-kpit-scholarship-program-5f0efeeead50">here</a> and give it a clap(or two 😉 ). Thanks for reading 😄 😄</p>
</blockquote>Avinash KappaInOut — Learnings From 2-Day Hackathon2018-11-06T00:00:00+00:002018-11-06T00:00:00+00:00https://theimgclist.github.io//InOut<p align="center"><img src="\assets\images\inout.jpeg" /></p>
<p align="center"><a href="https://twitter.com/tweet_prateekj/status/1051469753049632768">Pic Credit</a></p>
<p>There are frequent tech events that keep happening in Bangalore, sometimes more than one good event on the same day. Google’s DevFest Bangalore was scheduled to happen on 13th October and on the same day there was InOut too. And I had to choose which one to attend as I had the confirmation to attend both. Thanks to my friend who said, “You should attend InOut, it’s really good” that I spent 2 days of the weekend, along with many other enthusiastic developers and makers, teaming up with someone who I didn’t know before, building a web app for face recognition, having conversations and discussions all day and night. InOut is a community hackathon which has been happening for the past few years. This year it had more than 4000 applications from different countries across the world and I’m glad I made it to this hackathon as I had some great takeaways.</p>
<p>Hackathon started on Saturday morning(it had some tech talks in the evening of the day before) and I could see excited faces all around — thanks to InOut’s welcome bag of swags. While it is open for everybody, most of the participants were college going students and it was quite nice to see them come up with some very good and interesting ideas. Though the hackathon had some topics of interest like Blockchain, AI, IoT, Health etc, the participants were free to build and work on any idea they had. The starting hours of Saturday morning had mixed scenes. While some of the participants were in groups, discussing their ideas and approaches to build, some already started to work(or to code!).</p>
<p align="center"><img src="\assets\images\coders.jpeg" /></p>
<p align="center"><a href="https://twitter.com/aswanth9495/status/1051927987124285440">Pic Credit</a></p>
<p>Me and my teammate Utkarsh, who I didn’t know before attending the hackathon, had a discussion about some of the things we wanted to try and build. After about an hour, we finally settled with the idea to build a working model of an automated store that uses Face Recognition, Object Detection and Payment Automation using Deep Learning. While he took care of the UI part, I worked on the model building using TensorFlow for Face Detection and Recognition. Starting with the idea discussion and during many other conversations we had over the next 30 hours, we agreed and disagreed with each other on several things and all of this led to better decisions and improved code. This is what hackathons do, they provide the platform and environment to come up with ideas and get along with the team through discussions and agreements in the process of building the idea.</p>
<p>With each of us working on two different parts of the app, we had to integrate the changes from time to time. Version controlling is a must when collaborating. I made it a personal practice to initialize any folder/workspace that I work on as a Git repository so that even if I don’t want to push the code to any code repository, I can use it to keep track of changes. Many things can go wrong when working with code. The code that was perfectly working could break all of a sudden. You might spend time trying to fix something which isn’t the actual issue. For all these kinds of reasons whenever a feature/functionality works, do a commit so that you have a working state as a backup! This makes a lot of difference in situations where the app you are working on breaks an hour before you need to demo it(which happened to us)!</p>
<p align="center"><img src="\assets\images\inoutswags1.jpeg" /></p>
<p align="center"><a href="https://twitter.com/TheKaranAgrawal/status/1051613841002455040">Swags and Stickers</a></p>
<p>Around midnight Saturday, we had a community meetup with the hackathon organisers. I was one among the few people who attended it. While I thought it’s just a discussing session, I realized after a few minutes that it’s not. InOut which has now become one of the biggest Indian community hackathons had started as a college event a few years ago. The organisers who were also the founders of InOut shared their experiences of starting a college level event and then growing it into a hackathon as big as this. Most of the others who joined this discussion were college students, who are also organising college level tech events. They shared how difficult it is for them to organise a community event considering the costs involved and also the lack of proper support from the colleges. It’s true so many efforts go into organising a community event!</p>
<p>As we were trying to fix a code issue post-midnight, we thought it’s better to get some sleep. Before I went off to sleep, I wanted to give one more try and fix the issue. Code bugs are tricky. They keep telling you they can be fixed in not more than 5–10 mins and then you end up spending hours, fixing the bug and then feeling encouraged to keep working more. More or less the same thing happened to me. While I stayed awake all night, making the application better and functional, the night had its revenge the next day morning, when it made me walk around like a zombie! Throughout all this, time was just flying..</p>
<p align="center"><img src="\assets\images\inoutswags2.jpeg" /></p>
<p align="center"><a href="https://twitter.com/devfolioco/status/1051040809234128896">Pic Credit</a></p>
<p>The organisers made sure that the 2-days we spent at the venue weren’t just about coding. There was food from time to time, energy drinks, contests, swags and Nash Vail who took the stage for the whole hackathon and kept the environment lively. Towards the end of the hackathon, we verified how the automatic checkin and checkout app we built works with the help of fellow participants. And it worked quite well!! What about the winners? There were some very interesting submissions but the one that got the majority of votes from judges and the biggest applause from the participants was SAD which stands for Sadly Distributed. With the presence of computing devices all around us, the idle time of the devices can be utilised for distributed computation. SAD is built on this idea. Congratulations 👏 👏</p>
<p align="center"><img src="\assets\images\inoutwinner.jpeg" /></p>
<p align="center"><a href="https://twitter.com/hackinoutco/status/1053717393728589824">Pic Credit</a></p>
<p>Hackathons enable us to come up with ideas and provide an environment that reinforces and pushes us to deliver. A big thanks to InOut for organising such a wonderful event!!</p>
<blockquote>
<p>TL;DR:</p>
<p>Hackathons are a great opportunity to transform your ideas into solutions</p>
<p>Register, form a team, brainstorm ideas and start coding(see it’s simple)</p>
<p>Saving code isn’t enough. Commit the code, commit, commit!!!</p>
<p>You don’t have to be a geek/ninja/hacker to participate in hackathons 👍</p>
<p>Step into a hackathon like this one and you will come out with code(doesn’t matter whether it works or not 😉), new friends and a great experience 👏 👏</p>
<p>And swags as well 👌</p>
</blockquote>
<p>Below is the demo of how the web app that we built during the hackathon looks as of now. I kept working on it and transformed it into an Identity Management system that registers an identity by taking the demographic details along with face and uses Deep Learning model for face detection and verification. It’s still a work in progress with a lot more features to be added:</p>
<iframe width="700" height="393" src="https://www.youtube.com/embed/4_b7UZNCqJ8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
<blockquote>
<p>Did you find this post useful? Head over <a href="https://medium.com/@theimgclist/inout-learnings-from-2-day-hackathon-6d1196410298">here</a> and give it a clap(or two 😉 ). Thanks for reading 😄 😄</p>
</blockquote>Avinash KappaPic Credit There are frequent tech events that keep happening in Bangalore, sometimes more than one good event on the same day. Google’s DevFest Bangalore was scheduled to happen on 13th October and on the same day there was InOut too. And I had to choose which one to attend as I had the confirmation to attend both. Thanks to my friend who said, “You should attend InOut, it’s really good” that I spent 2 days of the weekend, along with many other enthusiastic developers and makers, teaming up with someone who I didn’t know before, building a web app for face recognition, having conversations and discussions all day and night. InOut is a community hackathon which has been happening for the past few years. This year it had more than 4000 applications from different countries across the world and I’m glad I made it to this hackathon as I had some great takeaways.A Day in TensorFlow Roadshow2018-10-08T00:00:00+00:002018-10-08T00:00:00+00:00https://theimgclist.github.io//TensorFlowRoadshow<p align="center"><img src="\assets\images\roadshow.jpg" /></p>
<p align="center"><a href="https://twitter.com/GoogleDevsIN">Pic Credit</a></p>
<p>After having started as an internal project developed by researchers from Google Brain team, TensorFlow has now become the most loved software library of 2018(Stack Overflow’s 2018 survey). Google has made TensorFlow open source in 2015 and ever since then, it has been continuously evolving and also growing in terms of community. This has been an encouraging factor both for Google to make it better and accessible to more researchers and also to the Machine Learning community to try the library and use it to build models that in turn has solved many crucial problems already. Paying attention to the community’s feedback has really helped TensorFlow and the TensorFlow team has been engaging with the community in several ways. Yesterday, the TensorFlow team had organised a roadshow for the Machine Learning community in Bangalore and it had wonderful sessions.</p>
<p>The roadshow had a full attendance and the developer community was welcomed and addressed by Karthik Padmanabhan, Developer Relations Lead, Google. Over the past few years, Machine Learning and more specifically Deep Learning have changed a lot of things about how technology impacts human lives. The progress in Deep Learning has led to rapid advancements in Computer Vision and NLP related tasks. With the help of all this progress, ML has made many things possible which previously were not even thought about. TensorFlow, as a library that helps in building Machine Learning solutions, is driving it forward by enabling the researchers to transform their problem-solving ideas into reality. Dushyantsinh Jadeja started the first session of the day emphasising on how inevitable ML has become in our lives and how TensorFlow has already helped in building some life-changing solutions.</p>
<p align="center"><img src="\assets\images\welcome.jpg?raw=true" /></p>
<p align="center"><a href="https://twitter.com/GoogleDevsIN">Pic Credit</a></p>
<p>TensorFlow is used to solve many problems like — in Astrology to detect new solar systems and planets, to avoid deforestation by using sensors for real-time detection and to automatically alert any illegal activities, to assess the quality of grain and better assist farmers and agriculture and most positive of all, in the medical field to come up and aid the doctors with better and quicker decisions. As a library that has the potential to solve problems like these, it is not surprising that TensorFlow has become one of the most used libraries for ML.</p>
<p>Sandeep Gupta, Project Manager of TensorFlow, briefly touched upon some of the main and most used TensorFlow modules and features in his first talk of the day. TensorFlow provides high-level APIs like Estimators, tf.data and the quite popular Keras API which make building machine learning models easy and fast. The saved TensorFlow Machine Learning models can be converted and deployed on mobile devices using TFLite. TF.js enables JavaScript developers to leverage Machine Learning right in the browser itself. Tensor2Tensor is a separate library that provides ready to use datasets and models. There were very useful talks later during the day that went into the details of some of these useful tools and libraries. While TensorFlow has more than 1600 contributors so far, most of them are from outside Google!</p>
<p align="center"><img src="\assets\images\amit.jpg" /></p>
<p align="center">Using TensorFlow to Prototype and train models</p>
<p>Building a Machine Learning model to solve a problem includes several steps, starting with data collection and till saving and deploying the trained model. Amit Patankar used a Heart Disease dataset to quickly take us through the different steps involved in building a Machine Learning model. While doing so, he also showed how Estimators make this process easy and better by providing different models that can be tried and evaluated. It was then time for Wolff Dobson to take the stage. In order to code and run anything in TensorFlow, one needs to first create a graph that contains all the necessary components and then run the graph from a session. Though this mode of execution has its own pros like better optimization, simplified distributed training and deployment etc, this approach can get a bit tedious and not really beginner friendly. The opposite of this is the Eager Execution mode where the execution happens immediately and no session is required. This sounds much better for beginners and researchers to prototype and code their models. But the trade-off here is losing the advantages that come with the former approach. Wouldnt it be nice if we can get the pros of both the approaches? That’s what AutoGraph does!</p>
<p align="center"><img src="\assets\images\eagervsgraph.png" /></p>
<p align="center"><a href="https://medium.com/tensorflow/autograph-converts-python-into-tensorflow-graphs-b2a871f87ec7">AutoGraph</a></p>
<p>AutoGraph takes the code in eager mode and converts it into the graph equivalent. The above image is one example that shows how different the code looks in both modes and how useful AutoGraph could be! By using AutoGraph, one can prototype in eager mode and deploy in graph mode. Wolff Dobson also talked about the on-going work for TensorFlow 2.0 which will be releasing next year and asked the community to be involved in design decisions through RFCs(Request for Comment) process.</p>
<p>The next two talks were about Scaling with TensorFlow using Distributed Computation and Accelerators. Priya Gupta talked about Distributed TensorFlow. Depending on the dataset used, the architecture chosen and a few other things, training a Machine Learning model can take minutes to days or weeks of time. Distributed training helps in bringing down the training time by a huge magnitude when compared to nondistributed mode. In this mode, a cluster(a group of workers/processors) is used for graph execution rather than a single processing unit. This not only leads to lesser training time but also results in better performance and this can be facilitated with only minimal code changes. TPUs, which are TensorFlow Processing Units come with powerful computation capabilities. TPUs along with Distributed TensorFlow gives great results for building Deep Learning models. In his talk, Sourabh Bajaj explained how the computational demands of rapidly advancing Deep Learning methods led to the design and development of TPUs.</p>
<p align="center"><img src="\assets\images\distributed.jpg" /></p>
<p align="center">Distributed TensorFlow</p>
<p>When building Machine Learning models, there are many things to consider and worry about than just the code. Collecting the data, making it ready for model training is a time taking process. Since the model performance and accuracy is highly dependant on the data used for training, it makes data validation and transformation highly critical. While on a high-level, a Machine Learning model takes data and learns from it to output a trained model that can be used for inference, taking this for production involves a lot of constraints and requirements. Instead of focusing only on building and deploying models, TensorFlow is growing its support for other parts of Machine Learning pipeline and TensorFlow Extended (TFX) does exactly that. Kenny Song explained through a series of slides what TFX is and what it does. TFX is an end to end ML platform that provides libraries to validate and analyze data at different stages of the training and serving, analyse the training model over different slices of data etc. He also talked about TF Hub which is a repository for reusable Machine Learning modules. Modules contain the TF graph along with its learned weights trained for some specific task. These modules can be used as is for the same task or can be reused with some modifications to solve similar other tasks.</p>
<p align="center"><img src="\assets\images\tfx.jpg" /></p>
<p align="center">TFX</p>
<p>Only a few years ago, not many people would have thought of having Machine Learning models trained and run from the browsers. But that has become a reality now, thanks to TensorFlow.js. Sandeep Gupta gave another talk on this where he shared how TensorFlow Playground paved the way for TensorFlow.js. Playground is an interactive neural network visualization tool which was built to run from the browser. The team that worked on developing this tool had to do a lot of work, as porting this Machine Learning tool to run from a browser involved some hurdles and constraints. While doing so, they realized the potential of bringing Machine Learning to browsers. Running ML models from browsers come with a lot of advantages — will require no drivers to be installed, it is interactive, well connected to sensors and the data stays with the user. All of these led to TensorFlow.js which is a JavaScript library for building and deploying ML models in browsers. For some cool ML projects which you can run on your browser, see the links at the end of the blog.</p>
<p align="center"><img src="\assets\images\edgetpu.png" /></p>
<p align="center"><a href="https://cloud.google.com/edge-tpu/">Edge TPU</a></p>
<p>It’s not just enough if the models run efficiently on high-end devices. With mobiles being the most used devices, the quest to get ML models to run as efficiently as possible on low-end devices is also seeing some results. Andrew Selle, who is part of TensorFlow team as Staff Software Engineer took us through TensorFlow Lite which enables mobile and embedded devices to run ML models. Running ML models directly from the device has many advantages. Not having to contact any server for the inference, on-mobile ML leads to lower latency and doesn’t depend on data connection. The data, in this case, stays totally no device and hence avoids any privacy concerns. But it is a challenging task as mobiles and embedded devices come with tight memory, low energy and little computational power. TFLite has made this possible and is already being used in production by many applications. Edge TPU is a TPU-variant, developed for powering edge devices for ML.</p>
<p align="center"><img src="\assets\images\wolfe.jpg" /></p>
<p align="center">TensorFlow for Art and Music</p>
<p>With ML finding its place in almost every field, artists too have taken a plunge into it. Using ML to come up with some form of art has become a growing interest. ML is being used to come up with its own paintings, writings, music etc. Magenta is a TensorFlow project that is used for generating art and music using Machine Learning. It was Wolff Dobson who took the stage once again, for the last talk of what happened to be an amazing day. He showed us demos of some of the applications built using TensorFlow that play music and games.</p>
<p>It is an exciting time to be part of technology. Conferences like these have a lot to offer and it is amazing how much one can know and learn by attending community events like this. Besides the very useful talks, it was really nice meeting the TensorFlow team and other ML researchers. Thanks to the entire Google India team that has been organising many wonderful events like these for the community!</p>
<p>There are many resources which Google provides for free for anyone interested in ML, starting from beginner level crash courses to research level blogs. I wrote a blog on many such useful resources which you can find here - <a href="https://towardsdatascience.com/google-knows-how-to-teach-45e531ab3ada">Google Knows How to Teach</a>.</p>
<blockquote>
<p>Did you find this post useful? Head over <a href="https://towardsdatascience.com/a-day-in-tensorflow-roadshow-dae64b470fe7">here</a> and give it a clap(or two 😉 ). Thanks for reading 😄 😄</p>
</blockquote>Avinash KappaPic CreditUber Maps Tech Talk2018-07-12T00:00:00+00:002018-07-12T00:00:00+00:00https://theimgclist.github.io//UberMapsTechTalk<p align="center"><img src="\assets\images\ubermaps.png" /></p>
<p align="center"><a href="https://rideshareapps.com/uber-fare-estimator/">Pic Credit</a></p>
<p>Unless you are someone who for some very mystical or other reasons have been living away from technology, you must be very used to what I call the Map Talk - “Can you share the location?”, “Map’s showing a lot of traffic on the way!” etc. Digital and web mapping service has been one area that has continuously evolved and got better with time and technology. Though one of the reasons for that has been the advancements in technology and computation, the other main reason is that it is a very challenging and unsolved problem. And that’s what makes it interesting and that’s what made this Uber Maps Tech Talk very interesting too.</p>
<p>Before two very informative talks we had for the day, there was a video about women in tech in Uber Bangalore’s Engineering team and a trivia which had some swags for those who answered correctly. In case you are wondering, no I haven’t won any! It was Ankit, Group Product Manager for Maps team who gave the first talk. In an earlier talk that happened a few months ago, the presenters explained the number of events and operations that occur between user opening the Uber app and the end of the ride. Locating the rider and driver and providing the accurate route for navigation is very crucial for a smooth ride. Ankit took us through each step, starting with estimation of user location, searching places and addresses, calculating fares and ETA prediction. When a user opens the app, the first thing that’s needed is his/her location. This involves a lot of features to consider like whether the user is indoors or outside, if the user is in a building somewhere above ground level or other such scenarios. This is done using GPS, location prediction models and WiFi fingerprinting. All of this to get that small blue dot at the right place on Uber maps!</p>
<p>There are many factors that should be considered in order to facilitate searching for places or addresses for drop location. The map can use the historical data of the user(if any), show popular places with accurate locations, show a snap of Uber rides that are nearby etc. And when it comes to Uber Eats there are additional different cases that should be considered. The next step which is the fare calculation has to be very accurate. Estimated time of travel, the distance it includes, the presence of tolls, the supply of Uber rides around the current user location and also the demand for rides at the moment are determining factors of estimated fare. If this sounds complex, think about how it can vary for different types of rides — UberGo, UberPool and the more recent ExpressPool. While both UberPool and ExpressPool allow ride sharing, ExpressPool provides a ride from the nearest pickup point which the rider can take by walking to the location. This not only helps the rider to reach a location where rides are available but is also cheaper.</p>
<p align="center"><img src="\assets\images\expresspool.gif?raw=true" /></p>
<p align="center"><a href="https://www.uber.com/newsroom/expresspool/">Pic Credit</a></p>
<p>Each step builds from the one before it and has some added layer of complexity. ETA prediction is the next step and it is different for different modes of ride. For UberGo/UberPool, there would be a single ETA of the driver to reach the rider. In case of express pool, the time the rider would take to reach the pickup point should also be considered. ETA calculation has few challenges. What if there is an unforeseen change in traffic? Or a sudden roadblock? What if the driver has a spotty network? The first two lead to recalculation of ETA. To handle spotty networks, the cached routes are reused at the driver side. So even if the driver loses connection, there are ways to make the maps work without it. Once the ride starts, there is continuous route optimisation that happens in the background to assist the driver to take the best possible route to the destination. Historical route records of both the rider and the routes being taken are used for this purpose. Before ending his part of the presentation, Ankit revealed Uber’s plans for multimodal mobility which accommodates rides using different modes that include not just four-wheelers but also bikes, scooters etc.(Just in case you didn’t know, Uber is investing in the scooter renting startup Lime, which is also backed by Google)</p>
<p>“How many of you here have worked on Maps?” asked Gaurang Khetan as he started his talk. There were very few hands raised. So if you want to work on something that is challenging, interesting, has an immediate impact on a popular product, then Maps is all yours. What makes it such a hard and challenging problem? Maps are as good as the data that is collected and good data is hard to get. There are different sources for obtaining data for developing maps and it includes multiple vendors besides others. Maps need to be continuously updated and improved as the physical world keeps changing from time to time. Different countries across the world have different conventions and structures for how they assign addresses. Moreover,it is hard to measure the correctness of maps and the routes. It is not so rare to be lost when following digital maps. Adding to all these reasons, the algorithms used for optimal routing and geo-based search need to be really fast, efficient and scalable.</p>
<p>Map data comes in different layers, from different sources and includes several types like road network, business locations, addresses, physical spaces like malls and buildings, natural features like lakes. The amount of data is not only vast but also very diverse. This makes the quest for global representation using maps a never-ending process. There was another question to the audience,”How can we build the map data for a country or place that doesn’t have any?” You should take a couple of minutes to think and answer it yourself. Postal data, government data, GPS traces, multiple vendors, manually driving and routing, satellite view, crowdsource etc are some of the ways of collecting/creating map data. How much data is enough? With the growing urbanisation and expansion of technology, the urban places must be well mapped and the routes thoroughly understood, right? Though this could be true to some extent, there is one problem that is specific to urban areas — urban canyons.</p>
<p align="center"><img src="\assets\images\canyon.jpg" /></p>
<p align="center"><a href="https://eng.uber.com/rethinking-gps/">Pic Credit</a></p>
<p>In urban areas or places with high buildings, the satellite signals can get obstructed before directly reaching the GPS receivers. This happens if any high buildings are in the line of sight to satellites. To quickly sum it up, GPS uses many satellites(30 or more) that revolve around Earth’s orbit and transmit signals that are used by GPS receivers for location identification. These signals can be blocked or reflected by the buildings that exist in their way of propagation. And when this happens, it causes an error in location information. This error varies from a few metres to 50m or more. The above image is one such example.</p>
<p align="center"><img src="\assets\images\canyon2.jpg" /></p>
<p align="center"><a href="https://eng.uber.com/rethinking-gps/">Pic Credit</a></p>
<p>To overcome this problem, Uber Maps use Signal to Noise Ratio(SNR). If for a satellite the SNR value is low, that means there is no direct line of sight to the corresponding satellite and there will be some error in location information. When it’s high, there must be a clear line of sight to satellite and hence the location information will be accurate. In the above picture, we can see that the point on left, is in line of sight to satellites C and D but not to B. Similarly, the point on right is in direct line of sight to satellites B and C but not D. This information can be very useful and the same can also be used to determine whether the location lies on left or right side of the road.</p>
<p>As it is clear, there is so much to know, learn, try and improve when it comes to Maps and that’s what Uber is doing. It doesn’t simply use Google Maps and work on the raw information that GPS provides. Maps is an active research area at Uber and they are continuously making it better. As an example to understand how Uber makes the location information better, see the below comparison between the location information that raw GPS provides(the one in red) and that of Uber’s improved GPS(in blue). While improved GPS provides better navigation, raw GPS is going all over the route.</p>
<p align="center"><img src="\assets\images\gps.gif" /></p>
<p align="center"><a href="https://eng.uber.com/rethinking-gps/">Pic Credit</a></p>
<p>This is the third Uber Tech Talk I attended this year and the talks were really interesting. Though it is well known that maps and graphs are not easy to solve problems and are continuously improving, it was really good to know so much about how a company that relies a lot on these areas is currently working and researching on those. We also had a good time networking after the end of talks. The speakers and few others who are currently working in Uber joined us and helped us with the questions and doubts. Thanks to Uber for organising the tech talk.</p>
<blockquote>
<p>And they have a cool office by the way!!</p>
</blockquote>
<p>If you liked what you read so far in this article and would like to follow what’s all happening at Uber, I recommend checking <a href="https://eng.uber.com/">this</a> blog from Uber and also following <a href="https://twitter.com/UberEng">@ubereng</a> on Twitter where they tweet about their recent research works and about open source tools.</p>
<p><a href="https://medium.com/@theimgclist/uber-tech-talk-bangalore-eca1ca73cd74">Here’s</a> the link to the blog I wrote about the first Uber Tech Talk I attended.</p>
<p>Thanks for reading 😄 😄</p>Avinash KappaPic CreditGoogle Smart Compose, Machine Bias, Racist AI - Summarising One Night of Binge Reading from Blogs2018-05-21T00:00:00+00:002018-05-21T00:00:00+00:00https://theimgclist.github.io//BingeReading<p align="center"><img src="/assets/images/bingereading.png" /></p>
<p align="center"><a href="https://www.forbesmiddleeast.com/en/artificial-intelligence-to-contribute-320-billion-to-the-middle-east-by-2030/">Pic Credit</a></p>
<p>After Sundar Pichai took the stage and began his Google I/O 2018’s keynote, I started to take a note of interesting things that were being announced and demoed. There were some very interesting demos and announcements, especially for those who are into Deep Learning. I was curious about Gmail’s Smart Compose and Google Duplex besides other things, both of these being use cases of Natural Language Processing. Google Duplex got a lot of attention which was not surprising since the conversation made by Google Assistant with a real human sounded seamless and also human-like. If you are into Deep Learning, you would surely want to know at least a bit about how these are done and Google’s Research blog is a good place to know more. And just in case you didn’t know, ai.googleblog.com is Google’s new research blog!</p>
<p>We all are familiar with suggestions for word completion on phones. But why limit this feature to only word completion? Smart Compose is the new Gmail feature that helps in completing sentences by providing suggestions as we compose our emails. This too like many of the recent advancements and features, leverage neural networks. In a typical word completion task, the suggestive word is dependent on the prefix sequence of tokens/words. Depending on the previous words, the semantically closest word that could follow next is suggested. In the case of Smart Compose, in addition to the prefix sequence, the email header and also the previous email body(if present as in the case when the current mail is a response to an earlier mail) are considered as inputs to provide suggestions for sentence completion.</p>
<p align="center"><img src="/assets/images/smartcompose.gif" /></p>
<p align="center"><a href="https://ai.googleblog.com/2018/05/smart-compose-using-neural-networks-to.html">Credit</a></p>
<p>Latency, scalability and privacy are three identified challenges that should be addressed to make this feature efficient, accessible and safe. For the sentence completion suggestions to be effective, the latency should be really less so that the user doesn’t notice any delays. Considering that there are more than a billion people who use Gmail, it is quite hard to even imagine how different the context of each email would be. The model should be complex and scalable enough to accommodate as many users. Shouts of privacy are heard everywhere when any kind of data is involved. And there are only a few things that demand privacy more than our emails. The models, therefore, should not expose the users’ data in any way.</p>
<p>Google’s blog on Smart Compose had references to few research papers which were helpful for building the neural network architecture behind this new Gmail feature. There was also the paper <em>Semantics derived automatically from language corpora necessarily contain human biases</em> that was shared in the blog. It’s a very interesting paper and it led me to a series of blogs. Even if you are no AI researcher nor an expert in Machine Learning, you must have heard about how many aspects of our lives are vastly changing by the advancements in those fields. Privacy and bias are two big concerns surrounding the usage of applications or programs that learn from data. While privacy has been a concern for quite some time already, bias too seems to be catching up. Any program that leverages Machine Learning to solve a problem needs data as input. Depending on the problem or task at hand, this input data could be text, image, audio etc. Irrespective of what type/form the input data is, it is all generated through some human action. And that means the prejudices and biases that exist in human actions and thoughts are well part of the most important block of a learning model - its input.</p>
<p>When Latanya Sweeney from Harvard University searched on Google for her own name, to her surprise the results also had an ad that was showing,”Latanya Sweeney arrested?”This led her to a research on Google search results from which she concluded that the names which are associated more with the blacks are more likely to have such search results or advertisements. She found in her research after running the search for more than 2000 real names that the names associated with blacks were up to 25% more likely to show such criminal ads. Was Google search being racist here? This was the response that came from Google - “AdWords does not conduct any racial profiling. We also have an “anti” and violence policy which states that we will not allow ads that advocate against an organisation, person or group of people. It is up to individual advertisers to decide which keywords they want to choose to trigger their ads.”</p>
<p align="center"><img src="/assets/images/threeblackteenagers.png" /></p>
<p align="center"><a href="http://atlantablackstar.com/2016/06/10/teen-googles-three-black-teenagers-and-three-white-teenagers-to-startling-results/">Pic Credit</a></p>
<p>In 2016, an internet user posted on Twitter, one of his experiences with Google image search. When he searched for “three white teenagers”, the results he found were images of smiling, happy white teenagers. When a similar search was tried with “three black teenagers”, the results were quite different. Though these results too had some normal and generic images, many of the other results were that of jailed teenagers. The post went viral soon after it was posted and that shouldn’t be surprising. What was the reason behind this? Was the algorithm behind the image search programmed to do this? This would surely not be the case. Google has explained this situation too - “Our image search results are a reflection of content from across the web, including the frequency with which types of images appear and the way they’re described online”.</p>
<p>Does the problem seem to be only with the applications/algorithms of the big tech companies that have access to huge amount of data? Many courts across the United States use a software that gives the accused/defendant a risk score. This score represents the likelihood of the person committing a crime. From where does the software get the data to perform analysis and give out a risk score? According to ProPublica’s blog, Northpointe the company which has developed such a risk-assessing software uses the answers to 137 questions as the data. These answers are either directly obtained by questioning the accused or taken from the past criminal records.</p>
<p align="center"><img src="/assets/images/riskscore.PNG" /></p>
<p align="center"><a href="https://www.documentcloud.org/documents/2702103-Sample-Risk-Assessment-COMPAS-CORE.html">Pic Credit</a></p>
<p>The data, in this case, may not be as much but that doesn’t mean the program is free from bias. When Brisha Borden took a ride on a bicycle which was not hers and got arrested, she was given a high score by the risk assessment program that she was likely to commit more crimes in future. The same program has given a lower score to Vernon Peter who served 5 years in prison for armed robbery in the past. Yet in two years time, Brisha who was given a high score hasn’t committed any crimes whereas Vernon who had a low score for committing any future crime, was back in jail for another robbery. Data again is the most key component of this risk assessment program.</p>
<p>These are not simply some handpicked incidents for the purpose of explaining the problem of bias. Years ago there was an incident in which HP’s face tracking webcam was working fine with white people whereas it failed to recognize the dark-skinned people. Google Photos was classifying the blacks as gorillas. The root cause of all these is that bias is very much part of the data that is being used. This can happen either when there is bias in the data generated and also when the data collected to train the models is not representative. Not all people will laugh it off when some application on their phone or a website classifies them or a friend of theirs as some animal. No company working on algorithms and applications that run on data will want them to act biased. Many of us are well aware that the algorithms being used for these purposes are far from perfect. Yet the way people react when they experience these biases will be spontaneous as if they were subjected to it by a fellow person.</p>
<p align="center"><img src="/assets/images/riskassess.png" /></p>
<p align="center"><a href="https://www.vinavu.com/2017/11/03/predictive-analytics-will-lead-the-future/vernon-prater-and-brisha-borden/">Pic Credit</a></p>
<blockquote>
<p>Latanya Sweeney’s incident happened in 2013. Similarly, the other incidents that were mentioned, happened sometime during the years 2014, 2016 and HP’s face tracking issue happened way back in 2009. Given that the incidents we are talking about happened years ago, these problems with the bias should have been possibly fixed by now, isn’t it? No. Google fixed the Photos app problem by blocking any of the images in the app from being categorized as gorillas, chimpanzee etc. Sounds more like a workaround than a fix? But the problem we have here is that these are biases, not bugs. They don’t exist in the code. They exist in data and that’s what makes this a really hard problem to fix.</p>
</blockquote>
<p>The learning models are not perfect. And the companies that are developing and building those are not pretending they are either. Google doesn’t hesitate to acknowledge how even its state of the art algorithms are vulnerable to the bias in data. It continuously works on making these algorithms better. Apple has learnt from all the flaws and problems faced by prior face recognition software. It made sure its face recognition program built using neural networks is trained on proper representative data - data that was inclusive of all diversities like age, gender, race, ethnicity etc. The leading tech companies and many others are making strides towards improving these algorithms which surely have a lot of potential for good like early detection and diagnosis of diseases, aiding the differently abled, education, making computers and technology better at performing human-like tasks etc.</p>
<p>Though these advancements have happened rapidly in the past few years, problems like algorithmic bias still exist. Since the learning models are helpless if bias exists in the data on which they are trained, developing learning models that not only learn associative patterns but also learn to implicitly handle bias when it exists will be a big step. We as humans are so thought driven. Yet even with biased thoughts, we have the power to act unbiased if we choose to. Can the learning models learn to do this? If not exactly, at least to some extent?</p>
<blockquote>
<p>Thanks for reading 😄 😄</p>
</blockquote>Avinash KappaPic CreditGoogle I/O Extended Event2018-05-10T00:00:00+00:002018-05-10T00:00:00+00:00https://theimgclist.github.io//GoogleIOExtendeEvent<p align="center"><img src="\assets\images\io18extended.png?raw=true" alt="" /></p>
<p align="center"><a href="https://events.google.com/io/">Credit</a></p>
<p>When I saw the message on Slack that I have a chance to attend Google I/O 2018, I almost jumped out of my chair. Though there were thousands of others who also got the same message, it didn’t stop me from feeling excited. Before you set any kind of expectations, let me break the news - no, it wasn’t me who got that opportunity. And that was why I attended one of the many Google I/O extended events that happened across the world in many countries. If you are not aware, Google I/O is the annual tech festival that happens every year. Developers and tech enthusiasts from around the world, attend the event and take part in tech talks, codelabs, discussions and many more events. Google also announces its exciting products and new features during this event. Google I/O extended events are organized by Google Developer Groups or local tech groups across the world where people gather, watch live stream, have some discussions, fun activities and swags. There were few extended events that were planned and happened in Bangalore and I attended one.</p>
<p>We were all waiting for the keynote to start and we had to wait for more than an hour until that happened. Meanwhile, the organizers conducted a quiz by asking questions. There were some swags for those who gave the correct answers. When Sundar Pichai finally took the stage, there were cheers and claps both at the actual I/O venue and at the extended event. “Good morning”, he wished everyone in his calm and relaxed voice. Can you guess with what he started his keynote? A major bug! Now if you haven’t watched the keynote and wondering why the CEO of Google would do that on such a stage, revealing to the world a major bug in one of its products, what he was really talking about was the burger emoji controversy. Can’t get a better start to the event than this, can we?</p>
<p align="center"><img src="\assets\images\burger.png?raw=true" alt="" /></p>
<p align="center">Noticed the big bug?<a href="https://www.businessinsider.in/Googles-CEO-kicked-off-the-big-Google-event-by-apologizing-about-the-inaccurate-burger-emoji-on-Android-then-he-showed-off-the-new-design/articleshow/64085799.cms">(Pic Credit)</a></p>
<p>There were many exciting things that were announced at Google I/O and almost all of them had one thing in common - the use of Machine Learning/Deep Learning. With technology being part of our lives more than ever, it is necessary to provide means for the people to get the skills necessary. Google through its digital skills training courses and programs has made this possible. With AI finding its place in many fields, healthcare is one among them where it has proven very vital. With the help of Deep Learning, doctors can now make an early prediction of a person suffering some disease and also helps in diagnosing. All of this gives doctors more time to act. Smart compose is Gmail’s new feature where the app suggests phrases instead of words as we type. This again uses Machine Learning. For those who use Google Assistant, there are features to get you excited too. Google Assistant will be getting 6 new voices to choose from, one of which is John Legend’s! Expect John Legend to answer your questions, help you with the assistant tasks sometime soon. But isn’t it time for the Google Assistant to do more than just answering our queries? Maybe book appointments for us and also have conversations instead of simply answering our questions? Yes and that’s what Google Duplex is for.</p>
<p>Google Duplex has been in the making for the past many years. Leveraging the advancements in language understanding and conversation making, Duplex is Google’s AI solution to make appointments using Google Assistant. This includes the Assistant making calls to, for example, a salon to book an appointment for you to get your haircut. The call happens in the background and is taken care of by the Assistant which gives you back the confirmation of the appointment. Though AI has already seen a lot of game-changing advancements in Computer Vision related tasks, language understanding and Natural Language Processing are yet to see that level of success. Since language understanding models are sequential, latency should be low, for the model to be efficient and reach anywhere close to the human level of language understanding.</p>
<p align="center"><img src="\assets\images\dashboard.png?raw=true" alt="" /></p>
<p>Whenever I browse through my Android phone apps, there is one app that makes me feel that it’s left out. Yea I am talking about Google News. And Google has added it some new features, hopefully, to improve it. This again uses Machine Learning. Coming to Android, the version P of it comes with a dashboard, which acts as a one-stop place where the users can see how they are using their phones - what apps are they spending the most time on, how many notifications did the phone receive, number of times the phone is unlocked etc and all of this for the digital well being of the users. Also, Youtube is going to have this new feature which reminds you to take a break whenever it feels you have crossed the limit. So the next time you are on Youtube, binge-watching videos, it is not just your mom or dad who would remind you to take a break.</p>
<p>There were so many useful sessions that happened during the I/O event. All of these are available to watch on <a href="https://www.youtube.com/user/GoogleDevelopers/videos">Youtube</a>.</p>Avinash KappaCreditA Day in Great Indian Developer Summit2018-04-26T00:00:00+00:002018-04-26T00:00:00+00:00https://theimgclist.github.io//GreatIndianDeveloperSummit<p align="center"><img src="\assets\images\GIDS.JPG?raw=true" alt="" /></p>
<p>The last time I blogged which was a few days ago, I told myself that the next time I do it, it should be something other than writing about my experience in some tech event. Looks like I should postpone that for another time. Because here I am, writing again about yet another tech conference. This time there is one difference though. I am writing this as I am still in the summit. What summit? I am talking about the Great Indian Developer Summit 2018, that is happening right now in Bangalore. And without any delay, let me straight away take you through what all happened so far.</p>
<p>The event started at 8.30 in the morning. All the delegates and the speakers gathered in the Main Hall for the keynote sessions. They say first impressions matter a lot. If it’s really true, then Michael Carducci made sure that he made the best first impression. He delivered first of the keynote talks and the hundreds of people in the hall got glued to his presentation. With two decades of experience in programming, he talked about good and bad ways of development and programming through his experience and stories. He gave an enthralling, entertaining and a rockstar presentation and made us clap and laugh throughout his talk.</p>
<p align="center"><img src="\assets\images\michael.JPG?raw=true" alt="" /></p>
<p>Guru Bhatt from PayPal came next and he didn’t hesitate to announce to the audience how tough it is to continue when the speaker who talked before was Michael. His talk was about using AI to solve real-time problems. If you own a banking system, one of the crucial things you want to handle without fail is fraud detection. He gave an example of one specific use case — seller and buyer colluding which causes the baking system to lose. This can be detected using Collaborative Filtering and Deep Learning. Use cases like these prove that AI is not a mere hype. He said people should see PayPal not just as a payment business but a trust business. Having said all that, he concluded by saying, “Not every nail needs the AI hammer”.</p>
<p align="center"><img src="\assets\images\paypal.JPG" /></p>
<p class="caption">Welcome to India, PayPal!!</p>
<p>There were few more talks during the keynote. Andy Younis who is the founder of Rocket Software company said, “What we do at Rocket is innovate. 28 years ago I wanted to start the kind of company in which I would love to work.” His talk was about how culture plays a very important role in how a company can evolve and innovate(he walked onto the stage with a guitar and played music along with his team before starting his talk!). Girish Dhanakshirur talked about serverless architecture, IBM patterns which I got a chance to check from IBM booth. IBM patterns contain tested solution code which can be used to solve a specific problem. For example, I saw the demo of using IBM Patterns for analyzing traffic. If you are familiar with Google Codelab, I found this similar. Harshad Oak ended the keynote session by talking about how it’s important for the startups to have the network and mentorship besides their brilliant ideas and talent. Whether it’s Oracle or any other organisation that now has startup mentorship programs, he urged that it is very important and necessary for startups to be involved in such programs.</p>
<p align="center"><img src="\assets\images\booth.jpg?raw=true" /></p>
<p>By the time we came out of the keynote, all the expo showcase booths were setup and ready. There were booths from Google, WalmartLabs, PayPal, Amazon Alexa, Sapient, Sabre,Goldman Sachs and many others. People looked excited as they went from one booth to another, participated in quiz and contests, kept filling their empty bag with goodies. This was the best part of the summit, not just because they were giving away gifts. We could directly talk to representatives from all those organisations, get to know about what kind of interesting things they are doing and their current career openings. There are some sessions which are going on. The ones that I wanted to attend on Machine Learning are sadly cancelled. I will be attending another session soon, so I am actually in a rush to finish this blog.</p>
<p align="center"><img src="\assets\images\sapient.jpg?raw=true" /></p>
<p>The above is one of my favourite demos here at the event. It’s a personalising mirror. It predicts the gender of the person standing in front of it, detects and classifies the clothes of the person and then gives some clothes recommendations to try out. For this, they make use of Deep Learning ResNet model with 50 layers. It’s interesting to know that the team that’s working on it is currently in Bangalore! So if you are looking for Machine Learning job opportunity, you should check Sapient’s career page right now!</p>
<p>I have a session to attend now. Will update the blog for more(this includes the goodies I filled in my bag!)</p>
<blockquote>
<p>Update:</p>
</blockquote>
<p align="center"><img src="\assets\images\goodies.jpg?raw=true" /></p>
<p class="caption">Want to have a look at the gifts and goodies?</p>
<p>GIDS is not just a one-day event. Its sessions, workshops and deep-dives happen for multiple days. I attended it only for one day, yesterday and it was a great experience. Besides attending few sessions, I spent most of the time interacting with people from different organisations at booths. With contests and quizzes, these booths kept the summit lively and full of buzz. I took Pluralsight’s IQ test for Python from Google Developers booth.200 is what we needed to score. I failed the first time with 178. I gave a retest and scored 205. That’s how I won Pluralsight’s pen! I participated in few quick quizzes. Some were technical and the others were fun. And I also got a present from GIDS organisers for blogging about the event yesterday!</p>
<p align="center"><img src="\assets\images\contest.jpg?raw=true" /></p>
<p>I have been going to conferences like these for the past few months. Though they undoubtedly help you know, learn and improve technical skills and knowledge, the best part is meeting and interacting with friendly, like-minded and inspiring people. Few people I talked to, shared their contacts to help me with some of the queries I had and it was really nice to see how willing they were. It has been a great day at the Great Indian Developer Summit and I look forward to attending it next year! Oh, I shouldn’t forget this. Thanks to my organisation, Unisys, for getting me a seat to the summit!</p>Avinash KappaMicrosoft’s OpenHack Machine Learning Meetup2018-04-11T00:00:00+00:002018-04-11T00:00:00+00:00https://theimgclist.github.io//OpenHackBangalore<p align="center"><img src="\assets\images\openhack.png?raw=true" alt="" /></p>
<p class="caption"><a href="https://www.meetup.com/opensourceblr/events/248254677/">Pic Credit</a></p>
<p>When I thought of writing my next post on this meetup, I asked myself,”When will I start writing about anything other than the events I go to?” Though I did write few blogs which are not about any meetups or events, most of the blogs so far have been about the sessions/talks I attended. One of the reasons that compel me to write about such events is the amount and variety of information and knowledge one can get by attending a meetup/session that lasts for a couple of hours. These are insights, advice, tips and words spoken and shared from experiences which we don’t often find from courses or text books. OpenHack’s open community meetup was nothing short of such an event that gave every single attendee many useful insights.</p>
<p>OpenHack Machine Learning is a 3-day event organised by Microsoft in which shortlisted people form groups and work on solving challenges using ML. Though it would have been really good to be part of the 3-day event, it needed an invite which I didn’t have. As part of the agenda for Day 1, they had an open community discussion in the evening which was open for everyone. It was Nigel Parker, Chief Engineer at Microsoft who started the session. He showed us few examples of image labelling which the model got wrong explaining how having the right data is important to obtain better results. Computer Vision is his area of interest and he shared some informative slides on Deep Learning and Computer Vision.</p>
<p align="center"><img src="\assets\images\cnn.png?raw=true" alt="" /></p>
<p>In a typical ML project, feature extraction is a key step. This is handled by itself in Deep Learning and so it reduces so much work. Classification, object detection, image segmentation and image similarity are some of the tasks that widely use Deep Learning models. Alexnet, VGG, GoogleNet, ResNet are some of the model architectures that are used. Currently, ResNet that was developed by Microsoft Research is giving very good results. It also proved that the model can do well even when it is 150 layers in depth. When it comes to the human eye, processing/understanding an image gets better as the resolution increases. But for Deep Learning models, it’s necessary to have input in right resolution keeping in mind the computational demands. He talked about ONNX(Open Neural Network Exchange) which is an open source format for AI models. He also recommended reading the book <em>How to Create a Mind</em> by Ray Kurzveil.</p>
<p>Chris Auld, a Software Engineering Manager at Microsoft who came next onto the stage, had a slide in his presentation that says, “Microsoft loves Linux”. And he didn’t hesitate to recommend Linux for doing Machine Learning development. He talked about how he and his team works on making the Machine Learning/Deep Learning models better. The kind of model architectures that are being used along with huge amount of data that is available, makes it mandatory to have the required computation power that can afford the demands of such models and data. Distributed training becomes necessary as a part of handling all that.</p>
<p align="center"><img src="\assets\images\chris.jpg?raw=true" /></p>
<p>After having two speakers whose talks were very informative and helpful, there was a panel discussion. Besides the two speakers, three others from Microsoft joined the panel - Neil Hutson, Micheleen Harris and Hannah Krager. There were some interesting questions asked and discussed like how much of Microsoft’s Machine Learning stack is open source, how much of ML applications that are being proposed is hype and what is practically achievable, how having large dataset isn’t enough as long as it doesn’t have the right data(heard about the Russian Tank story? Click <a href="https://www.scientificamerican.com/article/how-a-machine-learns-prejudice/">here</a>). AI is already being used in many fields. It’s being used for early detection of some diseases so that they can be diagnosed and cured. With many promising possibilities ahead, AI is already so much part of our lives.</p>
<p align="center"><img src="\assets\images\panelopenhack.jpg?raw=true" /></p>
<p>It was a very engaging session throughout and I got to know a lot of things. Thanks to Jeeva who organised the meetup and gave us a chance to meet the engineering leaders. Thanks to Nigel who was kind enough to spend almost another hour and half post the panel discussion, answering our questions, giving suggestions on how to get started with the implementation of some ML ideas and sharing his thoughts and experiences.</p>
<p>Did you find this post useful? Head over <a href="https://medium.com/@theimgclist/microsofts-openhack-meetup-ff9729228cd0">here</a> and give it a clap(or two 😉 ). Thanks for reading!!</p>Avinash KappaPic Credit