header image
Home arrow Tutorial Aera arrow My Teaching and Tutorials
My Teaching and Tutorials PDF Print E-mail
Teaching and Tutorial
Written by Romain Raveaux   
Mar 05, 2009 at 10:49 AM
Here is a description of the subjects I have taught so far. Teaching material I have designed myself can be downloaded and re-used freely.

I am a teacher at Polytech’Tours engineering school of the university of Tours.
  • Networking: 127 h per year (Level L3) from 2013 to 2019.
  • Mobile programming: 36 h per year (Level M2) from 2013 to 2019.
  • Multimedia systems: 18 h per year (Level M2) from 2013 to 2019.
  • Python and data science: 38 h per year (Level L2) from 2016 to 2019.
  • System programming: 12 h per year (Level L3) shell, fork, shared memory, pthread, semaphore. From 2012 to 2014.
  • Pattern recognition: 8h per year (Level M2) from 2015 to 2017.
  • Industrial Networking: 12h per year. CAN protocol (Level M1) from 2015 to 2017.
  • C for microcontroller: 10h per year (Level M1) from 2015 to 2017.

From Kantorovitch Problem to Linear Sum Assignment Problem

The goal of this technical report is to detail the link between the Linear Sum Assignment Problem (LSAP) and the Kantorovitch Problem (KP) also called Optimal Transport. PDF

Graph Neural Network: a course and a notebook

Goals :
  • An illustration of Graph Neural Networks for graph classification
  • A toy application to Letter classification
  • A simple Graph Neural Network from Scratch (only with PyTorch and Networkx)


  • Introduction to supervised Machine Learning: A probabilistic introduction. PDF slides
  • Connecting local models : The case of chains PDF slides
  • Graph Neural Networks. PDF slides
  • The tutorial can be found here. HTML Notebook

A learning graph matching method based on integer linear programming

Goals :
  • An introduction to Learning Graph Matching.
  • The graph matching problem is defined
  • An integer linear program is presented
  • A solver based on the integer linear program is implemented
  • Integration of a combinatorial solver into a deep learning architecture.
  • Backpropagation through a combinatorial solver is presented.
  • An application to key point image matching is proposed.
  • Code in Python base PyTorch Numpy, Matplotlib and Gurobi is proposed through a Jupyter Notebook.
The tutorial can be found here. HTML Notebook

No Graph Matching Solver

With Graph Matching Solver


A follow-up tutorial entitled "A Graph Neural Network from Scratch for semantic image segmentation".
Goals :
  • An illustration of Graph Neural Network for node classification
  • A toy application to skin detection
  • A simple Graph Neural Network from Scratch (only with PyTorch and Networkx)
  • The tutorial can be found here. HTML Notebook


A follow-up tutorial entitled "A Graph Neural Network (GNN) from Scratch for semi-supervised learning".
Goals :
  • An illustration of GNN for semi-supervised learning
  • A toy applicaion to community detection
  • A lecture on Structured Machine Learning
  • A simple Graph Neural Network from Scratch (only with PyTorch and Networkx)
  • The tutorial can be found here. HTML Notebook
Supervised classification : Unsupervised classification : Semi-supervised classification :

Hidden Markov Model (HMM) for Named-Entity Recognition (NER)

Goals :
  • A presentation of HMM
  • Formal definitions on inference and learning with HMM
  • An application Named-Entity Recognition (NER)


  • Introduction to supervised Machine Learning: A probabilistic introduction. PDF slides
  • Connecting local models : The case of chains PDF slides
  • The tutorial can be found here. HTML Notebook


Markov Random Field : A simple application to de-noising image

The application of undirected graphs using an example of noise removal from a binary image and gray image. Goals :
  • An introduction to probabilistic graphical models.
  • An application to Image Denoising.


  • Introduction to supervised Machine Learning: A probabilistic introduction. PDF slides
  • Connecting local models : The case of chains PDF slides
  • Connecting local models : Beyond chains and trees.PDF slides
  • The tutorial can be found here. HTML Notebook


Transfer Learning for object classification with an integration to an Android application

Goals :
  • Transfer learning: Fine tuning of MobileNet
  • Integration an android application for custom object classification
  • Speed comparison can be made according to computation device : CPU, GPU and NPU
The tutorial can be found here. PDF

A graph matching method based on the leading Eigen vector and Sinkhorn-Knopp algorithm

Goals :
  • An introduction to Graph Matching.
  • The graph matching problem is defined
  • A relaxed version of the graph matching problem is defined
  • A solver based on the leading eigenvector is defined
  • The obtained solution is refined by adding node-to-node constraints thanks to the Sinkhorn-Knopp algorithm
  • An application to Letter matching is proposed.
  • Code in Python base Numpy and Matplotlib is proposed through a Jupyter Notebook.
The tutorial can be found here. HTML Notebook

A graph matching method based on Integer Linear Programming

