User:Mbroemme5783/enes100/Attendance

Write problem/project Goal
find an easy way of taking attendance using facial recognition software

My First Task
Implementing facial recognition software on my own laptop to get a baseline of what the software can do.

Summary of actual work over first weekend
I planned to use the open source software hosted by OpenCV, but soon realized Picasa or Facebook would be a better option. Picasa and Facebook already have advanced facial recognition programs inside them and a database which automatically stores them, making them ideal places to to attendance from.

Week1 Narrative
I explored OpenCV programs and determined that Python would be the best language to start with, as there is a wealth of programs already written for face recognition.

My Second Task
Explore the ways an app could take attendance because of its integrated facial recognition capabilities. I will explore ways of making my own app and integrating face recognition software inside it.

Summary of actual work over second weekend
Downloaded a Python face recognition program and a CPP program from http://opencv.willowgarage.com/wiki/FaceRecognition

Determined that OpenCV is the only open source facial recognition source that is stiil supported. Face.com no longer gives API keys, which could have been an easy way to setup a private folder for the class.

Acquired a good starting point for determining accuracy with minimal amounts of photos with a database of 10 photos per 40 individuals at http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html

Week2 Narrative
We tried and failed to implement Face.com's facial recognition software, which is essentially an executable file. However, we lacked an API key and they stopped giving them out. Therefore, I downloaded different Python and C++ command lines, which I am trying to get to work. I am using a simple database with 10 photos each of 30 people as a starting point for our database's capabilities.

My Third task
I cannot get my python commands to work, so I will try a few simple python commands just to get a starting point for Python. After, I will try using a python command that utilizes a simple database next (preferably with a .csv file) to figure out extracting and inputting with python and eventually C++. If I can start to get these programs to work, I should be able to manipulate the facial recognition software to call and run programs from face databases.

Summary of actual work over third weekend
Over the weekend, I finally got an OpenCV source code to execute. The program is called Visual Control and uses a form of HaarCascades in C++, which performs an algorithm that compares the ratio of your eyes, nose, mouth and face to each other. The program is not automated and needs to be trained with images, but this is a good starting point for shaping our own program to what we need it to do. The source code can be found at http://code.google.com/p/visual-control/downloads/list

Week3 Narrative
Over this week I focused on finding new starting points given that my program is actually working. For instance, I explored the use of inserting our own photos into the image training folder Visual Control accesses when it trains itself. I found that they needed to be grayscaled and cropped to present a 150x200 image of just the face in a picture. I am looking into creating a program that will do this automatically to a given folder of pictures. I tried to manipulate the images manually, but they did not work with Visual Control. Also, I tested the effective distance the program will recognize faces at and it seems that the optimal distance is < 3'4". I tested using a different input with a webcam in class, but even with the increased resolution the program seems to work best at 3 feet and closer.  I made a rough tutorial for the class in Inkscape, but am going to clean it up and find a way to post it as a single image on our team page.

My Fourth task
My fourth task will start out with building a code that grayscales and formats images for me, I am going to dig through the Visual Control source code to see if I can just copy and paste it from there. If that works, I will be able to input everybody's face from class into the program and begin recognizing them as they come into class. Next, I will make a quick video tutorial or detailed flow chart that demonstrates how to acquire and run Visual Control. Then, I will explore how I can convert the data from Visual Control to a folder that can track attendance.

Summary of actual work over fourth weekend
Over the weekend, I concentrated on how the facial recognition system could output its results into a folder that could then be recognized by another program that will take attendance with the names inside the folder. I found a helpful program called "simple directory analyzer" that is generally used for identifying file types and disk space. However, the program also can sort files by dates, which could help when taking attendance by organizing the recognized names into dates attended. The program can be found here.

Week4 Narrative
I focused on getting a program that could format our files to the appropriate resolution and grayscale, but the program did not accept our manually formatted images. Also, the primary starting point for the next team was determined to be using a program to grab the names the program recognizes and inputting the student's names into an attendance file.

Complete Team Page
Team Page