Skip to content
Invariant Information Clustering for Unsupervised Image Classification and Segmentation
Python Yacc Shell
Branch: master
Clone or download
Latest commit 00189c2 Aug 7, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
code correct head order in segmentation script Jul 4, 2019
datasets reword Mar 29, 2019
examples adding script output for selecting sub-head by lowest loss Jun 11, 2019
paper updating supplementary material and evaluation options Apr 1, 2019
.gitignore Initial commit Mar 27, 2019
LICENSE Initial commit Mar 27, 2019 Update Aug 7, 2019
package_versions.txt updated packages used Apr 4, 2019

Invariant Information Clustering for Unsupervised Image Classification and Segmentation

This repository contains PyTorch code for the IIC paper.

Accepted and will be shown at ICCV 2019.

IIC is an unsupervised clustering objective that trains neural networks into image classifiers and segmenters without labels, with state-of-the-art semantic accuracy.

We set 9 new state-of-the-art records on unsupervised STL10 (unsupervised variant of ImageNet), CIFAR10, CIFAR20, MNIST, COCO-Stuff-3, COCO-Stuff, Potsdam-3, Potsdam, and supervised/semisupervised STL. For example:


Commands used to train the models in the paper here. There you can also find the flag to turn on prediction drawing for MNIST:


How to download all our trained models here.

How to set up the segmentation datasets here.

Package dependencies

Listed here. You may want to use e.g. virtualenv to isolate the environment. It's an easy way to install package versions specific to the repository that won't affect the rest of the system.

Running on your own dataset

You can either plug our loss (paper fig. 4, here and here) into your own code, or change scripts in this codebase. Auxiliary overclustering makes a large difference (paper table 2) and is easy to implement, so it's strongly recommend even if you are using your own code; the others settings are less important. To edit existing scripts to use different datasets see here.


There are various forks of the main repository. In general I have not verified the code or performance, but check them out as someone may be working with versions of interest to you. For example:

You can’t perform that action at this time.