You are on page 1of 15

Embedded System Based Face Recognition

A.K.M Fazla Mehrab Roll:0707021 Palash Debnath Roll:0707023 15 Novenmer,2011

Khulna University of Engineering & Technology Department of Computer Science and Engineering

Contents
1 Introduction: 2 Feasibility study: 2.1 OpenCV Haartraining: . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Data Preparation: . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 Training: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Viola Jones Face Detection Algorithm: . . . . . . . . . . . . . . . 2.2.1 Using Several Libraries: . . . . . . . . . . . . . . . . . . . . 2.2.2 Extracting Unwanted functions from library: . . . . . . . 2.2.3 Compiling the program: . . . . . . . . . . . . . . . . . . . . 2.3 CMUcam3 Open Source Programmable Embedded Color Vision 2.3.1 Cygwin: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 GNU ARM GCC: . . . . . . . . . . . . . . . . . . . . . . . . 3 Requirement analysis: 3.1 ARM7TDMI ARM processor: . . . 3.2 CMUcam: . . . . . . . . . . . . . . 3.3 Compiler: . . . . . . . . . . . . . . . 3.4 GNU toolchain: . . . . . . . . . . . 3.5 Philips LPC210x FLASH Utility: . 4 Progress: 5 Conclusion: 6 Bibliography: 2 3 3 3 3 4 4 4 4 5 6 6 7 7 8 9 10 11 12 13 14

. . . . . . . Platform: . . . . . . . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

Chapter 1

Introduction:
Face recognition is challenging because it is a real world problem. The human face is a complex, natural object that tends not to have easily (automatically) identied edges and features. Because of this, it is dicult to develop a mathematical model of the face that can be used as prior knowledge when analyzing a particular image. Applications of face recognition is widespread. Perhaps the most obvious is that of human computer interaction. One could make computers easier to use if when one simply sat down at a computer terminal, the computer could identify the user by name and automatically load personal preferences. This identication could even be useful in enhancing other technologies such as speech recognition, since if the computer can identify the individual who is speaking, the voice patterns being observed can be more accurately classied against the known individuals voice. Human face recognition by computer systems has become a major eld of interest. Face Recognition algorithms are used in a wide range of applications, such as security control, video retrieving, biometric signal processing, human computer interface and image database management. However, it is dicult to develop a complete robust face recognizer due to various light conditions, face sizes, face orientations, background and skin colors. First of all we started working with face detection using OpenCV. Then we studied about Viola-Jones algorithm and tried to implement it. But we didnt succeed. Then we studied about CMUcam3 Open Source Programmable Embedded Color Vision Platform. We implemented the Viola-Jones algorithm here. In this report we have explained our way of working methodology as well as the progress we have achieved so far.

Chapter 2

Feasibility study:
Face Recognition is a wide eld of study. There are several ways to implement the idea. Among them we have studied a couple of ideas.

2.1

OpenCV Haartraining:

OpenCV haartraining is rapid object detection training with a cascade of boosted classiers Based on Haar like features. Several steps are followed for haartraining.

2.1.1

Data Preparation:

Positive Images: Positive images means only objects of interest that means only faces. We had to collect positive images that contain only objects of interest. For our purpose the object of interest is Faces. We have used 5000 positive frontal face patterns, and 5000 positive frontal face patterns were derived from 1000 original faces. Negative Images:: Negative images means only objects that doesnt contain object of interest. We needed to collect negative images that do not contain objects of interest, e.g., faces to train haarcascade classier.

2.1.2

Training:

Haartraining: Haartraining is used to train classiers for their face detection system Thus; we can create our own object classiers using the functions. For OpenCV haartraining 20 stages were trained. Generate a XML File: The haartraing generates an xml le when the process is completely nished. This xml le contains the properties of faces.

2.2
2.2.1

Viola Jones Face Detection Algorithm: Using Several Libraries:

Viola Jones Face Detection Algorithm uses several OpenCV libraries. These libraries are typically linked together. As the memory of our processor is not enough to store all the libraries and xml les so we decided not to use all the libraries.

2.2.2

Extracting Unwanted functions from library:

As we have mentioned earlier that the main problem of using Viola Jones Face Detection Algorithm is their linked library. We have tried about a week just only to separate the library functions that are not necessary for our program. But there are about 148 header les that use each other as their header. we have tried to separate the functions but they are so linked that we are unable to extract them from each other and compile our program.

2.2.3

Compiling the program:

The main challenge of Viola Jones Face Detection Algorithm is to compile the program and generating our required hex le. We had included all the libraries of the OpenCV at last to compile the program. But they are so linked together that we were unable to compile the program. So we had to leave this path.

2.3

CMUcam3 Open Source Programmable Embedded Color Vision Platform:

The goal of the CMUcam project is to provide simple vision capabilities to small embedded systems in the form of an intelligent sensor. The CMUcam3 extends upon this idea by providing a exible and easy to use open source development environment that complements a low cost hardware platform. The CMUcam3 is an ARM7TDMI based fully programmable embedded computer vision sensor. The main processor is the NXP LPC2106 connected to an Omnivision CMOS camera sensor module. Custom C code can be developed for the CMUcam3 using a port of the GNU toolchain along with a set of open source libraries and example programs. Executables can be link building ashed onto the board using the serial port with no external downloading hardware required. In order to compile and download code to the CMUcam3 in Windows you will need the following software: Cygwin

