Skip to comments
robot video thumbnail

EZ-Face is the first in what I plan to develop into a suite of supporting application for ARC and other robotics applications. EZ-Face performs multiple face recognition. It has a interface for training faces and assigning names. When the application sees faces that are recognized the names are displayed and visually you'll see boxes around the faces with the names assigned. If a face is detected but not recognized there will be a display of a box around the face with no name. The more pictures of a face you train, the easier it is for the application to recognize a face.

User-inserted image

This is a stand alone application developed in C# under Visual Studio.NET 2013. You should have .NET framework 4.5 and it is for Windows7 and Windows8.x systems.

This project showcase explains the technology behind the application and highlights development milestones.

Developed in .NET Visual Studio 2013 (you can use express versions with the source code)
Designed to work with ARC but could be integrated into other software or robotic systems
Is a standalone application
Is open source, source code is included
Uses emgu cv wrapper for .NET (Open CV)

Resources: (Things I found helpful in creating the application)
ARC Telnet interface tutorial (Enable Telnet as the first part Shows, this is used to test communications manually to ARC via TCP/IP): http://www.ez-robot.com/Tutorials/Help.aspx?id=159
If you do not have Telnet installed on your system go to this site: http://technet.microsoft.com/en-us/library/cc771275
ARC SDK Tutorial 52: http://www.ez-robot.com/Community/Forum/posts.aspx?threadId=4952&page=1
ARC script for listening to the TCP/IP port for variables: http://www.ez-robot.com/Community/Forum/posts.aspx?threadId=5255

DJ Sures, for making EZ-Robot and ARC so robust
Rich, for his help with ARC scripting
Sergio, for his emgu cv examples

Basic Usage Direction (after download and install):
1.) Open ARC and load the included EZ-Face example
2.) Click on the Script start button (this sets up the communications from the ARC side of things)
3.) Open the EZ-Face application
4.) Refresh your camera list (click the button)
5.) Select your camera (in the drop down list)
6.) Click the "1. Detect and recognize" button
7.) Train at least one face
8.) Change the local address and port number as needed (the local IP address may not be your computer's address - you can enter "localhost" and leave the port set to 6666 unless you changed that setting in EZ-Builder)
9.) Click File and select Save User Settings (to store your changes)
10.) Click Connection (this opens the communication line to ARC from the EZ-Face app side
11.) Allow EZ-Face to recognize the face you trained - then with your computer speakers turned on ARC should speak "Hello (the name of the face you trained)"
12.) If the example work - integrate in your EZ-Robot applications as you see fit

1.) If after training several faces if you get false recognition of faces (faces recognized with the wrong name) - to correct this you should train the incorrectly recognized faces with the correct name. After a couple of training pictures are stored the accuracy of the face recognition will improve.
2.) Do not train faces with one camera, then switch to another camera for face recognition - recognition accuracy will drop.

Using Two Cameras:
What I found worked best was to start EZ-Builder, select the camera I wanted and started the camera feed, then I started EZ-Face.
If I reverses the process (even though I was selecting a different camera) I would get a black image in EZ-Builder.

2.26.14 Update:
I still have several improvements I want to make before I upload the first public version of the application.

3.2.14 Update:
The first public version is ready for release and is posted at the link below. This version has many user improvements to allow you store many settings, including http and port address, camera device, logging of faces in a text file (up to 1mb of data before the file auto deletes), face variable output to EZ-Builder, face training and more.

