Kabir Abdulmajeed Data Science Consultant

Interests & Expertise

I am a Machine Learning Specialist and currently a Data Scientist with Boston Consulting Group. From Smart Vision Systems, to Robotic Surgery, to Customer Analytics, I have passion for every system that can sense, think, and act on its own. My experience ranges from Signals and Communications (B.Eng), Systems, Robotics and Control theory (M.Sc), and Computer Science with a specialization in Machine learning (2nd M.Sc) from GeorgiaTech. I have had the opportunity to work with Ultrasonic, EMAT, and MFL technologies for Oil and Gas In-line inspection. Similarly, I have experience in the telecommuncations industry, academia, and once helped develop software for a medical facility.

Code

Python, MATLAB, R, C++

Tools

NumPy, SciPy, OpenCV, Pandas, Keras

Design

HTML/CSS/Javascript, ROS, GIT, Ai, SolidWorks

Fun Projects

mountains

Nvidia Deep Learning Institute

  • NVIDIA GTC 2021

This is an annual event organized by Nvidia. Here, I took the course titled "Building Transformer Based Natural Language Applications." Covered NLP Embeddings (Word2Vec, RNN, and Transformers), Self-Attention, Self-supervision (BERT, Megatron, etc), NLP Models (text classification, NER, Question Answering), and Deployment & Inferencing with Nvidia NeMo and Triton

Private
mountains

Analysis and Evaluation of Machine Learning Algorithms

  • Sklearn, MLRose, Python, OpenAI-Gym, GCP

This project involves a series of thorough analysis of Machine Learning Algorithms. Supervised Algorithms covered include: NNs, DTrees, K-NNs, SVMs, Boosted-DTrees. Unsupervised include: PCA, ICA, ISOMap, Randomized Projections, K-Means, GMMs. Randomized Optimization include: Randomized Hill Climbing, Simulated Annealing, Genetic Algorithms, and MIMIC. Reinforcement Learning Algorithms include: Policy Iteration, Value Iteration, and Q-Learning.

Private
mountains

Nvidia Deep Learning Institute

  • NVIDIA GTC 2020

This is an annual event organized by Nvidia. Here, I participated in four topics at the institute's DLI workshop: (1) CUDA python with Numba, (2) 3D Segmentation with VNet, (3) Anomaly Detection with Variational AutoEncoders, and (4) Data Augmentation and Segmentation with GANs.

Private
mountains

COVID-19 Case Forecasting

  • Data visualization, Analytics, Webscraping

An Online Ensemble Forecasting algorithm was developed by combining ARIMA, Prophet, and Holt-Winters + GARCH for predicting future number of COVID-19 cases in Nigeria. As at the time of writing, it has achieved a 100% hit-rate

Check it out
mountains

Markerless Augmented Reality

  • Python, OpenCV

This project involves Augmented reality without the use of markers. An image of an advert or video frames can be projected on a surface by persistent frame-by-frame homography tracking.

Check it out
mountains

Exposure Fusion

  • Python, OpenCV, Numpy

Exposure fusion creates a single image with optimal detail from a set of multi-exposed images. As developed by Tom Mertens et al., quality measures; Contrast, Saturation, and Well-Exposedness are used to create a weight map that blends each of the multi-exposed images to a single image with best exposure.

Check it out
mountains

Object Tracking using Particle Filter

  • Python, OpenCV

Object tracking was performed using the Particle Filter algorithm. For robustness, higher level motion dynamics can be incorporated in the algorithmic formulation.

Private
mountains

Pedestrian Tracking and Detection

  • Python, OpenCV

The Particle filter algorithm is used to track a Pedestrian using a template sample. Detection also works well when HOG features are used with a Kalman filter. This has applications in traffic analysis and self-driving cars.

Private
mountains

Random Forests for Algorithmic Trading

  • Python, Pandas, NumPy

Historical market data is used to train a Random Forest algorithm in-sample. It is then tested by simulating the possible portfolio performance using a market simulator. Portfolio gains around 200% was achieved for AAPL stock in 2008 (in-sample) vs 2009 (out-sample)

Private
mountains

Market Technical Indicators: Bollinger® Bands, RSI, MACD, EWA

  • Python, Pandas, NumPy, Jupyter

The objective of this project is to showcase different indicators used in the stock market for trading decisions: Bollinger bands, %b, Relative Strength Index, and Moving Average Convergence Divergence. These help in identifying Bullish and Bearish market, and in deciding when to Short, Long, or Hold a position.

Check it out
mountains

Stock Market Portfolio Simulator

  • Python, Pandas, NumPy

This Portfolio simulator builds the performance of a portfolio for a given stock(s) and market data. It receives an "Orders" file containing actions: "BUY", "SELL", Symbol of the stock, Dates, Transaction costs, and Starting value. The simulator then builds the portfolio returns

Private
mountains

