I'm a Bachelor's + MS by Research Dual Degree ECE student at IIIT Hyderabad, India. My MS is on the topic of Machine Learning for Smarter and More Efficient IoT Systems. I've published 2 papers as part of my MS and am currently working on my thesis. I've been the recepient of the Dean's List Award 6 times in a row for my academic performance. During the course of my engineering, I served in 2 different companies as an intern. The first one was the Linux Foundation where I interned for about 6 months in 2018. This was a remote open source internship wherein I collaborated with a team from Huawei (OPNFV Project) to develop a cloud-native stack for edge devices. I received the Gambia Community Award for my contributions to OPNFV and was the only undergrad speaker selected by the Linux Foundation to deliver talks at the Open Networking Summit and the OPNFV Plugfest. In the summer of 2019, I interned in the AI/ML team of Ernst & Young, Bangalore. I had a dual role of a DevOps as well as a Machine Learning Engineer.
I'm an avid book reader. Some of my favorites include The Scarlet Letter, Maud's Line, The Girl On The Train, Surely You're Joking Mr. Feynman and The Martian. I also love reading Japanese manga. One Piece is my absolute favorite. I own an Ibanez acoustic guitar and can be found strumming to the Beatles or Oasis in the afternoons if I'm not in the badminton court or hooked to some Netflix series.
B.Tech. (Hons.) & MS by Research in ECE • Aug 2016 - Jun 2020
Pursuing a dual degree programme in electronics and communication engineering. I have a CGPA of 9.27/10 and have been the recepient of the Dean's List Award 6 times in a row (semesters 3 to 8). Some of my favorite subjects include: Statistical Methods in AI, Data Warehousing and Data Mining, Computer Vision, Algorithms and Operating Systems, Communication Networks, Embedded Hardware Design, Linear Algebra and Graph Theory. My MS is on the topic of Machine Learning for Smarter and More Efficient IoT Systems. I've published 2 international papers as part of my MS. I received the Research List Award for publishing my first paper during my undergrad. I also served as the Head TA for the course Embedded Hardware Design in Monsoon 2017. My primary job was to design lab experiments centered around Arduino and Xilinx Zedboard and take lab sessions every week.
Machine Learning & DevOps Intern • Bangalore, India • May 2019 - Aug 2019
I was selected from campus for this internship among a pool of 300 IIITians. I interned for around 3 months in the AI/ML team of E&Y. Worked on the problem of clustering in high dimensional sentence embeddings (BERT, USE, XLNet). Also worked on optimizing the time and space complexity of some core algorithms like Nearest Neighbor for large databases. In the DevOps role, I dockerized a deep learning application and implemented an end-to-end CI/CD pipeline from scratch in Azure DevOps.
Edge Cloud Networking Intern • Remote • May 2018 - Dec 2018
I was selected as an LFN intern in the OPNFV project for a period of 6 months. The crux of my work was to implement a kubernetes-based small-footprint edge cluster supporting cloud-native framework and develop exemplar microservice-oriented applications for the edge as well as the edge-cloud paradigm of the future. In the first phase, a versatile Ansible script was developed to form a k8s cluster out of 2+ Raspberry Pi 3 devices. Exemplar microservice apps, containerized using Docker, were developed and tested on this edge cluster. In particular, a low-latency real-time video streaming app employing UV4L was developed and tested. The next phase focused on an edge-cloud paradigm for ML apps. A demo was created for ONS-18 which involved containerizing a YOLO-based real-time object detector for this edge as well as GKE (with Nvidia P100 GPU) and highlighting the pros and cons of a collaborative ML paradigm.
I received the Gambia Community Award in the intern category. I also got 2 opportunities to present my work- one at the Open Networking Summit, Amsterdam and another at the OPNFV Plugfest, Paris and was the only undergrad speaker in both the places.
Research Student • Hyderabad, India • May 2017 - May 2020
Pursuing research under Dr. Sachin Chaudhari on the application of machine learning towards smarter and more efficient IoT systems. As of August 2019, I'm a full-time Research Assistant in the SPCRC lab and have been overseeing various government and industry sponsored projects as well. Published two papers as part of my MS: one on the problem of offloading trained machine learning models to constrained sensor nodes for data transmission reduction and another on machine learning-based human occupancy estimation in rooms using non-intrusive sensor nodes.
Research Intern • Trondheim, Norway • May 2018 - Jun 2018
Worked under Prof. Stefan Werner and Dr. Frank Kraemer on robust machine learning-based IoT systems that work on a collaboration of edge and cloud. Also explored the problem of transfer learning in machine learning-based IoT applications.
I'm inclined towards Software Development, DevOps and Machine Learning.
micro-learn is a Python library for converting trained machine learning models into inference code that can run on microcontrollers in real time.
ML algorithms typically require heavy computing and memory resources in the training phase, far greater than what a typical microcontroller can offer. However, post training, many of these algorithms boil down to simple parameters that require simple arithmetic & logical operations for inference. These can easily run on microcontrollers in real time. The purpose of this library is to convert ML models (trained using scikit-learn) directly into Arduino inference code.
All the inference algorithms are optimized for microcontrollers and require least possible arithmetic computations. Division operations have been converted to multiplications since the latter is much more computationally efficient. Note that all the algorithms are exact and not approximate. Please refer to my ACM paper for theoretical and practical foundations regarding this procedure.
Embedded Systems, Machine Learning, Scikit-Learn, PythonOne of the biggest perks of interning in the Linux Foundation Networking (LFN) program is that you get a fully sponsored trip to an LF event. Not only that, you also get to present your work as a 10-15 minute lightning talk to a room full of industry experts! My internship concluded successfully in December 2018 and I began packing my bags for this trip in the second week of January itself.
This time around (2019), the OPNFV plugfest was not a standalone LF event. Rather, a combined OPNFV Plugfest and ONAP DDF took place for 4 whole days at Nokia Paris-Saclay. I got to attend tons of exciting talks and tutorials that were undertaken by the developers from various companies like Redhat, China Mobile, Huawei, Intel. The intern talks were scheduled early morning on the last day of the event. I've attached my presentation below which is pretty self-explanatory.
Edge, Ansible, Docker, K8s, YOLOv3, Python, BashI was only halfway through my LFN internship when one day my mentor, Wenjing Chu, suggested that we should submit a talk proposal for the Europe edition of the Open Networking Summit (2018). He was convinced that our work on edge-cloud and collaborative machine learning was something that companies would be interested in. And sure enough, our proposal was accepted by LF to be presented as a 10 minute lightning talk. I've attached our presentation below which is pretty much self-explanatory.
P.s. This was the first time I'd ever given a talk in a foreign country to a room full of industry experts. A great experience indeed!
Edge, Ansible, Docker, K8s, YOLOv3, Python, BashAs the heading suggests, this project revolves around the creation of a kubernetes cluster using 2 or more Raspberry Pi devices (ARM-based). After manually playing with docker and kubernetes on the RPi for weeks, I developed a versatile Ansible script that can create and disassemble clusters with ease. You can try it out yourself if you own at least 2 Raspberry Pi devices. An exemplar containerized app is also included in the repo which can help you get started with your own edge cluster-based projects.
A fully detailed guide and code can be found in the below link.
Ansible, Docker, Kubernetes, BashThe aim of this project was to develop an egocentric hand segmentation model using RefineNet in Python3. For this, we worked with two CVPR papers and replicated the results using our own implementation in PyTorch (the authors had written the code in Matlab). The PyTorch implementation of RefineNet (which is a multipath refinement network over ResNet) was done from scratch. After that, the model was trained on the standard Pascal person-parts dataset with a new binary layer of hand and no-hand. The model was further fine-tuned on four different ego-centric hands datasets.
The details about the implementation and the code can be found below.
Computer Vision, Semantic Segmentation, ResNet, RefineNetThis was my first international paper. As a rule, if an IEEE or ACM paper gets accepted for publication, at least one of the authors is expected to attend the conference and present the paper.
Abstract: In buildings, a large chunk of energy is spent on heating, ventilation and air conditioning systems. One way to optimize their usage is to make them demand-driven depending on human occupancy. This paper focuses on accurately estimating the number of occupants in a room by leveraging multiple heterogeneous sensor nodes and machine learning models. For this purpose, low-cost and non-intrusive sensors such as CO2, temperature, illumination, sound and motion were used. The sensor nodes were deployed in a room in a star configuration and measurements were recorded for a period of four days. A regression based method is proposed for calculating the slope of CO2, a new feature derived from real-time CO2 values. Supervised learning algorithms such as LDA, QDA, SVM and random forest (RF) were used on several different combinations of feature sets. Moreover, multiple performance metrics such as accuracy, F1 score and confusion matrix were used to evaluate the performance of our models. Experimental results demonstrate a maximum accuracy of 98.4% and a high F1 score of 0.953 for estimating the number of occupants in the room. PCA was also applied to evaluate the performance of a dataset with reduced dimensionality.
The presentation and the paper link can be found below.
Machine Learning, Internet of ThingsWorked part-time for around 5 months on the CanSat 2018 mission statement along with 8 other IIITians.
The mission statement of CanSat 2018 was to construct a small satellite containing various sensors such as temperature, pressure, accelerometer, voltage and GPS, a microcontroller and a communication radio. A payload section was also to be designed for protecting a delicate instrument. During the final launch, an egg was put in this section. The CanSat was also armed with a heat shield and a parachute. As per the problem statement, the CanSat was to be dropped from a height of around 700m. It was expected to perform a series of manoeuvres such as letting go of the heat shield and opening the parachute at certain altitudes, sending telemetry data to the ground control every second and most importantly, remain steady enough to ensure that the egg in the payload section doesn't break even after impact.
All of us in the CanSat team grew up watching science fiction movies. To create something like this from scratch was an amazing experience. I still can't explain the feeling I got when I learnt that the egg in our payload section didn't even have a scratch on it! For more details, please visit the following link.
Embedded Systems, Communication, AerodynamicsThe aim of this project was to determine the popularity of songs using its musical features as well as other song metrics. We started with the analysis of the million song dataset (MSD). The dataset required a lot of preprocessing before it could be used in any way. After that, traditional machine learning models were trained to classify songs into three categories- highly popular, popular and unpopular. Nearest neighbor exhibited the highest accuracy. Next, we moved onto time-series based experiments as the songs are, of course, time-series in nature. An LSTM was trained on the time-series features that we had earlier left out. Since the MSD dataset was quite old, we collected our own dataset consisting of 889 current hit songs and tested different models on that too. The features were extracted using the PyAudioAnalysis library.
The details about the implementation and the code can be found below.
Python3, Machine Learning, Time Series, HDF5This project was given as a GSoC project by the ATLAS team (part of the Large Hadron Collider project) in 2018. I was initally trying for this internship but then ended up taking the Linux Foundation internship instead. However, I did complete most of the tasks laid out for the project on my own.
In this project, a standalone C++ class was built which can work with Symmetric Matrices on top of the Eigen Library. Working only with the upper/lower triangular part of a symmetric matrix considerably reduces the storage space as well as the complexity for different matrix operations. The code exhibits the use of templates coupled with operator overloading.
C++, OOPS, Templates, Polymorphism