Open set domain adaptation
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
features Last port pritvate to public repo. Need to fix wrong opt supervised o… Sep 18, 2017

(Open Set) Domain Adaptation for image classification tasks

ICCV'17 paper at:

-> Tested on Matlab 2013b - Windows 7 -> Caffe binaries compiled on Visual Studio 2013 / Matlab 2013b (please, use your own binaries or pre-computed features -> Included version of OPTI toolbox should be upgraded for Matlab 2015: Start the classification task:

  • main.m (start program)
  • Run_DA.m (script to run several experiments at once)

Modify parameters:

  • InputParameters.m
    • isDA = true, activates domain adaptation
    • isOpenset = true, activates open set protocol. Otherwise, (standard) closed set
    • "ATI" is our developed method
    • numSrcClusters must contain the same number as classes or viewpoints, so "ATI" works: Saenko = 10, Office = 31, Viewpoints = 8, 16, 24, 36, ... For the open set protocol, count shared classes + 1 (unknown class)
    • isMidResultsDA = true, To visualise additional results in the optimisation process of ATI


  • For image classification: Saenko, Office and Sentiment datasets are standard evaluation datasets, select the same class in InputParameters.m ("sourceDataset" and "targetDataset") and then update accordingly "source" and "target" options within their classes to change the different domains. Better with CNN-fc7 features:
  • For viewpoint refinement/estimation: Synthetic data as "sourceDataset" and EPFL, ObjectCat3D, Pascal3D and Imagenet3D as "targetDataset" in InputParameters.m. Better with features that preserve layout information: CNN-pool5 or HOG.

Important files:

  • step_Classification.m
  • DA_ATI.m
  • computeCorrespondences.m


  • files with (el) compute the mean accuracy among all test data elements/instances.
  • files with (pr) compute the mean of all class mean accuracies. -> used in the paper

Protocol of random splits:

  • In matlab using "ranperm" function and previously: rng(seedRand), where "seedRand = [1,2,3,4,5]"

for any question, please contact me:,