This repository contains the codes of the following paper
BB Damodaran, B Kellenberger, R Flamary, D Tuia, N Courty, "DeepJDOT:Deep Joint Distribution Optimal Transport for Unsupervised Domain Adaptation", in European Conference on Computer Vision 2018 (ECCV-2018).
In order to run, the code requires the following Python modules:
- POT (Python Optimal Transport library)
- keras with tensorflow backend (preferably GPU version)
- imutils (only for rotating images in regression demo)
- scikit-learn (for scoring functions)
- Deepjdot - module contains the implementation of the DeepJDOT
- dnn - import necessary functions from keras
- deepjdot_demo - DeepJDOT on the sample dataset
- deepjdot_svhn_mnist - DeepJDOT on SVHN & MNIST dataset
To run the DeepJDOT on the sample 2D dataset, please see or run the "deepjdot_demo.py".
To run on the real data set: SVHN --> MNIST, please see "deepjdot_svhn_mnist.py".
The default task is to do classification but you can turn on regression demo by setting
If you do not want to wait long training time you can set
For regression demo, each image will be randomly rotated around its center, and then the label will be the angle rotated. The angle will be scaled to [0, 1]. The model needs to predict how much the image is rotated.
I suggest you run the demo files inside
Spyder or any interactive python IDE so that you can investigate
each cell denoted by
#%% lines and understand the code better.