Reinforcement Learning with OpenAI Gym

Python project, TensorFlow.

In previous articles, we have explored different areas of computer vision using neural networks. Here, we will discuss a new area called Reinforcement Learning that uses neural networks to create agents capable of performing a task. This article describes several Reinforcement Learning techniques and shows how to build an agent capable of training in different OpenAI Gym environments.

Continue reading “Reinforcement Learning with OpenAI Gym”

Depth Estimation and 3D Mapping on Nvidia Jetson Nano

Python project.

The goal of this project is to build a robot capable of mapping its environment in a 3D simulation view. This article describes how to configure and use a Jetson Nano for a 3D mapping project where a neural network is used for depth estimation. The Jetson will also be connected to an Arduino Nano to get the gyro data from its IMU to project the depth values in a 3D world based on the orientation of the robot.

Continue reading “Depth Estimation and 3D Mapping on Nvidia Jetson Nano”

Style Transfer with VGG-16

Python project, TensorFlow.

This article will show how reuse the feature extractor of a model trained for object detection in a new model designed for style transfer. First, the domain of style transfer will be introduced, then, we will go further in the implementation. Finally, useful tools will be developed to visualize our results.

Continue reading “Style Transfer with VGG-16”

Image Segmentation: FCN-8 module and U-Net

Python project, TensorFlow.

First, this article will show how to reuse the feature extractor of a model trained for object detection for a new model designed for image segmentation. The three architectures FCN-32, FCN-16 and FCN-8 will be explained and the last one will be implemented. The U-Net architecture will also be developed. Finally, we will implement a parser to convert raw data to data used by segmentation models and we will train them on multiple classes.

Continue reading “Image Segmentation: FCN-8 module and U-Net”

MOT, TF model customization and distributed training

Python project, TensorFlow.

First, this article will describe how to convert a simple object detector to Multi-Object Tracking (MOT) capable of keeping identities to follow subjects along a sequence. Second, it will show how to customize and retrain a model from TensorFlow Object Detection API. Contrary to the previous article, we will parse the VOC2012 dataset with modern methods instead of implementing our own parser from scratch. We will also distribute the training on multiple GPUs.

Continue reading “MOT, TF model customization and distributed training”

SSD300 implementation

Python project, TensorFlow.

This article describes how to implement a Deep Learning algorithm for object detection, following the Single Shot Detector architecture. It explains the implementation of the VGG16 backbone network, the SSD cone, the default box principle and the convolutions used to predict the box classes and to regress the offsets for their location. Finally, how to convert the .xml annotations to data used by such a network for training.

Continue reading “SSD300 implementation”

Neural Network from scratch: Part 4; control a drone with hand signals

Python project.

This article shows how to build a dataset for a specific task and train a neural network through the homemade Deep Learning framework implemented in the previous articles. This neural network will allow controlling a drone with hand signals.

We will create a dataset of hand signals, train several neural networks on it and convert their outputs to commands. The full pipeline will be connected to an Anafi drone to control it through an USB camera.

Continue reading “Neural Network from scratch: Part 4; control a drone with hand signals”

Neural Network from scratch: Part 3; Deep Learning Framework Implementation

Python project.

This article describes, step by step, how to implement a Deep Learning Framework from scratch using only the numpy library. It will show how to implement Convolution, Flatten, Max and Mean Pooling layers. It will also explain how to implement features such as: saving and loading a model to deploy it somewhere, getting its number of parameters, drawing learning curves, printing its description.

Continue reading “Neural Network from scratch: Part 3; Deep Learning Framework Implementation”

Neural Network from scratch: Part 2; FCN implementation

Python project.

This article describes, step by step, how to implement a fully-connected neural network from scratch using only the numpy library. First, it shows how to create a set of non-linearly separable data, and then, how to implement a neural network. Finally, it will explain how to train such a network.

Continue reading “Neural Network from scratch: Part 2; FCN implementation”

Data Aug. and Generative auto-encoder

Python project, Tensorflow.

This article shows how to get familiar with Tensorflow and how to use its great tool TensorBoard.

We will train a CNN on the MNIST dataset with few samples and show how to artificially increase our dataset (rotation, zoom, contrast, etc) to improve its accuracy. Then, we will explain how to implement a generative autoencoder to “dream up” new digits to improve our accuracy on real digits.

Continue reading “Data Aug. and Generative auto-encoder”