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.
2. Technical detail:
- Must be provided to L.C. with an Application Programming Interface
- All source code and functions will be plain text and commented
- 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.
- 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
10 freelancers are bidding on average $6539 for this job
Hello, I would like to understand the time to process one image and the level of acceptable error. Also need a set of examples with truth containing 10000-20000.