Iris Recognition open-source codes

I remember back to the day when I started my PhD on iris recognition, there was only one iris recognition open source code from Libor Masek. His source code, written in Matlab, has been the baseline for generations of iris recognition coders. Recently there are a number of new open source codes come up. They are more mature and achieve close to state-of-the-art accuracy. I summarise them in a list here for your reference.

  Year/ Language Approach Performance (EER)
ICE 2005 MBGC portal CASIA
Libor Masek [project] 2003


Hough Circle + 1D Log-Gabor
OSIRIS 4.1 [project] 2013


Least square Circle + 2D Gabor 1.09%
VASIR 2.2 [project] 2013


Circle + 2D Gabor 3.5% 13.9% best quality frame

30.6% all frames

NonidealIRIS [project] 2006


Ellipse +  2D Gabor





1D Log Gabor/

2D Gabor/








Crypts features

3.58% 1.39%
Iris segmentation only
IrisSeg [project] 2016


ICB 2016 IrisSeg: A Fast and Robust Iris Segmentation Framework for Non-Ideal Iris Images




Total-variation ICCV 2015 An Accurate Iris Segmentation Framework under Relaxed Imaging Constraints using Total Variation Model




Geodesic Active Contours and GrabCut PSIVT 2015 Iris Segmentation using Geodesic Active Contours and GrabCut

Iris datasets to consider:

Dataset   Number of


Number of


Spectrum Note
CASIA CASIA-Iris-Thousand 10,000 20,000 NIR  
CASIA-Iris-Interval       Time lapse
CASIA-Iris-Twins 100     Twin
CASIA-Iris-Distance       At a distance
CASIA-Iris-Syn 1000 10,000   Synthesis
ND ND-IRIS-0405 356 64,980 NIR  
ND-GFI       Gender
NDCLD15 750 males

750 females

3000 NIR Contact Lens
ND-CrossSensor-Iris-2013 676 29,986 from LG4000 and 116,564 from LG2200 NIR Cross Sensor
ND-TimeLapseIris-2012 23 6797   Time lapse 2004 to 2008
ND-Iris-Template-Aging-2008-2010   11,776   Time lapse 2008 to 2010
MBGC       NIR & NIR videos One the move


UBIRIS   261 11,102 Visible On the move

At a distance




There is a website selling a number of iris recognition source codes based on different methods including Neural Networks, DCT, LBP, DFT and Genetics. All codes are on Matlab. I have not bought any to try out, but from their demonstration, it looks like the codes are just for demonstration, i.e. the accuracy is not the priority. Check it out to have a clear idea: or

I know there are other source codes available out there. Let me know if you know any ones that are of interest to the iris recognition community.

Deep Learning with Caffe & Matlab

Setup Caffe for use with Matlab

Install Caffe here

To use Caffe in Matlab, other than the installation steps in the above link, you need to compile Caffe for Matlab purpose:

  • First, uncomment the line containing MATLAB_DIR in the Makefile.config in the /caffe folder. Update the path to the bin folder of the Matlab installed in the machine. The path is usually in /usr/local/MATLAB/R2015b/.
  • Compile the caffe for Matlab again, by using the following command from the caffe folder in terminal:

$make matcaffe

Classifying images in Matlab using Caffe functions

Caffe is shipped with an Matlab example for classifying images in the /caffe/matlab/demo folder.This file is called: classification_demo.m.

Run Matlab. Sometime there is a error in linking the libstdc library, hence run the following from terminal before running Matlab:

$ export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/

The example can be run by two commands in Matlab:

im = imread(‘../../examples/images/cat.jpg’);
scores = classification_demo(im, 0);  % Use 1 instead of 0 if you want to run on GPU

The code return scores for 1000 classes in the ImageNet dataset. You can run and debug the code to have a better insight into it.




Deep Learning with Caffe & Python: (T2) CNN 1/3

Convolutional Neural Network (CNN) is a special type of feed-forward neural network dealing with images. One fundamental advantage of CNNs is the use of shared weight in convolutional layers, which means that the same filter (weights bank) is used for each pixel in the layer; this both reduces memory footprint and improves performance.

In this post, I will show how to test, understand and train this type of network.

I. CLASSIFYING images using pre-trained models

Caffe has already been packed with a number of examples, including one classification ipython notebook using CNN. This is a great example to start with. From terminal, navigate to the caffe installed path (usually in ~/caffe), run ipython notebook by typing:

$ipython notebook

This command calls ipython server to run and open up the web browser for working with ipython files. In the web browser just opened up, navigate to /caffe/examples/ and open file 00-classification.ipynb. Note that a ipython file is divided into multiple blocks so that you can run through each to debug the code. Use Shift+Enter to run through current block and move to the next block when the current finishes. Other shortcut keys can be found here.