Goals :
  • An introduction to Graph Matching.
  • The graph matching problem is defined
  • An integer linear program is presented
  • A solver based on the integer linear program is implemented
  • An application to Letter matching is proposed.
  • Code in Python base Numpy, Matplotlib and Gurobi is proposed through a Jupyter Notebook.
The tutorial can be found here. HTML Notebook

Reinforcement Learning by Q-Learning

Goals :
  • An introduction to Q-Learning.
  • An application to train a robot to escape a maze.
  • Code in Python base Numpy and Matplotlib.
The tutorial can be found here. HTML Notebook Another tutorial with an application to Sticks Game :
  • An introduction to Q-Learning.
  • An application to sticks game.
  • Code in Python base Numpy and Matplotlib.
The tutorial can be found here. HTML Notebook Another tutorial with an application to the Connect Four Game :
  • An introduction to Q-Learning.
  • An application to Connect Four game.
  • Code in Python base Numpy and Matplotlib.
  • We explain the limitation of the Q-learning method.
  • We draw conclusion on the solution based on Deep Reinforcement learning
The tutorial can be found here. HTML Notebook

The language of probability for machine learning: An application to skin detection thanks to the Naive bayes classifier

Goals :
  • An introduction to probability and the bayes' rule.
  • An introduction to fitting probability models: Maximum likelihood, Maximum a posteriori.
  • An introduction to generative and discriminative models.
  • Introduction to supervised Machine Learning: A probabilistic introduction. PDF slides
  • Connecting local models : The case of chains PDF slides
  • Connecting local models : Beyond chains and trees.PDF slides
A first tutorial can be found here. HTML Notebook
A second tutorial can be found here with a new dataset and an extension to local dependence. HTML Notebook

Simulation of self driving car

The material is there Code and Data
Simulation of Self Driving Car based on Thibault Neveu's tutorial (https://www.youtube.com/watch?v=JogUFFcfIYg&t=2118s). However, the prediction model has been adapted to fit the objective of an academic course. Especially, students have to develop from A to Z the learning algorithm (Stochastic Gradient Descent) and the prediction method (linear regression model)).
Why the least square errors ?? Slide Linear regression example on house prices

# Gradient Descent : Momentum, RMSProp and ADAM

Gradient descent is an algorithm to find the parameters of a model. The gradient on its own can be a noisy. It means it changes a lot at each iteration. In order to get a clear trend on the gradient values, it is possible to make it smoother. This is where Momentum, RMSProp and ADAM appear. The Notebook is there

Overfitting phenomenon of the maximum likelihood

A word about the variance (biased or not) The Notebook is there


Pedestrian image classification (in french)

When the cross entropy makes the problem convex !!!
Slide
HTML version of the notebook can be found here. HTML Notebook

Minimizing the cross entropy : a nice trip from Maximum likelihood to Kullback–Leibler divergence

In this notebook,
  • We show that minimizing the cross entropy is equivalent to maximizing the likelihood in case of discriminative models.
  • We show that minimizing the cross entropy is equivalent to minimizing the Kullback–Leibler divergence
  • We show that the cross entropy loss makes the logistic regression problem convex
  • We present an application to cats and dogs image classification

HTML version of the notebook can be found here. HTML Notebook

Gaussian Mixture and Expectation Maximization algorithm

An illustration of fitting a data set with a Gaussian mixture The Notebook is there


Minimizing the least squares error with quadratic regularization : but why

In this Notebook,
  • we show that minimizing the least squares error in a regression context is related to a Gaussian assumption of the error distribution
  • we also show that $L2$ regularization appears under an assumption of Gaussian distribution of the parameters and a Baysian treatment
  • We show that maximizing the posterior distribution is equivalent to minimizing the regularized sum-of-squares error function with a quadratic regularizer
The Notebook is there

Maximizing the margin : Support Vector Machines

