Facial Analysis, Recognition and Identification Software Development


Job Description

We are looking to have developed a facial analysis application, controlled through a simple graphical user interface (GUI will be provided to shortlisted candidates prior to offers). The application should detect faces, age category (child, adult), gender and emotion. We have seen many examples of this functionality been created through the use of freely available OpenCV and other available libraries and resources. The application will need to analyze still images, videos and real-time video via a webcam or other means.

Specification (deliverables) of the application tool to be developed:

1. A Java tool (or front end) able to:

1.1 Detect human faces in images, video and real-time video

1.2 Analyse and report on the facial information available including:
a. The number of faces in the image (labeling each)
b. The gender of each face in the image
c. Determine the emotion associated with the face (or where more than one face has been identified for each face) in the image/video/real-time video being analysed. (In real time video the bar chart representing this (see GUI design) must update also update in real time).
d. Categorize the age of each face detected in the image into one of the following categories: Child (0-17 years of age), Adult (18 years of age +)

1.3. Facial identification extension able to:
a. Add detected faces (if the chooser users) from multimedia to an 'identification database' with the face of the detected persons name entered by the user e.g. ‘Steve Jones'
with some user entered notes where applicable
b. Allow users to scan for further multimedia, which contains a specific person added/known in the database e.g. ‘Steve Jones’
c. Automatically scan any inputted multimedia for known faces, returning a percentage match along with the top 2 or 3 results
(this must be able to be turned on or off)
d. Allow users to manage faces and details in the ‘identification database’
d. Report on faces found in multimedia in the log file
in addition to the other analysis details

Note: No 'identification database' currently exists, so it could be designed and developed anyway required as long as it conforms to requirements and specifications of the main application.

From our initial research it appears that OpenCV is commonly used to develop the above functions. The application must be controlled by a Java front-end, and be able to be built into a larger Java program, however, other programming languages can be used on the condition that the developer can demonstrate how they comply with these requirements.

The developer must report via the messaging system every 2 days, including providing current versions of the application being developed.

2. Technical detail:
- A desktop tool, preferably all written in Java as apposed to just the front-end
- Must be able to be combined and further developed as part of a larger application
- Must be provided to L.C. with an Application Programming Interface
- All source code and functions will be plain text and commented
- Must have a good accuracy, and be as accurate as possible
- A basic guide on how to run the application must be included, along with sample files for testing
- Must work on Windows, Mac and Linux
- Disclosure of which facial analysis technique(s) have been used
- Any third-party code must be highlighted, and must be free for commercial usage by L.C.
- Controlled fully by a basic simple to use graphical user front-end, please see attached GUI design
- GUI preferably created or modifiable in Eclipse Window Builder or NetBeans
- All source materials, including a number of actual tests must be included, along with a simple user guide on how to run, and what to expect
- The system must create a log file for each scanned image/video, which will store the workings and full results of the application.
- An option to be able to ‘fast scan’ video output content
- Must create a fully detailed overall log file for all files scanned (i.e. number of files scanned = 15, 10 files contained adult faces, 5 contained Child faces etc).
- Multi-threaded integration and a settings control pane, to allow the user turn on or off the ability to multithread processors to run quicker

3. Further considerations (desirables):
- Investigation and apply techniques to compensate for facial object orientation, partial facial images, image colour distortion or poor quality images/videos
- Age estimation in years

*** When sending in a proposal, please confirm: ***
- you can deliver all of the specifications, requirements and deliverables above
- you will attempt to tackle any of listed further considerations
- how long the work will take to deliver
- that you accept our payment terms that no money will be paid upfront, payment is fixed cost on delivery

Any questions please ask, we look forward to your proposals. Thanks for your time.