I have a Bachelors degree in Mechanical Engineering and a Masters degree in Robotics - Artificial Intelligence. One degree helps me answer a few things I observe in the physical world, but the other just makes me ask philosophical questions.
The challenge was to classify the driver's behavior based on images from dashboard cameras monitoring the driver�s attentiveness. The dataset consisted of more than 100,000 dashboard camera images, categorized into 10 categories.
Used caffe to train deep neural networks to detect and classify images of distracted drivers. Trained models with pertained AlexNet, NIN, GoogLeNet, VGG, with slight variations as well. Iteratively improve models; evaluate models, analyse results, make changes, repeat the process. Document results of the various models, come up with theories as to why it works/doesn't , then change the architecture of the network to improve performance. Used a classical method of image classification (HOG-SVM) as the base line.
State Farm Distracted Driver Detection, Competition PageThe challenge was to predict in which country a new user will make their first booking.
Replaced the missing values and erroneous data with statistically meaningful values. Employed a novel sampling strategy, after clustering data using MATLAB self organizing maps. Engineered 50 meaningful features from more than 450 features contained in more than 10 million records. Trained and evaluated models using r packages like GBM and Random Forest. Achieved a score of 0.87427 (Best 0.88210)
Airbnb New User Bookings, Competition PageDeveloped a blind spot warning system on Jetson Embedded development kit. Camera connected to the dev board captures images using opencv framework. Fine-tuned AlexNet caffe model to classify images of cars vs other objects.
Extracts image features using pre-trained Convolution Neural Networks
(AlexNet layer 6 output). Trained an SVM on these features to detect and
classify the Stop, Yield and Warning signs. Explored PCA, SVD and MDS for
dimensionality reduction, but finally SVM was trained without dimensionality
reduction because of the superior performance of raw data.
Used VATIC, an open source video annotation tool, for labeling the Traffic
Signs in video clips.
Achieved a very low false negative rate of 2% and classification accuracy
of 78%.
Implemented the system for the android platform using DeepBeliefSDK and
libSVM. Used java apis for multithreading; Executors, synchronization blocks,
Locks and Latches, to achieve high level of concurrency to make the system
real-time.
Designed and fabricated a delta arm and end-effector attachments for a quadcopter. A state machine was implement on the BeagleBone using C/C++, to autonomously pick-up/drop-off the ping pong ball, when the quardcopter was in range of the target. The BeagleBone black controlled the servo motors to move the arm around. And the IMU and pixy camera localizes the drone�s position relative to the target with the help of color coded markers.
Performed the camera calibration using, camera suit (by april labs). Projected the LIDAR points onto the image, after distorting the points using the camera calibration values. Rendered the MAEBot's temporal position elative to the environment using the IMU and 2D LIDAR data.
Programmed a 4-DOF arm to autonomously navigate using Probabilistic RoadMap and Potential Field. An overhead camera was used as the vision system, and implemented template matching algorithm along with non-maxima suppression for detecting targets and obstacles.
Stock trading agents were trained on the NIFTY 50, a well diversified 50 stocks accounting for 22 sectors of the Indian economy.
Genetic algorithm was used to find optimal set of indicators and rules for a long term (controlled by fitness function) trading strategy. Indicators are weighted averages over different time periods (weekly, bimonthly, monthly, quarterly, biennially, annually) and their different rate of changes (d/dt, d 2/dt 2,…). Buying and selling strategies are optimized separately. Given the input on a particular day the agents suggests buy/hold or sell/hold.
The reinforcement learning algorithm learns the amount of acceleration and braking required by the simulated vehicle to follow the fastest path (Racing Line) out of a corner. Implemented a real-time sample efficient reinforcement learning algorithm in C++. Used Random forest trees and Monte Carlo tree searches for sample efficiency and real-time processing
For the first part of the project, the path of a Ping-Pong ball was captured in the real word using MS Kinect. openCV implementations of color filtering and Hough Circles were used for detection, to locate the initial position of the ball. A variation of the Lucas-Kanade algorithm was implemented for tracking the ball. To approximate the current and future positions of the ball, the physics (equations of motions) of the ball was also taken into account. All the above functionality was implemented in C++.
For the second part of the project we model a 4-DOF robotic arm and compare two approaches to catching an object thrown at a manipulator. The first approach is a simple and fairly intuitive algorithm where the robot aims at intercepting the object trajectory with its end-effector. The second approach tries to follow the projectile before finally catching it, this mimic how humans catch an object. The motion of the arm was simulated using Matlab/Simulink and SolidWorks was used for designing the arm.
Two different cam profiles for the intake port; stock cam and a high performance
cam. High performance cam profile keeps the intake port open for a longer
duration during the intake cycle. A controller switches to the high performance
cam at higher rpm.
Realized power gains up to 8% in simulation. Implemented the design on
a Royal Enfield Bullet 350cc engine.
The engine delivers more power when needed (at higher rpm) using the high
performance cam, but the fuel efficiency at normal running speed is not
affected as it uses the standard cam.