Ez-face

JustinRatliff

USA
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.

Technology: 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): https://synthiam.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: https://synthiam.com/Community/Questions/4952&page=1 ARC script for listening to the TCP/IP port for variables: https://synthiam.com/Community/Questions/5255

Acknowledgements: 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 ARC) 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

Tips: 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 ARC, 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 ARC.

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 ARC, 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.
EZ-Face3.3.14.EZB

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.

Download: 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
Jump to end

ARC Pro

Upgrade to ARC Pro

Don't limit your robot's potential – subscribe to ARC Pro and transform it into a dynamic, intelligent machine.

#81  

@kamaroman68 You'll need to be a lot more specific.

When you say, "Start Button" do you mean the script start button in ARC? - If so that simply sets up the communication line from the ARC side. For it to fully work you need to have:

1.) The EZ-Face application open 2.) refresh your camera list 3.) select your camera 4.) click the "1. Detect and recognize" button 5.) train at least one face 6.) 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 ARC) 7.) click File and select Save User Settings (to store your changes) 8.) click Connection (this opens the communication line to ARC from the EZ-Face app side 9.) 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)"

Basic usages directions are now posted on the original project page as well.

#82  

Justin, you have done an Fantastic job on this program. I have a suggestion, could part of this program be modified to make an OBJECT Recognition program. Would that be hard to do? Your program is so fast it is Amazing.

:)

#83  

I have played with the multi-face and it works fine. But, when I try to interface it to ARC, it won't happen. I cannot connect. does it require it to be connected to the ezb in order to work with ARC? I am guessing this is what it is. I have two ezb's and they are both tied up into robots now. I am waiting for the ezb4 to arrive. I am on my desktop (no ezb connected.)

Australia
#84  

Hi MovieMaker,

No , it works without an EZ board , ARC and EZ face work together.

I had the same problem, but Justin and Rich helped me work it out.

See Justins latest version of EZ face Script in the last few pages , run it , run EZ face app , put in localhost in EZ Face and hit connect if your using it on the same pc as ARC and EZ Face.

It should work ,

Go back a few pages and have a read on the solution.

Hais.

#85  

@MovieMaker on the main project page (post #1 of this thread) I have posted Basic Usage Directions, you might have missed the step about making sure to use your computer's local IP address, if you change the address to "localhost" that will probably fix the communications problem. And like @Hais said, you don't need an EZ-B. :)

And in the next release I'm going to change the default host IP so it should not be an issue. I hope to release the next version in a couple of days.

#86  

@MovieMaker >>I have a suggestion, could part of this program be modified to make an OBJECT Recognition program.

Good suggestion and I am experimenting with some possible solutions. That is my next project after some updates to EZ-Face. I've been tinkering with Face recognition on and off for 7 years, since 2007 and EZ-Face was the first solution that I liked, could be open source and I could share. Hopefully object recognition won't take 7 years. :)

Brazil
#87  

Justin, so far the Ez-face is working great! Once we do the correct connection setting, everything runs perfect. I only noticed that the more faces I Add, it goes slower!.. Is this a memory issue in my onboard computer, or is the software?..

At this point I installed another camera on the robot ( so one is assing to ARC tracking and the other to Ez-face). It will be great if we could use the same one. I believe you are working on that, as you said..

And, I could set it up Ez-face to run automatically at start up, but can you make it Connect to ARC automatically too? That way, everything would be running together as soon as we turn the robot on... Thanks for the great job you are doing!

Tveans.

Brazil
#88  

ok... the two cameras trick failed.. LOL. I can choose diferent cameras on each program, BUT... only one works at a time. The other one goes black. Is there a way to activate both ? can windows do that like MAC OS does ? thanks