/RaspberryPiOpenSourceIris

Raspberry Pi open source iris recognition project with CC-Net-based segmentation and human-driven BSIF coding

Primary LanguageC

RaspberryPiOpenSourceIris

Official Repo for IJCB 2020 Paper:

Open Source Iris Recognition Hardware and Software with Presentation Attack Detection (https://arxiv.org/abs/2008.08220)
Zhaoyuan Fang, Adam Czajka

Cite

If you find this repository useful for your research, please consider citing our work:

@article{fang2020osirishardsoft,
  title={Open Source Iris Recognition Hardware and Software with Presentation Attack Detection},
  author={Zhaoyuan Fang, Adam Czajka},
  journal={IEEE International Joint Conference on Biometrics (IJCB)},
  year={2020}
}

The NDIris3D Dataset

The NDIris3D dataset is now available and can be requested following instructions in the link. Another similar dataset Notre Dame Photometric Stereo Iris Dataset (Wacv 2019) is also available.

Prerequisites

The code is written and tested with Python 3.5 and Raspberry Pi 3B+. The software can also be treated as an individual open-source method.
Required libraries: PyTorch, TensorFlow, OpenCV

Software

Iris Recognition

The iris recognition is adapted from this paper.

OSPAD-2D and OSPAD-3D

All source codes of the PAD methods are in the PAD folder.
References to the PAD methods can be found here: OSPAD-2D and OSPAD-3D.

CC-Net Segmentation

We apply CC-Net for fast iris segmentation. All the codes are in the CCNet folder, as well as the segmentation model saved as a TensorFlow graph. Please check out CCNet/main.py for re-training / testing. The codes are straightforward to follow.

Hardware Assembly Instructions

The required components include: Raspberry Pi (tested on 3B+), NIR-sensitive Pi-compatible camera, NIR filter, NIR LEDs, resistors and wires. Some requirements on the hardware are:

  1. The LEDs we used have emission wavelengths of 850nm, but any LED with emission wavelength between 700nm and 900nm would suffice.
  2. The NIR filter we used can be found here: https://www.amazon.com/gp/product/B07RNH1HNX/, but any NIR filter that cuts effectively the light below 700nm would work well.

The assembly steps are:

  1. Wire the left and right NIR LEDs to the output pins as specified in cfg/cfg.yaml. Connect them also with resistors to protect the circuit.
  2. Pile / assemble with a tube the NIR filter and camera. Place it in between the left and right LEDs.
  3. Adjust the angle of the LEDs; measure the updated angles and update in cfg/cfg.yaml OSPAD_3D settings.