SimpleRPM: Novel Algorithm for Ravens Progressive Matrices

  • Python, PIL

Ravens progressive matrices (RPM) is a cognitive test. This work develops a Knowledge-based AI Agent to solve the RPM problems using visual heuristics. There are three steps: re-representation - a global contractive transformation, followed by a prediction stage, and finally an optimization (matching) stage. It is one of the simplest agents and can be implemented in just 5 lines of code!

Check it out
mountains

Viola Jones Face Detection (with Boosting)

  • Python, OpenCV

Face detection was performed as described in the Viola-Jones paper. Haar features create representations for human faces while Boosting enhances the performance of the learner by concentrating on difficult samples.

Private
mountains

Optical Flow (Lucas Kanade) Algorithm

  • Python, OpenCV

Motion detection using the Lucas Kanade (LK) algorithm which is based on the least squares solution of NxN Optical flow equations. It is assumed that objects move slowly, however, for objects with more displacement, the Heirarchical LK performs better .

Private
mountains

Deep Neural Networks: Hyperparameters

  • Python, Keras, NumPy

Hyperparameters are very important for optimum performance of Deep learning models. These include: number of layers, number of units, dropout, momentum, epochs, batch-size, learning-rate. This work explores different values of these parameters and the corresponding performance on an MNIST-DNN model.

Private
mountains

Voice Trigger Detection

  • Python, Keras, GRU, Voice detection

Trigger word detection is the technology that allows devices like Samsung Bixby, Amazon Alexa, Google Home, Apple Siri, and Baidu DuerOS to wake up upon hearing a certain word. The model built uses 1-D convolutional layers, GRU layers, and dense layers on audio segments converted to spectrograms.

Private
mountains

SeaLion Classification

  • Matlab, Python, CNN

A computer vision algorithm is designed to classify sea lions from aerial images into the classes: adult males, sub adult males, adult females, juveniles and pup respectively. First, a high-resolution aerial image is cut into smaller images. Next, feature points are used to extract training samples for a Convolutional Neural Network

Check it out
mountains

Q-Learning for Bot Navigation

  • Python

The Model-free reinforcement Q-learning algorithm was programmed for navigating a simple maze. A Q-table is built based on immediate and discounted rewards using experience tuples as the bot interacts with the world.

Private
mountains

Color based Segmentation for Tracking Body Features

  • Python, NumPy, OpenCV

An image is converted to a HSV color space for color based segmentation. The system emphasizes body tones that can be used for tracking, AR applications and so on.

Check it out
mountains

Generating Yoruba names using RNN with Model feedback

  • RNN, ML, Sequence-to-Sequence learning, NLP

Reccurent Neural Networks (RNN) are excellent for sequence-to-sequence learning. In this cool project, they are used to generate Yoruba names in a closed-loop fashion with inspiration drawn from Control theory.

Private
mountains

Active Disturbance Rejection Controller for Quadrotor

  • Matlab, Simulink, S-Functions

ADRC uses an Extended state observer to linearize the Quadrotor's Nonlinear dynamics (similar to Feedback linearization). This makes it capable of eliminating disturbances (robustness).

Check it out
mountains

Implementing YOLO Object detection algorithm

  • Python, YOLO, Keras, Tensorflow

YOLO is a popular algorithm because it achieves high accuracy while also being able to run in real-time. This algorithm (you-) "only looks once" at the image in the sense that it requires only one forward propagation pass through the network to make predictions. After non-max suppression, it then outputs recognized objects together with the bounding boxes.

Private
mountains

Dinasour name generation using RNN

  • RNN, Sequence-to-Sequence learning, NLP

Recurrent Neural Networks (RNN) are excellent for sequence-to-sequence learning. In this interesting project, they are used to generate names for Dinosaurs.

Private
mountains

Deep Learning Neural Style Transfer

  • Python, Art-NST, Tensorflow

Neural Style Transfer (NST) is one of the un techniques in deep learning. It merges two images, namely, a "content" image (C) and a "style" image (S), to create a "generated" image (G). The generated image G combines the "content" of the image C with the "style" of image S.

Private
mountains

Facial Recognition (FaceNet)

  • Python, Keras, Tensorflow, Triplet Loss

Given two images, how can a bot tell if they are the same person (?). Due to variations in lighting, orientation of the person's face, even minor changes in head position, and so on, directly comparing pixel values won't work. Instead, learning an encoding gives more accurate judgements as to whether two pictures are of the same person.

Private
mountains

LMS-based Adaptive Active Disturbance rejection Controller

  • Matlab, LMS, ADRC, ESO

The altitude control of a quadrotor unmanned aerial vehicle is treated using its altitude dynamics in hover mode. An LMS-based Adaptive Active disturbance rejection control (AADRC) is proposed to compensate for undesirable effects resulting in smoother control.

Check it out
mountains

Hand-Sign Classification with ConvNets

  • Python, Tensorflow, CNN, Jupyter

