Machine Learning Intern Journal — Baby Steps
As the title indicates, this is the journal of a Machine Learning (ML) intern at the impactIA Foundation. I’ll be attempting to keep a weekly journal of my activities in the Foundation to keep track of my progress and leave a roadmap for the interns who come after me.
My second week at impactIA was split between furthering my work on DAI (the dancing robot) and beginning to familiarise myself with the Foundation’s aiXlr8 (accelerate) project.
Firstly, I managed to make some concrete progress on the handling of the Jetson Nano. Having implemented a simple image classification network as well as an object detection network (using the excellent Hello AI World tutorial), I’m starting to grasp the necessary tools to write and run programs from the command line while using realtime video streams. I have begun implementing a pose detection network (using this tutorial), however the base code I’m using is written in a Jupyter Notebook format and uses ipywidgets to display the output video stream, so I am currently updating the code to instead broadcast the output video stream to a localhost browser. I’m sure other errors will pop up after I fix this one, but we are making steady progress. Furthermore, I need to figure out how to run these networks on two realtime video streams — let me explain. DAI’s main body frame is square shaped, therefore made up of 6 sides. Each side is equipped with an outward facing camera, and three Jetson Nano are responsible for processing a pair of camera streams.
Secondly, I begun working on the Foundation’s aiXlr8 project. This project consists of the Foundation helping and advising SMEs (Small-Medium Enterprises) and individuals on how to integrate AI solutions into their businesses with a sustainable vision. The first project I’ve been assigned is that of a company wanting to automate their quality control on the manufacturing line. Currently, the job is assigned to a person picking up each drill bit (drill head) to check if there are any faults on the teeth (the tip of the drill head is made up of three teeth). This is a very repetitive and tiresome job, therefore prone to errors, which we’d like to automate so that the person can be of better use to the company. Therefore, the first step is to collect and prepare training data for our network. The company provided us with very few photos (~100) which need to be labelled so that the network can begin to be trained. For labelling, we are using an open-source tool created by Microsoft called VoTT (Visual Object Tagging Tool). To cater for another one of the Foundation’s project (which I will discuss another week), I was asked to create a tutorial to teach people how to use VoTT for image labelling. This was an exciting challenge, since VoTT was completely new to me, and I’d never labelled images before! Drawing inspiration from Jacob Solawetz’s brilliant tutorial, I built up my own (in French) — this took up most of my week.
Currently, we have two networks working on this computer vision problem. One is tasked with detecting the teeth in each image, and the second classifies each teeth as defective or non-defective. The low number of training images makes this a difficult task, however we are exploring various options to work with the data we have. Such workarounds include data augmentation (using Albumentations, for example), using (if it exists) a pre-exisiting network trained on mechanical datasets instead of generic datasets like ImageNet or even using GANs (Generative Adversarial Networks) to create new images for the dataset.
Exciting challenges on multiple fronts await for the upcoming weeks!