This project was built as the final deliverable for our Embedded System course.
IntroductionIn today's world, face recognition is an important part for the purpose of security and surveillance. therefore there is a need for an efficient and cost effective system. Our goal is to explore the feasibility of implementing Raspberry Pi based face recognition system using conventional face detection and recognition techniques by detecting each part of the face. This paper aims at taking face recognition to a level in which the system can replace the use of passwords and RF I-Cards for access to high security systems and buildings. With the use of the Raspberry Pi kit, we aim at making the system cost effective and easy to use, with high performance.
How to visualize face- The mouth can be accessed through points [48, 68]
- The right eyebrow through points [17, 22]
- The left eyebrow through points [22, 27]
- The right eye using [36, 42]
- The left eye with [42, 48]
- The nose using [27, 35]
- And the jaw via [0, 17]
NumPy is a library for the Python programming language that (among other things)provides support for large, multi-dimensional arrays. Why is that important? UsingNumPy, we can express images as multi-dimensional arrays. Representing images asNumPy arrays is not only computational and resource efficient, but many other imageprocessing and machine learning libraries use NumPy array representations as well.Furthermore, by using NumPy’s built-in high-level mathematical functions, we canquickly perform numerical analysis on an image.
SciPyGoinghand-in-hand with NumPy, we also have SciPy. SciPy adds further support forscientific and technical computing. One of my favorite sub-packages of SciPy is thespatial package which includes a vast amount of distance functions and a kd-treeimplementation. Why are distance functions important? When we “describe” an image,we perform feature extraction. Normally after feature extraction an image is representedby a vector (a list) of numbers. In order to compare two images, we rely on distancefunctions, such as the Euclidean distance. To compare two arbitrary feature vectors, wesimply compute the distance between their feature vectors. In the case of the Euclideandistance, the smaller the distance the more “similar” the two images are.
OpenCVIf NumPy’s main goal is large, efficient, multi-dimensional array representations, then,by far, the main goal of OpenCV is real-time image processing. This library has beenaround since 1999, but it wasn’t until the 2.0 release in 2009 did we see the incredibleNumPy support. The library itself is written in C/C++, but Python bindings are providedwhen running the installer. OpenCV is hands down my favorite computer vision library,but it does have a learning curve. Be prepared to spend a fair amount of time learningthe intricacies of the library and browsing the docs (which have gotten substantiallybetter now that NumPy support has been added). If you are still testing the computervision waters, you might want to check out the SimpleCV library mentioned below,which has a substantially smaller learning curve.
PuTTYis a free and open-source terminal emulator, serial console and network file transfer application. It supports several network protocols, including SCP, SSH, Telnet, rlogin, and raw socket connection. It can also connect to a serial port. The name "PuTTY" has no official meaning.
Raspbian OSis a Debian-based computer operating system for Raspberry Pi. There are several versions of Raspbian including Raspbian Stretch and Raspbian Jessie. Since 2015 it has been officially provided by the Raspberry Pi Foundation as the primary operating system for the family of Raspberry Pi single-board computers.Raspbian was created by Mike Thompson and Peter Green as an independent project.The initial build was completed in June 2012.The operating system is still under active development. Raspbian is highly optimized for the Raspberry Pi line's low-performance ARM CPUs.
Comments
Please log in or sign up to comment.