Coder Social home page Coder Social logo

raspberrypiopensourceiris's Introduction

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.

raspberrypiopensourceiris's People

Contributors

zfang399 avatar lucaspar avatar aczajka avatar

Stargazers

MainTobias avatar  avatar  avatar  avatar Bjørnar avatar  avatar Marcos Beleza Filho avatar Polpa Rossa avatar Quentin Altieri avatar  avatar MONISH  avatar  avatar Ítalo avatar CuHa avatar  avatar Kuangen Zhang avatar JianLi avatar Haodong (Von) Lu avatar HuXioan avatar  avatar  avatar Mona reyhani avatar  avatar Ko Taniguchi avatar saw avatar Justin Crites avatar  avatar Davi Reis Vieira avatar Anthon Pang avatar  avatar Yachun avatar  avatar logan hart avatar jwmneu avatar  avatar Josh Engelsma avatar Caiyong Wang avatar  avatar

Watchers

James Cloos avatar Walter Scheirer avatar Joel Brogan avatar Patrick Flynn avatar  avatar  avatar  avatar Peter Simpson avatar

raspberrypiopensourceiris's Issues

Can't build OSIRIS makefile

Having some trouble building the makefile. According to my inquiries, the cvMean is part of the OpenCV old C API and is deprecated. Should I install an older version of OpenCV? Already tried OpenCV 4 and downgraded to 3 but still the same error.
OsiProcessings.cpp:299:28: error: ‘cvMean’ was not declared in this scope
double iris_mean = cvMean(pSrc,safe_area) ;
^~~~~~

Raspberry Pi 4 Buster
Python 3.7.3
OpenCV 3.4.19-dev

Can't open the pre-trained model

I can't open the pre-trained model with tensorflow 2.5. I have changed a few things like the io.gfile and compat.v1.GraphDef() but no luck. It's always pop up the error: RuntimeWarning: Unexpected end-group tag: Not all data was converted. I wonder maybe It's because of your pre-trained model was corrputed when moving from one place to another?

import tensorflow as tf

with tf.io.gfile.GFile('./model/saved_model.pb', "rb") as f:
    graph_def = tf.compat.v1.GraphDef()
    graph_def.ParseFromString(f.read())

print('Check out the input placeholders:')
nodes = [n.name + '=>' + n.op for n in graph_def.node]
for node in nodes:
    print(node)

Iris recognition

hello,do you have any test in Iris recognition using CNN?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.