3.3.14 Update:
I updated the script, version 3.3.14 has the HTTP server panel (which is not used - you don't need to start it) but it does show you your computer's IP address so you can enter it in EZ-Face. Remember to save your settings under the File Menu. I also changed the script so it will no only speak for variable values greater than "" or NULL.

3.7.14 Update:
I updated the EZ-Face application: "localhost" is now the default address, new option for auto connect, functions to receive commands from ARC or other 3rd party application to stop and start the camera feed within EZ-Face. There is also a new ARC project with several new scripts to test out the functions. Please go to my site to download the latest version. You will also find a video there that demonstrations the new functions and provides directions for setup and usages.

The latest version will be published here: http://www.j2rscientific.com/software
For support and reporting any errors please use the ContactUs feature from http://www.j2rscientific.com with the subject line "EZ-Face".

I welcome any and all feedback!
Thank you

By — Last update


Upgrade to ARC Pro

Your robot can be more than a simple automated machine with the power of ARC Pro!

@odt as previously stated, the more faces you train the better the detection rate. So, if I train only my face, but it sees a new face sometimes it will detect the new face as me. To teach EZ-Face the difference enter the new name for the new face when it is detected and click Add Face to complete the training. Keep repeating this until all faces or recognized properly.
Ok, i will try to program my robot to do it itself.

I am working very hard on your code and i will go on untill i will have a good result.

For example, now, i can use only one camera for detecting colors, movements, faces, or detected faces. It is a good result and i will improve this!

Thank you again. You have done a very great work and i am trying to improve this.
@odt That's great you working on improving it. I'm still tinkering with "Auto Learning" myself. Maybe we can compare notes in the future. I'm always open to collaborating.
Hi Justin, I just downloaded your EZ-Face and think its great, but does it work with the newest wireless camera that comes with the EZB six? I can't seem to see a camera in the list so I just tried using the IP address that I have in ARC, but that doesn't work.
It should work for whatever video feed is live viewable in ARC. Can you see the video feed?
It the camera does not appear in the drop down, it may not be usable. I don't have v4 yet (I just placed an order for one).

The software for EZ-Face is designed to pull from a camera device connected to the computer. It will only work if the camera registers in windows as a valid camera device.
@jstarne1, cam feed is available in ARC
@JustinRatliff, I look forward to seeing what you do with the new v4, for now I will see what I can do with the old camera.

Teaser update. For the first time I was able to get EZ-Face to work with a static .jpg image for face recognition. This was the main development holdup for a version to work with the v4 camera. I still have more work to do before a new release is ready.
Interesting , one would think recognition would be easier with a static pic rather then a dynamic pic! Thanks for all your hard work and generous contributions
I hope what Justin was saying was he got v4 camera to recognize a static image therefore getting us closer to face recognition live with that camera....!?!
Hi Boris,

That camera is a standalone board and I believe it has been discussed in another topic. EZ-Face is designed to work with USB web cameras in Windows only. It will not work with that camera.

It does appear to have UART interface so it is possible to interface with a PC and a custom application or with the EZB maybe.

It's not a product I'm interesting in using or experimenting with though.
No Problem,

i also not like the idea to put another Hardware into my project.

It will be better if the software can have new features. ;-)

Hello Justin,

a diffrent Question:

It is possible that the EZ-Face, after recognise me, stops for example 10 min. to say Hello to me.

(Ok no problem - in the Script "sleep(10000)"

But if my girlfriends will come, the recognition knows hear and say hello and then also 10 times break for her.

So its no problem to do this only if i am one person - let the script sleeps 10 minutes (because it will be getting on my nerv if the Roboter say every second hello to me)

It must be someling like a excel list.

Now Time 18:46

Boris i see @ 18:45 (not say Hello to Boris for 10 Minutes)
Girlfriend i see @ 17:12 (i can say Hello to girlfriend)

Do you think i can solve this problem with a script or is there any chance for my idea?

You can solve that in a script in ARC, because EZ-Faces passed the variable of the face it recognizes. What you choose to do with that data is up to you in ARC.

But with the recent addition DJ made to ARC with an improved Custom Object recognition, why don't you try training the faces in ARC as a custom object first, then you can script everything inside ARC.
Dear Sir,

I am suing your EZ-Face software and developing an multiple face recognition attendance software.
But I am facing some problem, I am using Logitech HD Webcam - C615 when we start recognition its not detecting with accuracy.

Example: if I show alex face its detecting with some other name. like john. you can see the attachment face detecting on different name (Please suggest me the solution.)

And second one is how can I connect my IP camera with this software?
Example My IP camera link is and login id is admin and password is 123456
I need your support Please help me I am waiting for your reply..

User-inserted image
I am no longer supporting this software at this time. For any enhancements you'll need to develop those on your own if you wish to. I would recommend using RoboRealm for vision processing as it will allow you learn faces. There are also several vision plug ins DJ Sures has added to ARC that allow you do additional vision processing Combining those are going to be better than what EZ-Face was developed to be back in 2014.

Good luck with your project.
Just looking into facial recognition. I see the ARC has facial tracking, but does it have a means to differentiate between multiple faces - like see one - say hi XXXX see another say hi YYY, like that? If I missed it, a link to howto, is appreciated.
1) The post that you responded to answers the question. For more information, continue reading in my response.

2) Visit The Robot Program by clicking on LEARN on the top menu to see activities on using your ez-robot. In this question, the answer to training a specific face can followed in episode #46. The link is here: http://www.ez-robot.com/Tutorials/Lesson/106

3) Click the ? (question mark) next X (close) no any control in ARC to obtain assistance with that control, including activities and tutorials. The camera control has many tutorials. Here is a direct link to the camera control manual page: http://www.ez-robot.com/Tutorials/Help.aspx?id=80

Enjoy the learn section! Have fun with the robot program