The SIGNS dataset is a collection of 6 signs representing numbers from 0 to 5. A ConvNet was built with TensorFlow for solving this classification problem. Steps include: Creating placeholders, initializing parameters, forward propagation, computing cost, and then optimization.

Private
mountains

Jazz Improvisation with LSTM

  • Python, Keras, LSTM

Generating Jazz music with deep learning. An LSTM model is trained on random snippets of values taken from a much longer piece of music to learn the patterns of the jazz soloist. This would be used to synthesize new music.

Private
mountains

Creating Emojis

  • Python, Keras, LSTM

Word vector representations were used to build an Emojifier which automatically appends emojis to text: "Congratulations on the promotion! 👍. Lets get coffee and talk. ☕️ Love you! ❤️"

Private
mountains

Neural Machine Translation

  • Python, Keras, Bi-LSTM, Attention model, NVidia

A Neural Machine Translation (NMT) model is built to translate human readable dates ("25th of June, 2009") into machine readable dates ("2009-06-25") using an attention model, (one of the most sophisticated sequence to sequence models).

Private
mountains

Residual Networks on Hand-Sign Dataset

  • Python, Keras, ResNets

This work deals with very deep convolutional networks, using Residual Networks (ResNets). In theory, very deep networks can represent very complex functions; but in practice, they are hard to train (vanishing gradients). ResNets, introduced by He et al., allow training much deeper networks using the idea of skip-connections.

Private
mountains

Nonlinear Backstepping Control of Induction Motor

  • Matlab, Simulink, Motor, Lyapunov

Lyapunov-based based backstepping controller was developed to control an induction motor. Induction Motors are reliable, rugged and cheap. Main problem in control arises from: coupled highly nonlinear model, unavailability of certain parameters and time varying nature of some parameters.

Check it out
mountains

High Dynamic Range Imaging

  • Python, OpenCV

A HDR image is made by smartly combining multiple photographs of a scene at different exposures. It involves three main steps: Calibration, Radiance Map, and Tone Mapping. The Camera response curve is calculated in the first step, followed by a the computation of radiance map. Finally, correction of the color tones in the image is performed.

Private
mountains

Face Recognition with CNN

  • Python, Keras

FaceNet learns a neural network that encodes a face image into a vector of 128 numbers. By comparing two such vectors, an algorithm can determine if two pictures are of the same person. A triplet loss function was used on a pretrained model with encodings to perform face verification and face recognition

Private
mountains

Video Textures

  • Python, NumPy

Video textures are created through 3 steps. First is computing a similarity metric. Second is to compute the transition difference. Third involves finding and synthesizing recurrent loops

Private
mountains

Cat vs Non-cat classification with Deep Networks

  • Python, NumPy, PIL, SciPy

Classification of "Cat vs non-Cat" dataset using Deep neural networks. Compared to simple logistic regression, the DNN yields better classification accuracy. Performance of 70% with logistic regression, 72% with 2 layers, and 80% with a 4 layer network without tuning.

Check it out
mountains

Panoramas

  • Python, OpenCV

Using ORB feature detector, matched source and destination keypoints are used to calculate the homography transform between input images. The homography is then used to warp the images, which are finally blended together

Private
mountains

Image Blending using Gaussian Pyramids

  • Python, NumPy, Scipy, OpenCV

Implementing the paper "A multiresolution spline with application to image mosaics". A cool framework was developed to blend images using a predefined mask. This can be used for interesting image editing such as face swaps

Check it out
mountains

Seam Carving for Content-Aware Image Resizing

  • Python, OpenCV, NumPy, Dynamic Programming

Reproducing the paper "Content-aware image resizing" by Shai-Avidan et al. Using the seam carving algorithm, three images are subject to: (1) aspect ratio change by seam removal, (b) aspect ratio change by seam insertion, and (c) aspect ratio change by optimal retargeting.

Check it out
mountains

Mobile Phone Jammer using Extrinsic Noise

  • Hardware, Radio Frequency, 2G/3G, VCXO

Extrinsic noise is everywhere. Using a microphone and a Voltage controlled crystall oscillator, an RF circuit was built to jam cellular communications at the GSM band using destructive interference.

Check it out
mountains

Quadrotor Simulation with VREP

  • Lua, VREP

With Virtual Robot Experimentation Platform, a Quadrotor can be controlled using a dedicated controller such as PID in a Lua script. Quadrotor incorporates visual feedback to detect the desired landing spot.

Check it out
mountains

Backstepping Controller for Quadrotor

  • Matlab, Simulink, S-Functions

Backstepping is a Nonlinear controller based on Lyapunov functions. Four controllers are developed for the Altitude, Yaw, Pitch, and Roll attitudes of the quadrotor.

Check it out
mountains

Basic Image Processing Routines

  • Matlab

Basic algorithms in Image processing. Using Matlab code to explore different Edge detection algorithms and parameters.

Check it out