Make Subversion
ARM gcc LPC210x FLASH Utility CMUcam3 Frame Grab Utility (using .NET runtime v2.0 or greater)

2.3.1

Cygwin:

Cygwin is a Linux-like environment for Windows. It provides you with a shell and many familiar Linux tools like make which you will use to compile CMUcam3 code. So we had to download Cygwin from the site http://www.cygwin.com/ The installer is there. We downloaded the Cygwin from there and installed. We installed the following extra packages: Make Subversion Open-ssl These packages are essential for compiling the project. So if any of the commands dont work then we need to nd out which is not working and then install it manually.

2.3.2

GNU ARM GCC:

The compiler choice is left up to the hal. This allows dierent hardware platforms to use dierent compilers. Currently, the only supported hal is lpc2106-cmucam3, which uses a version of GCC optimized for the ARM processor. To build using this hal, we needed the arm-none-eabi-* style GCC tools from CodeSourcery. But there is a problem with the latest version of GNU ARM GCC. The hall couldnt be built using the latest version of the GNU ARM GCC. We had to use the earlier version arm-2010q1-188-arm-none-eabi for compiling the hall. Building the project: We have the compiler and the CMUcam3 source; you need to build the system now. From the top level, invoking make will build all the hal libraries, and will build a subset of items in the projects directory.

Open a Cygwin shell and type cd c: to move to our C drive. Next navigate to the source directory using the cd myd irectorycommand.Onceinthecc3directorydothef ollowing. First clean the hal before trying to build any projects by the command make clean. The build the hal by make command. Then to build the project go to the project directory by cd command Type make clean to clean the previously build elements. Type make to build the project. If all this commands perfectly then a hex le will be generated for that particular project.

Chapter 3

Requirement analysis:
3.1
ARM7TDMI ARM processor:

The ARM7 family is the worlds most widely used 32-bit embedded processor family, with more than 170 silicon licensees and over 10 Billion units shipped since its introduction in 1994. While the ARM7 processor family continues to be used today for simple 32-bit devices, newer digital designs are increasingly making use of the newer, more powerful and feature-rich ARM processors which oer signicant technical enhancements over the ARM7 family.

Figure 3.1:

3.2

CMUcam:

CMUcam is a new low-cost, low-power sensor for mobile robots. We can use CMUcam vision system to do many dierent kinds of on-board, real-time vision processing. Because CMUcam uses a serial port, it can be directly interfaced to other low-power processors such as PIC chips. At 17 frames per second, CMUcam can do the following: ge Track the position and size of a colorful or bright object Measure the RGB or YUV statistics of an image region Automatically acquire and track the rst object it sees Physically track using a directly connected servo Dump a complete image over the serial port Dump a bitmap showing the shape of the tracked object

Figure 3.2:

3.3

Compiler:

We need a compiler to build our projects. For this purpose we need a tool called CYGWIN. It is a collection of tools which provide a Linux look and feel environment for Windows. A DLL (cygwin1.dll) which acts as a Linux API layer providing substantial Linux API functionality. The Cygwin DLL currently works with all recent, commercially released x86 32 bit and 64 bit versions of Windows, with the exception of Windows CE and Windows NT4.

Figure 3.3:

3.4

GNU toolchain:

The toolchain consists of the GNU binutils, compiler set (GCC) and debugger (Insight for Windows and Linux, GDB only for MacOS). Newlib is used for the C library. The toolchain includes the C and C++ compilers.

Figure 3.4:

10

3.5

Philips LPC210x FLASH Utility:

The LPC2000 Flash ISP Utility allows us to download programs to the on-chip Flash using the on-chip Flash boot loader of the NXP (Philips) LPC2000 devices. This utility works as a communicating tool for loading our hex le into memory from computer.

Figure 3.5:

11

Chapter 4

Progress:
There were several algorithms for face recognition. Our main challenge was to nd out an ecient way to implement the algorithm. After working hard and reading so many blogs and mail some experienced persons we have now reached a way to implement the algorithm. We have created an environment for implementing our code for face recognition. We have got the camera in hand that will be used for eectiveness of the programs. We have the processor ARM7TDMI but now we need another IC which will be used as a buer. This IC is not available in our country so we have ordered it and when we got it in our hand then we will be able to implement our research so far.

12

Chapter 5

Conclusion:
The primary conclusion that can be drawn from the results of our experiments is that we are now able to create a new project and by building the project we are able to generate our required hex le. We will load this hex le in the memory and we are now waiting for getting the IC required to do this function. We have ordered this IC but it is not available in our country. As soon as we will get the IC chip we will be able to implement our research that we have done so far.

13

Chapter 6

Bibliography:
1. 2. 3. 4. 5. www.cmucam3.org www.cygwin.com www.codesourcery.com www.semiconductors.philips.com http://en.wikipedia.org/wiki/GNUt oolchain

14