A Mitosis is a pretty rare phenomenon and and when its size is compared to the size of the breast cancer histology images, we are able to see why it is a needle in a haystack kind of a problem. Add to that the varied shapes it occurs in, it becomes even more challenging. We started with the Theano library and implemented a CNN model which was derived from the state of the art paper having the same title. Since, it did not work well because of the skewed data set, we tried to use Stain Segmentation [ Work of Abhishek Vahadne and team at IITG]. It had little to no effect on the accuracy of our results. We finally found out in January, 2016 that our network had the problem of dead weights due to random initialization. This was only possible because the CS231N lectures came out in December, 2015 and I used to follow them. We were very lucky that this problem was discussed in CVPR 2015 and therefore it was mentioned in the Stanford lectures. We also incorporated some other newer learning rules like AdaGrad and Adam update, which helped us omit tuning the learning rate. After this our model worked and we were able to achieve the results with a single CNN, where as the original paper used 2 cascaded CNNs. The F-score calculated for pixel classification was 0.51, with 0.42 precision and 0.63 Recall.
I started by reading research papers to understand what type of classifier would be required for the problem. After reading a few papers, I picked a then state of the art paper from 2013 with the title Joint Deep Learning for Pedestrian Detection. I learned about the challenges related to Object Detection, in particular, about Deformation and Occlusion Handling. The objective was to detect a pedestrian in a given window and the novelty of the paper was to learn all the parameters related to feature extraction, deformation & occlusion handling, and the classifier simultaneously, whereas these were obtained separately in the previous approaches. What was interesting about the approach was that the filters in the second layer were of different sizes to account for the different parts and their occlusion statuses. In the next layer, a deformation model was learned based on the quadratic constraint of deformation, which added the weighted sum of deformation maps to the part detection matrices obtained from the second layer, and then the result was max-pooled to get a Part score. 20 Parts were divided into 3 levels, consisting of arms & legs (level I), torso(level II), one half of the body(level III), etc. Since, the parts at a lower level are related to parts at the higher level, for example, hands are part of the torso, Visibility and Classification of the parts was modeled keeping this in mind. Therefore, parameters from lower levels also contributed to the detection of objects at higher levels. A sigmoid function was used as an activation function in the classification model. The learning was done by Back Propagating the error obtained on the log loss.
Designed and made a Robotic arm in my Sophomore Year with my friends, Ayush and Rahul. The design was made on Google SketchUp. The robot for made for a competition in Inter Hostel Technical Festival of IITG, Kriti. The bot was needed to clamp objects in an arena and then drop them in bins. Ayush and I, worked on the robot's hardware and construction, while Rahul helped us code the equations on the Arduino environment. We calculated the maximum torque at each joint, so that the robot could be optimally designed. We used an Arduino board for programming the Servo motors and the commands for movement were sent from the laptop through a USB connection. I solved for the equations for the compound movements, i.e., left key would move the bot by how much at each joint. This helped us write exact equations for each servo. Ayush worked on the clamp and Rahul came up with the solution for avoinding an Enter key after every command so that the bot was easy to use. The bot worked really well and was the best designed bot at the competition. But, we still got kicked out. And that's a story for another day!
The main objective was to make a robot that had the gait of a snake and can be wirelessly controlled. As students, we had the idea of microcontrollers, motors, and mechanics etc., but it was difficult to zero in on a design. We considered many elaborate designs but rejected them due to the time constraint of three months. We ended up pursuing the Joint and Edge model, where a sinusoidal wave is transmitted through the connections. When a time delayed sine wave was applied to the joints, it created motion in the forward direction, somewhat similar to how we use roller-skates. The work was divided into categories such as design, procurement of materials, manufacturing of parts, software implementation, and establishing wireless communication. The wireless communication was done using WiFi Direct on ZigBee. I worked on the design, software implementation, and on assembling the robot. I wrote the code using the Arduino IDE, for which I learnt Object Oriented Programming, which helped me write a compact and reusable code. The robot had forward, backward, and turning movement commands which were implemented using the Servo library. The input was received on the ZigBee which transmitted it to the Arduino board. The chassis and joints were also made by the team from Aluminium sheets. We decided to attach passive wheels for smoothness, but we were unable to get the right clips for attaching the wheels. So, I stepped in to learn Grinding at the Mechanical workshop, and then made all the joint clips by working at the machine. This made me appreciate what Mechanical Engineers did and how the tools and machines help us sculpt things that we imagine. We then assembled the whole robot complete with circuit connections and after a few trials, it worked.