Often in machine learning, we introducce a parametrized distribution and we search the parameters that maximizee the likelihood over some data. This can be equivalent to minimize an error function defined on the data (mean square error, mean cross entropy). In this notebook, we describe the Support Vector Machines (SVM) Problem. Previously we have seen that many loss functions in machine learning are related to Maximum Likelihood. See :
  • Minimizing the cross entropy : a nice trip from Maximum likelihood to Kullback–Leibler divergence (http://romain.raveaux.free.fr/document/CrossEntropy.html)
  • Overfitting phenomenon of the maximum likelihood (http://romain.raveaux.free.fr/document/Overfittingbiaisedandunbiaisedvariance.html)
  • Gaussian Mixture and Expectation Maximization algorithm (http://romain.raveaux.free.fr/document/GaussianMixtureandExpectationMaximization.html)
  • Relation between the least squares error the Maximum Likelihood (http://romain.raveaux.free.fr/document/LeastSquaresError.html)
The maximum likelihood can suffer from a severe over fitting phenomenon, for instance:
  • A data set is not well fitted by Gaussian models (under estimation of the variance)
  • In Gaussian mixture models, a Gaussian distribution can be fitted to a single data point
We have showed that the maximum likelihood can be equivalent to minimize an average error on a given data set (mean square error, mean cross entropy). But instead of minimizing a mean error, would it be more interesting to minimize the largest error? Would it offer a better generalization property.... This is where the idea of maximizing the margin comes from .... The Notebook is there

My Ray Casting Tutorial

Goals :
  • This is a ray casting tutorial.
  • The goal is to understand what is "ray casting" along with some piece of code (HTM5/Java Script).
  • Latter, we want to use this technique to render a work site or a school.
  • This tutorial serves as a basis for student projects.
  • Ray-casting is a pseudo 3-dimensional rendering technique that are very popular in game development arena in the 90s. Although ray-casting has been supplanted by newer and more powerful techniques (and hardware!), the reader can hopefully still benefit from the technique. Ray-casting sensation began with the release of a game, Wolfenstein 3D (iD Software), in 1992. In Wolfenstein 3D, the player is placed on a three dimensional maze-like environment, where he/she must find an exit while battling multiple opponents. Wolfenstein 3D becomes an instant classic for its fast and smooth animation. What enables this kind of animation is an innovative approach to three dimensional rendering known as “ray-casting.” Wolfenstein 3D was developed and created by Id Software. Henceforth, Id’s programmer, John Carmack, might well be the person who initiates the ray-casting sensation.

    Ray-casting is a technique that transform a limited form of data (a very simplified map or floor plan) into a 3D projection by tracing rays from the view point into the viewing volume.



  • The tutorial can be found here. HTML


Helicoptere simulation

Video from the press

Graph in Pattern Recognition

Introduction PDF
Computer vision and Graph-based representation : PDF
Pattern recognition problems : PDF
Graph matching problems : PDF
Graph matching formulations : PDF
Graph matching methods : PDF
Graph embedding problems : PDF
Graph embedding methods : PDF
Booklet : PDF
Illustrations : PDF

Operating System Programing

Lecture : CM
TP1: TP1
TP2: TP2
TP3: TP3
TP4: TP4
TP5: TP5
TP6: TP6

Controller Area Network (CAN)

Lecture : CM
TD: TD
TP : TP

Android

Courses : Introduction and operating system layers Download

Practical work (labs) on "Android Getting Started" is available : Download TP1. It presents different components of the SDK : DDMS, ADB, Eclipse ADT, ....

Android : Communication between Activities Practical work (labs) on passing and exchanging objects between activities are proposed. The main purpose is to understand how two different processes can communicate between them. Download TP2

Android : Local Services (Listener and Binder ) Practical work (labs) on Local Services are proposed. Services are tasks running in background. Such powerful concept lead us to the definition of Binders and Listeners. Binders are used to retrieve an instance of the running service while Listeners listen to data changes aiming at the GUI update. Download TP3

Android : Video in Android using C/C++ code Practical work (labs) on processing video frames using pure JAVA code and mixed C++/JAVA code are available. It aims at comparing application performances with and wihtout native code when dealing with video preview in Android. Download TP4 and Download TP5

Android : Content Provider Practical work (labs) on creating SQLLite databases and sharing data between applications by ContentProvider. Download TP6

Android : Communication between Services (BroadCast Receiver) Practical work (labs) on communication between two services through the use of Broadcast Receiver. Download TP7

Android : Read/Write XML files Practical work (labs) on parsing and writing XML files using DOM API. Download TD

Android : Treasure Hunt Practical work (labs) on realizing a full application : Treasure Hunt. Specifications DTD XML MAP



Practical work (labs) on Geolocalisation and Yelo Stations in the city of La Rochelle Download TD2 and Download TD3
Download TD4 : GPS Tracking
Canal_de_Marans.gpx
Download TD5 : Google Maps API V2

Script Windows And Linux

Goals and Organization
Intro Script Linux Lecture
Appendix Script Linux
Script Windows Lecture
Appendix Script Windows
Android layers
Practical Work on Windows Script (TP1)
Practical Work on Windows Script (TP1 Extended)
Practical Work on Linux Script (TP2)

Networking

Courses : IP filtering and NAT.Download

Networking a practical overview.TP1 : Download

Network Simulation and Routing TP2 : Download

Practical lab : IP and route TP3 : Download

Practical lab : Apache configuration TP4 : Download


Network supervision (Nagios).Download

Statistics

I led the talk about statistics. (Level: Master Degree 1st year). I created teaching material for that purposes.
  • Courses can be found here : Principal Component Analysis (PCA) and Correspondence Factor Analysis (CFA). PCA CFA
  • Practical exercices I made can be downloaded here : TD1(PCA) and TD2(CFA).PCA exercices CFA exercices

Image and Ontology

Here are lectures I gave to Master degree students. This teaching material is dealing with Image and Ontology. More precisely, how to classify regions using an ontology reasoner. You are kindly encourage to can ask for the code source. I dont bite ;-).

Computer Vision

More information about it (on the way....)
Last Updated ( Oct 10, 2022 at 09:19 AM )