Ez-face

JustinRatliff

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

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

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

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

ARC Pro

Upgrade to ARC Pro

Get access to the latest features and updates before they're released. You'll have everything that's needed to unleash your robot's potential!

#1  
You did a wonderful job! Thanks for sharing your progress to date. Look forward to the finished project. Will you need to rewrite for v4 ezb?

:):):):)
J
PRO
USA
#2  
Wow this is incredible.... I cannot wait to try this out on my project when you release it:D
Outstanding job @JustinRatliff
#3  
Wow ! Thank you very much. It's really great. ;)
#4  
One word ... AWESOME!

Great job, and to share this with the community is just fantastic!

Thank You Justin
United Kingdom
#5  
I'm looking forward to trying it out.

Also thanks for the acknowledgement:) You have no idea how much that means to me!
#6  
@jdebay That is a good questions on the EB4. The question marks would be for the camera. If windows detects the new camera as a standard "camera" device then nothing would need to be changed. But I'm going to add that to my development to-do/check list.

On my plate right now is making different modes for the application to run in. One being stand alone - integrate it with anything you want with a dedicated camera (home automation, EZ-Robot, other robot apps, etc.)

The other main mode being for ARC with a single camera, because a camera feed can't be used in two applications at the same time so I need to add some smarts to the ARC script to send some communications back and forth via TCP/IP with the app. That way, ARC would stop it's camera usage, open the EZ-Face if it's not open, tell EZ-Face turn on camera, look for face(s), get face name (if unknown maybe ask for face name and learn new face), send face(s) as a string to ARC, wait for ARC to acknowledge, EZ-Face Turns off Camera and sends confirmation to ARC, ARC acknowledges and turn it's camera usage back on to do whatever.

The other option for single camera use I am thinking of is a 3rd mode for static picture face recognition. In this mode ARC would look for face, take a snapshot when detected, tell EZ-Face, look for faces in path/newpic.jpg, EZ-Face would analyze, send face(s) back to ARC as a string and ARC could do what ever. That would eliminate the single camera issue, but I fear it might end up slower and now as accurate. Because if ARC takes a snap shot but you moved your face, then it's a static picture of a blurry face or a sideways face that the EZ-Face app can't recognize so that app would reply with "I don't know". And the process might keep repeating if your usage was "Robot, who is this".....wait for face recognition.....wait on robot to do something....keep retaking pictures until something happens or you say "Robot, never mind". With a live video feed, I think people more instinctively know they need to point their face at the camera and that would have a higher success rate.

Then the whole learning faces things comes into play, because right now you need to train faces live at a terminal with keyed entries for names. But if your robot does not have an onboard PC and you are not sitting at a terminal to teach your robot faces then teaching would not be ideal. I'm picturing a future function to store unknown faces, if you asked the robot "who is this" it might reply, "I don't know, storing for future learning"....then at your convenience you could go through the static images and tell the robot who they are. That functionality might lead into live learning where a terminal is not needed for direct keyed entry.

99% of those things will be in future versions. I hope to release the first version by the end of the weekend. I'm hoping once folks get a change to play with it we can all co-develop it. Even if you don't have coding skills, if you just tell me what you need it do, I can work on adding those new features.
#7  
Thanks everyone!
And you are welcome @Rich - thanks for all your help and always sharing your knowledge with the group!
United Kingdom
#8  
You could add in an IF to stop the "hello" with no name too if you wanted to...

Code:

IF($FaceName <> " ")
Say("Hello" + $FaceName")
EndIf


ARC will, with the Web Server/Remote Control control turned on send a stream of images on it's url i.e. http://192.168.0.200:80/CameraImage.jpg?c=Camera

I don't know if it's possible but maybe you could use that url as a camera for this app therefore leaving the robot to use it's camera as normal and no need to shut it off to detect faces.
#9  
Wow! Great job @Justin and thank you so much for sharing! Its one thing to recognize a red ball and track faces but its another level altogether to recognize a particular face! Of course the robot's camera would have to be at "eye level" for maximum recognition. With a script for "do not recognize immediately" the robot could request the "unknown" face to get closer and align squarely to the "eye" I am positive over time many improvements will be made by yourself and others.....Congrats @Justin!
#10  
@Rich, can you explain the camera URL function a little more?

How do I enable this in ARC - is it the same as enabling the TCP/IP connection from the Connection options, settings, Server Tab, select your EZ-Board and enable scripts? My IP address is 192.168.0.100 and the port listed in ARC is 6666
United Kingdom
#11  
The camera is through the HTTP server control not the telnet control.

User-inserted image


That gives you the server control (with options i.e. port)


User-inserted image


The url I gave above (after adjusting the IP address and port) should give a snapshot of the camera as a jpeg.
#12  
This looks very promising. This method gets me a static images. I could use some controls in the EZ-Face app to refresh, but do you know is there a live feed vs. a static current .jpg?
United Kingdom
#13  
I think it's just a static current jpeg but it's refreshed whenever you want so you should easily be able to make some kind of stream out of it by refreshing it once every 50ms, 100ms, whatever is needed. Since it's more than likely going to be local anyway there should be a very quick load time.
#14  
@Rich, I agree...was just hoping for a direct video stream. By the way, if anyone uses the HTTP method to test getting a picture in IE, it works fine minus your username and password where you have to manually log in. If you try to integrate the user name and password, by default the user name is Admin and the password is blank and must be represented by a blank space like so:
"http://Admin: @192.168.0.100:80/CameraImage.jpg?c=Camera" *you may need to change to IP address for your system and of course add the HTTP Server function to your ARC and start it, along with having your camera turned on in ARC.

This will NOT work in modern IE, like version 10. It will work in Chrome and other browsers. http://support.microsoft.com/kb/834489
#15  
@Justin- Awesome. I can't wait to play with this in the near future. Thanks for sharing this with everybody.
#16  
@Justin, I am going to keep my eye on this. It has GREAT potential. EZB knowing not only that it is a face, but also WHO'S face it is.

Keep up the good work!
:D
#17  
I just had a good laugh at my EZ-Face app. I had already trained it with DJ Sures face, so I was going to add the actor Steve Guttenburg from Short Circuit and EZ-Face didn't miss a beat to detect Dr. Newton Crosby PH.D. as DJ Sures! :D :)

I'm finding that the functionality maxes out for me at 4-5 faces for solid reliability. After that, the face trained the most (mine) starts to look like other people, where it detect Isaac Asimov as me at first, then it registers him correctly. All though I have not tried just capturing tons of images of every face, so that could effect the learning as well. I (we'll) learn more as we play it. I know it really had a tough time understand the Isaac Asimov at different ages (young vs old). So if you time travel or your robot does not see someone for a long time that might be important to know. :)

I know for sure teaching faces based only on a picture of a picture, like I did for DJ Sures and Asimov, that it will work, but not's not great method.

I'm looking forward to sharing this in a couple of days.
#18  
Incredible! Sarah Connor just might get terminated after all.
#19  
This is one of the most exciting user projects I have heard about in quite a while. I am anticipating playing with it with baited breath. Also really excited you are open sourcing it. I am trying to find the time to learn C#, and theway I learned VB6 was by examining other peoples apps that did similar things to what I wanted to do. I found that much more effective than tutorials or books that started with "Hello World" and then went through dozens of simple apps that I wasn't interested in.
Brazil
#20  
Amazing!
When do you plan to release the download so we can test ?
I just can't wait!
Thank you!
#21  
I cant agree more @ thetechguru ! With " a higher resolution? " for the face variable more faces may be recognized!
#22  
@thetechguru Playing around with other code is one of the best ways to learn coding. Something else that makes coding easier to learn is a good way to manage code snippets so it's easier to use them. Once I started using the free Snippet Manager I have not looked back. You can create searchable code archives for anything. Even ARC scripts! http://www.snippetmanager.net/

Back in the day I learned BASIC on the Commadore 64. Then I went to Quick BASIC for IBM systems. Then pbasic for micro controllers. Then Visual Basic.Net and once I learned that I thought I'd never, ever learn C#. But over time I've turned into one of those c# is better than VB snobs.

@tevans My goal is to release it by 3/3/14
PRO
Synthiam
#23  
Wow that's great:) It's also flattering you used my face in the detector with alan turing! I'm excited to try your project out!
#24  
It's here!:D:D:):D:D

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

3.2.14 Update:
The first public version is ready for release and is posted at the link above. 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.

Please use my site for support questions so I can track issues. Also I don't want to be a pest by being a forum hog.

Thank you!
#25  
Wow JustinRatliff , I'm really excited to put this into my B9. Your the best kind of entrepreneur; releasing your product a day early! Nicely done! Thanks for the hard work!
#26  
Hi, I am trying and that is ... AWESOME! Very simple to implement. It's great. Thousand thanks.
United Kingdom
#27  
Had a quick look this morning, worked well on a quick test:)

Also, thanks for the source code! As someone just starting out with C# and visual studio express I'm sure it will come in handy (although I hate working with other people's code it helps the learning process).
Australia
#28  
Tested EZ Face and added my face and my name comes up every time it sees me ( excellent !)

Im using my pc built in cam ,

Copied the ARC project example and opened it up in ARC ,

Now Since I don't have an EZB Board yet , Im guessing i cannot just test this and have a play
directly from Ez Face to ARC ?

Like , while we wait for our EZ B's to get here ....
Without the hardware and just using ARC , We can do scripts just with PC and Cam and colour tracking to practice.

I did a HAL 9000 parody with sound samples , just with ARC , built in cam and Speech commands ,
it was just to learn and get started with ARC.....Kids loved it , Now every time i ask them to get me something
they say " Im Sorry Dave, Im Afraid I can't do that" *S*

you know what i mean ?

Thanks

Hais.
#29  
@Hais - good question. The neat thing about ARC is a lot of functions work, without an EZ-B, including the script to connect to EZ-Face. So you can test getting the variable and acting on. You can setup scripts for speaking, camera controls (for your web camera), voice recognition and anything else that does not directly require the EZ-B like output to a servo.
Australia
#30  
Yes , Test getting the variable and acting on it , I understand ,

Like

But is Ez Face Example script already setup to communicate directly to EZ Face app ?

Coz I had both up and running , and my face was added to EZ Face and being detected on the EZ Face ,
Running the EZ Face Example , should have returned " Hello Hais" , but nothing happens...

Do I have to make a connection between the ARC and Ez Face ?

Or is it only setup so that we need to connect to an ARC address and TCP port , and thats when it will communicate
to ARC ?

Sorry if I'm being a noob:)

Thanks

Hais.
United Kingdom
#31  
I'd have thought the settings required would be saved to the project however you do need to enable the script console in the connection dialogue and set up the IP address in EZ-Face.

I'm not home right now so I can't post any screenshots however, if Justin doesn't get to it before I get home I'll gladly do a quick walk through for it.
#32  
I just did mine. You have to change the ip address to what your computer is. Also did you install it at the C:\?
Here is his Readme file located in the resources directory.

Quote:


Instructions Of Operations:
=============

1) Make sure the application folder is installed on the C:\ drive. Once uncompressed the final destination path should be as follows: C:\BotBrain\EZ-Face

2) Run the application, and select your camera device of choice in the "Select Camera" drop down.

3) Click button "1. Detect and recognize" to start the camera feed and recognition process.

4) Train new faces by entering the person's name in the "Name" field and when the camera highlights the new face with a Red Box around it, click the "2. Add face" button.

5) To integrate with ARC, copy the included ARC project to your ARC project folder (this is usually located under My Documents or Documents folder". Open ARC, open the included ARC project. Follow the direction in the "Notpad" of the project.

6) When you are ready to run EZ-Face with ARC, change the ARC Address and TCP port as needed and click the "Connect" button.

7) EZ-Face also creates a log file, which you can review by clicking "View" on the menu bar and selecting "View Log of Detected Faces". This size if this file is displayed when the application is opened and is updated every minute or so. If the file size exceeds 1mb, the file is deleted and a new log file is created. This file can be used by other applications as a short term memory file.


EDIT: Sorry. I see some of this was answered already in previous pages.
#33  
Can previously added faces be deleted? I made a mistake and added my face as "person's name" then later as "troy". It's blinking back and forth identifying me as "persons name" and "troy".
Australia
#34  
In EZ Face , Click on View , Learned Faces ,

There is all the photos and txt file , I think you can delete photos and edit txt file and start again

Hais.
#35  
LOL thanks, I had just did that and was about to edit my post. No need now.:D You beat me to it.
This thing is great! Nice work!

I was having fun with it and noticed that you can make crazy faces and it still works. You can even cover you mouth and it works.
#36  
@Hais it should be working and speaking. Make sure to change your Address in EZ-Face before connection to match your computer IP address. Port 6666 should stay the same as that is the default in ARC unless you change it. 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

@Troy If any wants to delete faces, you can do so under "Delete Learned Faces" - this erases the pictures and the data file to associate the name.
#37  
My next goal:

I'm working on a new setting in the application that will allow users to use the application on demand with one camera. My goal is to have a script in ARC, stop the camera usages (if being used), open the EZ-Face app, EZ-Face would auto run for a user adjustable amount of time (30 seconds or whatever), send variables to ARC then EZ-Face would auto close. ARC would act on the names of faces, speak them or if null, say "I'm sorry I could not see any faces", then active the camera usage again.

That way your robot can use the application demand and still function pretty well with one camera.

After that I plan to work on a few support apps like EZ-Face. Here are a few of my plans for my next projects, any votes on which one you'd like to see first?

1) Static Picture Face Recognition - EZ-Face but for picture files
2) Text recognition from camera input
3) Object recognition
4) Long Term memory storage - stores and organizes variable and actions feeds from other apps like ARC to give the robot long term associated memory to usage in memory recall and problem solving.
#38  
@Justin Once again you have developed an amazing control/app EZ-Face that adds another huge dimension to peoples robots. In this early thread and perhaps you have read it already .. " http://www.ez-robot.com/Community/Forum/posts.aspx?threadId=5303 " all of us could incorporate the same "EZ-Object" idea! "This is a beer can, may I drink some? " "What is the name of your dog? "
" What am I supposed to do with this screw driver?" etc Ah Maaaaaazing!
#39  
@JustinRatliff, I sent you a bug report through your web page. I am not sure why this is happening to me and not other users. I get the face recognized event fine, but when the app attempts to send " " when there is no face recognized, the script is bombing out as if it had received only one "

Specific error is:

8: WaitForChange($FaceName)
> Error on line 8: Missing String Quotes or Invalid Expression: "
Done (00:00:00.4280428)

If I very carefully start the connection while the app is recognizing my face, I get "hello Alan" before the error occurs, so it is definitely happening when the empty variable is sent.

Alan
#40  
Same error for me:
8: WaitForChange($FaceName)
> Error on line 8: Missing String Quotes or Invalid Expression: "
Done (00:00:00.6157771)

After the facial recognition, I'd like object recognition. That's a function that could really provide one more in our projects.
Australia
#41  
Hi JustinRatliff,

Got it going thanks Justin ,

:) Works great , Communicating and saying my name ,

BTW I get the Same error in line 8

I think its a syntax error in the script may be ?

It says my name once before this error though LOL , But its sweet:)

Error on line 8: Missing String Quotes or Invalid Expression: "
Done (00:00:12.3473662)


Hais.
United Kingdom
#42  
Works fine for me... Get's a bit crazy when it starts and stops detecting my face (I plan to make some changes that I'll post) but no syntax errors this end.

Also, if it's running on the same PC as ARC simply use the IP address 127.0.0.1 or localhost
#43  
Sorry to hear about the error guys. I'm believe it would be related to the script in ARC. Mine works fine.

Questions:
1) What versions of ARC are you guys running?
2) On the EZ-Face app, at the bottom in the black communications window, after connection is made, does it display
Sending: $FaceName = ""

I'd like you to try this:

Code:


# Make sure the variable exists and is reset
#Change the $FaceName variable to = "" instead of "Null"
$FaceName = ""

# Make an endless loop
:loop

# Wait until the variable changes
WaitForChange($FaceName)

# Script commands to be run on change of facename variable
If ($FaceName > "")
Say("Hello " + $FaceName)
EndIf

# Loop back to the start
Goto(loop
#44  
@Rich - right on, I forgot about "localhost" as an option - I'm going to set that as the default in the next release
United Kingdom
#45  
I'll have a bit of a play tonight with the EZ-Script. I have a few ideas which should also stop it saying hello over and over again if it keeps detecting the same person but has the odd non detection (like mind does with the low light levels and poor camera).

The detection works pretty well however I guess my family all look very similar as it has been known to incorrectly identify my brother as me, my niece and nephews as me or my brothers. Does having more captures of people increase the accuracy?
Australia
#46  
Hi Justin,

Yes , It does display Sending: $FaceName

Also confirmed this by refreshing the variables tab in the script , I can see the variable changing from " to "Hace, " and back to "

Code:

# Make sure the variable exists and is reset
#Change the $FaceName variable to = "" instead of "Null"
$FaceName = ""

# Make an endless loop
:loop

# Wait until the variable changes
WaitForChange($FaceName)

# Script commands to be run on change of facename variable
If ($FaceName > "")
Say("Hello " + $FaceName)
EndIf

Sleep(2000)
# Loop back to the start
Goto(loop)


The code above returned

Start
3: $FaceName = ""
6: :loop
9: WaitForChange($FaceName)
> Error on line 9: Missing String Quotes or Invalid Expression: "
Done (00:00:00)

Running the latest version of ARC.

I think its an ARC Script error , Looking at the script and being a noob myself it should not return an error even if run without EZ face should it ?

But I did run it with Ez face:)


Hais.
Australia
#47  
@Rich and @JustinRatliff

Attempting Connection to localhost:6666
Connected
ARC v2014.02.28.00 on TTY0

:)

Hais.
Australia
#48  
@JustinRatliff

The face Recognition is tops , I moved away about 2.5 meters and it still recognised me:)

Im using a Mac Pro running Parallels with windows 8.

Hais.
United Kingdom
#49  
Give this script a go, see if it helps...

Code:

# Make sure the variable exists and is reset
$FaceName = "null"
$user0 = "null"
$user1 = "null"


# Make an endless loop
:loop

# Wait until the variable changes
WaitForChange($FaceName)

IF ($FaceName != "")
$user1 = $user0
$user0 = $FaceName

IF($user0 != $user1)
# Script commands to be run on change of facename variable
Say("Hello " + $user0)
EndIf

EndIf

# Loop back to the start
Goto(loop)



(Remember all;) should be closed brackets)
Australia
#50  
@Rich

I grabbed a dummy head my misses uses for sewing and

EZ Face recognises multiple faces at the same time and when it does , $FaceName variable can be ..
Sending: $FaceName = "Hace, dummy, "

Just thought you may want to put that kind of scenario in your scripts , maybe:)

Hais.
#51  
I think if the app sent an explicit hex space 0x20 or "null" instead of " " it would resolve the issue.

I can't find any of the threads now, but @Rich has helped a number of people with serial communications where explicit hex space (or line feeds or other non-print characters) were needed, and other users don't seem to need it. Not sure what it is in the computer configuration that causes this to be an issue for some and not others.


I am using the latest ARC (updated this morning) on Windows 7 Professional.

Alan
#52  
@Rich, same error with your version of the script, but line 11 (the waitforchange line). For some odd reason it is only seeing the first "

Alan
Australia
#53  
@Rich ,

I tried your last script ,

Without EzFace Camera on it starts and waits

Console
Start
2: $FaceName = "null"
3: $user0 = "null"
4: $user1 = "null"
8: :loop
11: WaitForChange($FaceName)


As soon at the EZ Face Camera is on and detecting
Script console .....
Start
2: $FaceName = "null"
3: $user0 = "null"
4: $user1 = "null"
8: :loop
11: WaitForChange($FaceName)
> Error on line 11: Missing String Quotes or Invalid Expression: "
Done (00:01:47.6668765)


I Stopped the scripted and restarted it a few times , and managed to get to say "Hello Hace"
but as soon as I looked away it went into error in the console ....

Start
2: $FaceName = "null"
3: $user0 = "null"
4: $user1 = "null"
8: :loop
11: WaitForChange($FaceName)
13: IF ($FaceName != "")
14: $user1 = $user0
15: $user0 = $FaceName
17: IF($user0 != $user1)
19: Say("Hello " + $user0)
20: EndIf
22: EndIf
25: Goto(loop)
8: :loop
11: WaitForChange($FaceName)
> Error on line 11: Missing String Quotes or Invalid Expression: "
Done (00:00:07.0037586)

Hais.
#54  
I opened the script window and ran it from there. If I click on the variable tab, the $FaceName variable contents (after hitting the error) is a single "

Alan
Australia
#55  
Yes ,

I get the same as Alan , When EZ Face is not detecting a Face

Sending: $FaceName = ""
But the variable in the script variable tab is a single "

But when EZ Face Detects a face ( me)
OK
Sending: $FaceName = "Hace, "

and the variable in the variable tab is "Hace,"

Hais.
United Kingdom
#56  
If it's a single " then the EZ-Face application isn't sending the script command correctly to your ARC. Which is strange as I have no problems with mine and I would have thought all would be the same.

FYI I am not up to date, I'm 1 update behind (I didn't realise that). I'll update and try again and report what I find.
United Kingdom
#57  
OK, I didn't expect that to happen but on the latest ARC it throws an error with the single " as has been reported.

I'll try some other Telnet stuff and see if that does the same, that may point us in the right direction as to what needs fixing (ARC or EZ-Face)


Edit: Update, when sending no data (i.e. $variable = "") to ARC over Telnet it sets the variable to ".

It also does the same for variables in EZ-Script. i.e. run this and see the single "

Code:


$variable = ""
#58  
Ah Hah,

So the latest version of ARC introduced a bug. Not totally unexpected since it had major change to the underlying script engine.

@DJsures, you watching this thread?


@JustinRatliff

For a temporary workaround, I am playing around with your code in VS2013 Express.

In this section of main.cs

//This sends the name automatically - this needs to be enabled or disabled
//
tbX.Text = "\"" + names + "\"";
btnSetX.PerformClick();
//This clears the name value for the next face to be recognized
names = "";
//Clear the list(vector) of names
NamePersons.Clear();

}

If I put any character between the "" in the names = ""; line, other than a space, the error goes away, but than $FaceName has that character as a prefix.

Putting 0x20 there sent 32, not space, so I may have the wrong code for ASCII space.

Putting something innocuous like "_" and than testing for that in the script may allow users ont he latest ARC to continue testing.

Alan
#59  
@Rich - Thank you, you beat me to what I was going to do which was update ARC to the latest, I too was a upgrade behind.

@DJSures (or anyone from EZ-Robot) could you take a look at the variable return as reported by @Rich for

Code:

$variable = ""

Returning the variable as only a single quote "
Do you guys think this is a bug or was that the intended functionality in the newest release? It did not do that in version 2014.02.21
#60  
I'm sure you guys saw the latest release of ARC 2014.03.03 should resolve the empty string variable. Thank you @DJSures

:)
United Kingdom
#61  
It may be a bug, it may have been purpose. My guess is a minor bug.

That said, and this is just me personally speaking but I try to never have empty variables. Feel free to disregard this if you want to but I would personally have the EZ-Face app send $FaceName as "Null", "Empty", "Unknown" or something to that effect rather than have it send "".

Edit: I guess it was updated as I was typing this lol.:)

Another Edit: Latest version works great.
#62  
@Rich and everyone else - would you guys prefer an option at run time to set the null value yourself and save it as a user settings?
#63  
@JustinRatliff,

More configuration options are always better, so yes, if you could add that as a user setting, I am sure it will get used.

Alan
#64  
While you are at it, if you could make the ", " after the name optional as well, that would be good.

Alan
#65  
Working great now btw. Recognizes me with and without my glasses (but not if I cover my mouth with my hand).

Alan
#66  
I'm trying out the application this evening. I'm having an issue with the camera showing nothing but a totally blacked out image in the application. It seems to detect the integrated webcam in my laptop from the camera list just fine, but as soon as I click "Detect and Recognize" it displays a black square. Tested the webcam and it works fine in other applications. Any ideas here? Am I just having a compatibility issue with this particular webcam? BTW, Thanks for all the work on the application. It's great for EZ robot projects.
#67  
@bstaehling - If the screen is black - that could happen if a camera device was selected that is not turned on. For example, I have a wireless camera from the EZ-Robot kit and by default that is the first camera device, device 0 (that's just the order of installed devices on my system; everyone's will be different). If I don't use the refresh camera button to update the list of cameras, then pick my web camera before clicking "1. Detect and recognize" it will try to use my wireless camera (even turned off) and will display a black screen.

If those steps don't resolve the issue, please the Contact Us feature from http://www.J2RScientific.com so I can track your issue and help you one on one.
#68  
@thetechguru >>Working great now btw. Recognizes me with and without my glasses (but not if I cover my mouth with my hand).

Face recognition apps like this can do funny things. It will detect drawn faces on paper with the outline of head, 2 eyes, a nose and a line for a mouth) as face. I even tested making several small faces on paper with different appearances and taught them to EZ-Face. It made for a sort of poor man's barcode or glyph marking system. Not very practical, but its one more thing you could do.

Also, if you train a face like I did with an image of DJSures, but it recognizes another face (especially one not trained yet) as that person, go ahead an train the face by entering a name as the person it should be recognized as. After 2 or 3 trained images of the person you should see more accurate recognition.

Another tip: If I trained faces with one camera, but switched to another camera my recognition accuracy dropped and I needed to re-train. But your experiences will very based on your camera and environment.
PRO
Synthiam
#69  
Excellent work. I downloaded your app and tried it out. It was a lot of fun!
Brazil
#70  
Justin, I have only to say: THAT'S incredible ! What a piece of amazing work. I've been playing around with that for the last hours and could imagine the wonderful tool we can now implement in our robots. Thank you, and thank all the genius guys around here, like Rich, DJ and Techguru...
Soon I will post a video with my friend MOVUC to get your opinion about that.
Best regards from Brazil.
Tevans.
Brazil
#71  
Justin, I have only to say: THAT'S incredible ! What a piece of amazing work. I've been playing around with that for the last hours and could imagine the wonderful tool we can now implement in our robots. Thank you, and thank all the genius guys around here, like Rich, DJ and Techguru...
Soon I will post a video with my friend MOVUC to get your opinion about that.
Best regards from Brazil.
Tevans.
#72  
@DJSures, Thank you! I'm very glad I could contribute something to the community! :)

And to everyone here, Thank you, Thank you, Thank you for all the positive feedback and assistance in improving EZ-Face.
#73  
Hi, how to stop the script when a face is detected?
Thanks
United Kingdom
#74  
I'll be posting some of my script examples soon with a few features you can all build on.

If you want the script to stop on face detect, either replace the Say("hello" + $facename) line with Halt() or just add a Halt() after the line.

The thing to remember here is you have free reign with what this app does. The Example Project supplied with it only does one thing. It would be impossible to cover everything that can be done. There is so much that can be done from the $FaceName variable.
Brazil
#75  
friends.. 2 questions. How do I setup ARC AND Ez-face to share the same camera ?! My robot uses one single camera tha I would like to keep doing the tracking job, and the recognition too...
At this point, I was only able to make one works, if I disable the other...

And, How do I setup the Ez-Face to automatically RUN AND CONNECT , after load when I turn the robot on (it uses an onboard ITX computer) ?

That's because the robot is set to load, and connect ARC at the windows start up..

THANKS!
United Kingdom
#76  
You can't use the same camera on two applications, this is not a limitation to EZ-Face only.

I did offer a suggestion to Justin a few days ago about using the HTTP server control and grabbing the image however it is a static image not a video feed so I am guessing he is still working on that for a possible future upgrade.

You can have EZ-Face start automatically a few ways. I would suggest using ARC to start it within an init script.

Code:

Exec()


Which, if installed in the default location should be;

Code:

Exec("C:\BotBrain\EZ-Face\bin\Debug\MultiFaceRec.exe")
#77  
@Rich, thank you it works. And thank you a thousand times @JustinRatliff. It's really great
#78  
@Rich is right, the including EX-Builder script is just a basic example of passing a variable from EZ-Face to ARC. I'm looking forward to seeing the scripts Rich produces to make a more robust script.

@tevans Single camera usage is something I am working on. The new functionality will allow you to call up EZ-Face to run on demand (open, use the camera, release the camera and close) and you can call it up as often you like. That functionality is not included in the first version.

@Rich EZ-Face is built on the EMGU CV framework. The problem with the HTTP server function in ARC is it provides an HTTP IP address for a camera image (static is currently the only option from ARC, but that is not the main issue). The problem is two fold. One there is not a "clean" way for EMGU to accept HTTP IP addresses as a camera feed. From everything I have seen it really seems designed to pull only from traditional capture device. The examples I have seen for IP address video feeds have included 3rd party support files that must be purchased (no open source solutions).

One way to get around all this is to use what is in ARC already, which is the picture snapshot function. Have a script look for a face in ARC, take a snap shot or two, send a variable to EZ-Face, EZ-Face would look for new pictures, run recognition, store faces to variable, send variable to ARC where ARC could do the needful. But the EMGU functionality utilized in EZ-Face is designed for video, not pictures. So adding that functionality is not straight forward and I anticipate that requiring a fair amount of work.

However, if ARC had an option to export a video clip - that functionality I could add to EZ-Face without much effort. @DJSures - do you guys have adding video clip output on your radar by any chance?
United Kingdom
#79  
Here are a few different quick examples. I haven't had much time to play with it yet but these should be a starter for you to use and adapt to suit your requirements...


Greet user only on change of user while ignoring no recognition/non detection.

Code:

# Make sure the variable exists and is reset
$FaceName = "null"
$user0 = "null"
$user1 = "null"


# Make an endless loop
:loop

# Wait until the variable changes
WaitForChange($FaceName)

# Check facename isn't blank
IF ($FaceName != "")
$user1 = $user0
$user0 = $FaceName

# Check detected face is different from previously detected
IF($user0 != $user1)
# Script commands to be run on change of facename variable
Say("Hello " + $user0)
EndIf

EndIf

# Loop back to the start
Goto(loop)



Enable/Disable Speech Recognition on detected user (note: change "Rich," to the user you want)

Code:

# Make sure the variable exists and is reset
$FaceName = "null"
$user0 = "null"
$user1 = "null"


# Make an endless loop
:loop

# Wait until the variable changes
WaitForChange($FaceName)

# Check facename isn't blank
IF ($FaceName != "")
$user1 = $user0
$user0 = $FaceName

# Check detected face is different from previously detected
IF($user0 != $user1)
# Script commands to be run on change of facename variable
Say("Hello " + $user0)
EndIf

EndIf

# Enable Speech Recognition control only if user is Rich
IF ($user0 != "Rich,")
# If user isn't Rich pause the speech recognition
ControlCommand("Speech Recognition", PauseOn)
Else
# Otherwise unpause speech recognition
ControlCommand("Speech Recognition", PauseOff)
EndIf

# Loop back to the start
Goto(loop)



When I have more time I will do a few more based on ideas I have. If you have ideas but no clue on how to make it work post the idea and I'll see what I can do:)
#80  
So I am not able to get this working on my end. Not quite sure what I'm missing. I pressed the start button and nothing is happening? Im sure there is more to this than what I am doing. Anyone willing to take a stab at directing me? Thanks Chris
#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
#89  
@tevans What fails exactly and which camera feed to which application goes black?

I just experimented with two cameras, one for EZ-Face and one for ARC. I didn't have any issues with the camera feed in EZ-Face. But depending on which application I started first (even though I was selecting a different camera) ARC would show a black screen for me.

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.
Brazil
#90  
I'll try that sequence to see what happens..
I'll try to remove the Ez-face shortcut that I put in the startup folder too (to run the program at windows start) and include an Exec script within the ARC...

What I was experiencing is that when I enable the cam in one software, the other goes black no matter wich camer I choose..
United Kingdom
#91  
As posted in another topic requesting help, but it should also be in here too I guess (Justin, feel free to use the screen grabs if you want to).

At work (and on XP) so can't go too in depth but some screen shots to aid you...

Start EZ-Face

Change the IP to Local Host
User-inserted image


Click Connect
User-inserted image


Refresh Camera List
User-inserted image


Select Camera from list
User-inserted image


Click Detect and Recognise
User-inserted image


To add faces
When a face is detected add the persons name to the correct box
User-inserted image


Click on Add Face
User-inserted image
#92  
Does anyone else have an issue if you to use ARC to open the EZ-Face application, like so?

Code:


Exec("C:\BotBrain\EZ-Face\bin\Debug\MultiFaceRec.exe")


When I try it, I get windows errors that I don't believe are related to ARC. These are Windows errors. *confused*
The Exec script does function if I direct it to c:\windows\notepad.exe - so ARC is all good. And I do have version 2014.03.03

I'm wondering if everyone gets errors or just me specifically if you try to open EZ-Face from ARC?

P.S. I'm wrapping up the updates for the next release :D
United Kingdom
#93  
Yes I got an error, which was an error with the exe apparently...

Try

Code:

Exec("C:\BotBrain\MultiFaceRec - Shortcut.lnk")
Brazil
#95  
Friends... I can't get the both camera to work at sabe time! It does not matter the order I try to exec the programs...
I'm running windows 7 64 sp1...

What am I doing wrong?!

If I use the Ez-face with the camera control disabled on ARC.. It works perfectly....

Help ! LOL!
#96  
@tevans Are both cameras wireless?

What happened when you used two cameras as I recommended: "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." ?

Try using both cameras differently, like EZ-Face and Movie maker at the same time or EZ-Robot and Movie Maker at the same time from the two cameras. Anything to make sure your two cameras run at the same in other applications on your computer.
Brazil
#97  
when I try that I get a Black screen on the second program I run (in that case EZ-FAce)... no matter if I select different cameras to different programs!
I'm wondering if is there a set on Windows that allow both to be used... I could not find that.

I am using a Lifecam, that is HD, and a simple logitec webcam. My last guess is about the system power tho handle both.. because it is an ITX onboard..

I saw your question about Start, Stop camera on EZ-B... I was thinking about that too. If I could Stop the camera on EZ-B, mabe the camera on EZ-face would start automatically, and, as soon as the recognition variable was sent, it would restar the cam on EZ-b (it's not a very fast way.. but, do you think it would work ?!?!)

The other possibility, And I think you have think about that is to grab the JPG on ARC, make it send to EZ-face, Get the recognition and send the $FaceName back...
In that way only the cam on EZ-b would be needed...
Well, i'm not a programer... so don't mind if my logic fails.. LOL
Brazil
#98  
and, when I try to toggle the programs using the same camera, I get this error message..
~
---------------------


See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.NullReferenceException: Error: Unable to create capture from camera1
at Emgu.CV.Capture..ctor(Int32 camIndex)
at MultiFaceRec.FrmPrincipal.button1_Click(Object sender, EventArgs e) in c:\BotBrain\EZ-Face\MainForm.cs:line 94
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5477 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
MultiFaceRec
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/BotBrain/EZ-Face/bin/Debug/MultiFaceRec.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5468 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5467 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5467 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Emgu.CV
Assembly Version: 2.2.1.1150
Win32 Version: 2.2.1.1150
CodeBase: file:///C:/BotBrain/EZ-Face/bin/Debug/Emgu.CV.DLL
----------------------------------------
Emgu.Util
Assembly Version: 2.2.1.1150
Win32 Version: 2.2.1.1150
CodeBase: file:///C:/BotBrain/EZ-Face/bin/Debug/Emgu.Util.DLL
----------------------------------------
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5476 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Emgu.CV.UI
Assembly Version: 2.2.1.1150
Win32 Version: 2.2.1.1150
CodeBase: file:///C:/BotBrain/EZ-Face/bin/Debug/Emgu.CV.UI.DLL
----------------------------------------
DirectShowLib-2005
Assembly Version: 2.1.0.0
Win32 Version: 2.1.0.0
CodeBase: file:///C:/BotBrain/EZ-Face/bin/Debug/DirectShowLib-2005.DLL
----------------------------------------
System.Core
Assembly Version: 3.5.0.0
Win32 Version: 3.5.30729.5420 built by: Win7SP1
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
#99  
@tevans - The failure would kick out if EZ-Face is trying to use a camera already in use or one no longer connected or one that can not be initialized.

>>and, when I try to toggle the programs using the same camera, I get this error message..
Again, you can not use one camera in the two applications at the same time.

As I previously asked, can you use these your two cameras at the same time in other application?
#100  
Try this, open two instances of ARC with different projects that use the camera. In each project, select a different camera and start it. You should get two separate video feeds, one in each instance of ARC. That just worked for me, here is a picture of my results.
User-inserted image
#101  
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.

User-inserted image


Download from:
http://www.j2rscientific.com/software

Demo and Instructions:


@DJSures - Big thank you for the help with the scripts and receive variable example! :D
Brazil
#102  
well my dear friend... the issue with do not getting image from two cameras on two different programs really seams to be with my week itx onboard computer... I could not put those to work! I'll try to see if some set up in windows is blocking it, but, since i'm more familiar with MAC OS, if someone could help me to find that, i would thanks very very much.

in the meanwhile i'll try to merge the scripts you put together and see if my computer can respond fast enough. if so, I think I will not need of a second camera after all...
I'll send you any results, ok ?
thanks again, to you and all the masters helping this project !
you ROCK!
Australia
#103  
Hi Justin , Just watched the video , Seen the new functions added and script examples.

Exactly what we needed , this extra control of opening , closing , start , stop , means now we
have the flexability with EZ Face to use one camera:)

Totally Awesome Amazing work.

I just wanted to add , THANK YOU FOR SHARING THIS WITH US !

Hais.
ps. Could not see a Donate link on your website:)
#104  
Thank you for this update. With all script examples and auto connect, now we can use a one camera. Everything is ok.
Thanks for this beautiful job.
Brazil
#105  
Yeah Justin! Hais is correct... If you include a Donate link in your website I would be glad to contribute to your efforts doing such a great job.
Think about it!
#106  
Hi Justin,

Great program. Test works great trying to intgrate with my project. You have scripts to start the detection and stop as well as open and close. Where do I find those scripts.

Thanks.
#107  
Justin,
Forget my last post.. I downloaded original version.. have everything I need I think.

Good job again.
#108  
I was tinkering with EMGU CV for object recognition, if anyone else is seeking to do that as well I can tell you the examples included in the EMGU CV download are embarrassingly bad for the optical character recognition and shape recognition. What does "embarrassingly bad" mean, imagine giving a crayon to a 2yr old and asking them to draw what they just saw. The examples for ORC and Shape Detection sure do not showcase a robust strength in those functions. :(

The OCR did ok for plain text (non cursive - cursive it did not understand at all) on a plain background with no other images. I suppose if I wanted to hand write my robots notes on paper that might be handy.
Australia
#109  
Justin is EZ-ObjectRecogition next on your list of to do's ?


:)
#110  
It is something I am experimenting with currently. :)
PRO
USA
#111  
Justin,
I tested your program and it worked great!
I am using the built in web cam in my Asus laptop.
I also had success editing the LABELS changing Steve S to Steve without retraining.
You did an awesome job creating and sharing this.
Thank You,
Steve S
#112  
Awesome Steve! I'm glad you like it. As you and other use it don't be afraid to shout out suggestions you'd like to see in the next version. :)
#113  
Can EZ-Face identify a person's face and say their name in a greeting?
#114  
@bhouston have you see the video I posted? The video demonstrates EZ-Face doing just that. :D
#115  
Hi Guys,
I'm a newbie to the forum but have been following it for a while and frankly it's by far the best and most helpful that I have seen bar none, and has by far the most way out projects. I have the EZB V4 and camera on order and hope to be starting a project soon - meanwhile I've been playing with ARC - AWESOME!

So I tried out EZ Face - really nice job and excellent video instuctable! Many, many, thanks Justin for sharing your hard work here. For me EZ-Face functionality was one of THE features that a robot should have and it delivers on that! As a note of interest I added all the family faces and it was interesting to see how the Open CV got a little confused between my daughter and my wife and then me and my son. It settled all the arguments of who the kids take after http://www.ez-robot.com/emicons/emo_smile.gif
My guess is that the Open CV is sensitive to lighting conidtions but a new foto or two seems to quickly sort that.

I'll keep following the posts and bit by bit try and understand the scripting better.
#116  
I new here I'll look for that video.
United Kingdom
#117  
@JustinRatliff just read all this thread awesome job
#118  
@JustinRatliff - you may be interested in this links to show how others were thinking of object recognition:

QBO Blog

I read somewhere that the Open CV needs a fair amount of images before it starts working well.
#119  
I am using EZ Face on InMoov Project. Using left eye at this time. I am about 6 weeks into this project.

#120  
@Jack Your robot is amazing! To see EZ-Face used in your robot is just awesome! Thanks for sharing! :)
#121  
@Jack Your InMoov is looking good. I am looking forward to getting my EZ-Robot controllers so I can switch my InMoov over.
PRO
New Zealand
#122  
Pretty impressed with the EZ-Face.

My web camera is on the wall above the deep freeze in my workshop and looks towards my work bench. The software software is set to zoom in on faces to assists in motion tracking, etc.

This evening when I went to grab the ice-cream "Lawrence", my household A.I., piped up and said "Hello, Wayne".

Made me just jump out of my skin!

LOL
Brazil
#123  
Hello Friends...
Justin, I'm having a really hard time to make the ARC trigger the Eazy-face..
actually, it runs the program, but the recognition does not work, and the turn on, turn off camera fails every time...
any tip ?
and..
there will be a newer version ?
thanks ?
#124  
@tevans it clearly sounds like EZ-Face and your instance of ARC are not communicating at all. Go through all the setup steps again. Make sure EZ-Face is configured to auto connect to your camera and to auto connect for the communications. If you have ARC open, and EZ-Face does not auto connect, check your settings, reset them and save them as needed. Manually click the connection button. If the connection fails (which would be displayed in the black box at the bottom of EZ-Face) then you need to check to make sure ARC is configured to communication on the local port still.
Italy
#125  
Hello and first of all, scuse me for my bad english.

Well, surely, face-recognition and object-recognition is the "dream" of anyone building a robot..... So, it is mine dream too.
I am working from about 18 months on a robot-project and i really would like to use this face-recognition. But my robot is a 'stand-alone' robot based on a "onboard pc" and controlling ez-board via Visual basic.
Is it possible to use ez-face with visual basic?
And is really impossible to run it on Win Xp?

Thank you and scuse me again for my bad english.
#126  
@odt - I think your English is pretty good. :)

To answer your questions - the EZ-Face application is optimized to integrate with ARC, as seen in the video.

Will it work with Visual Basic - yes.

Is it programmed in Visual Basic - no. It was developed in c#.Net and Visual Basic is part of .Net so you can integrate .Net projects between C#, VB and others as long as they were created in .Net.

EZ-Face was designed to integrate with other 3rd party applications so if you already have a VB.Net application that you want to integrate EZ-Face with that should be straight forward with a TCP/IP communication protocol (which is how it connects to ARC).

Is it impossible to run EZ-Face on Win XP - No. I just ran it on a WinXP system - It's not recommended and future updated version may not work. But the current version will run on Windows XP with .Net 4.0 installed.
Italy
#127  
Hello Justin and thank you for your fast reply.

Well, i have downloaded the software and i have run it on the little pc in my robot. But i have had an error :
system io.filenotfoundexception
This error happens when i press 'detect and recognise', after i have selected videocamera.

1- I refresh camera list
2- I select videocamera and the led on the videocamera start, but no images on the screen
3- i press 'detect and recognise'
4- i have the error

I have done the same thing on another pc running Win xp and everything runs ok.
Both pc are running Win xp and .Net 4.0.

It's a mistey..... can you suggest something to solve the problem?
#128  
On the one that is failing, are you logged on as the administrator? Sounds like maybe a file or folder permissions issue.

Alan
Italy
#129  
"Run as administrator" give me the error "The specified service does not exist as an installed service"....
Italy
#130  
The error happens when i press the 'stop' button also.

So, i can see the 'camera' when i "refresh camera list", but after this, the program crash.

This is what i have:

Exception information:
code 0xe0434f4d
flags 0x00000001

module 1
MultiFace
Image base 0x00400000 image size 0x00000000
checksum 0x00000000 timestamp 0x531a07ed
#131  
It sounds like the WinXP system you are running it on is not updated. Make sure you have the latest service pack and .Net framework 4.0.

What camera are you attempting to select? Is this a built in webcam, the EZ-Robot wireless camera or some other camera?
#132  
@Justin...In case you didn't know I have entered my Robot F.R.E.D in the Instructables robot contest which should be posted Monday or Tuesday. I mention this because I have included your contribution, EZ-face in my article! :D I hope that will be ok otherwise I can edit and remove.
Italy
#133  
Hello Justin and thank you for the reply.
The system is updated with service pack3 and it has .net framework 4.0.
I am using an usb camera.
Oh.... i forgot to say this is an embedded version of windows xp.

Yestderday i have spent all the afternoon trying and trying to solve the problem, but i have had no success.....
It's very frustrating because on the pc in my office, the software works perfectly and it is really amazing.....
#135  
@odt Mentioning that it's embedded XP is pretty important. Embedded XP is a streamlined version of XP which may be missing several key dependency. I have no way to test or support any applications that are being attempted to run on Embedded XP.

If you search the net you'll find other folks with similar problems running custom .Net applications. In the various XP Embedded support forums you'll find advice you can try. Let me know if you are able to make it work on XP Embedded.
Italy
#136  
....oh..... i did't know this...... :(
Well, i will search for a possible solution.

In the mean time, i am doing some experiments on the pc running windows Xp and working well.
I have a question:

I need, when the pc detect a face, to send the name of the face to a serial com port.
For example, if Sarah is detected, i need to write on com port 7 "detected Sarah".

Is it possible? And, if it is possible, how can i do?

Thank you very much.
#137  
@odt EZ-Face does not support serial out. What device are you seeking to send this serial data too?
Italy
#138  
I need to communicate with a program running visualbasic.

I need the program 'tells' to visualbasic the name of the face....
#139  
@odt It doesn't sound like you need it to send serial data out, you just need way to collect the data in your Visual Basic application. So you'd want to search for examples in Visual Basic to send and receive data on the localhost TCP/IP port (which is what EZ-Face communicates on).

Alternatively you could use the log file from EZ-Face to read the last name written in the file in your visual basic application.
Italy
#140  
Oh. And where can i found the examples in visual basic?

I am searching these in your internet site, but i am not found.
#141  
I don't have an example in VB for you. You'd need to search the internet in general for examples.

If you have an EZ-B version 3 and are using Windows XP, is there are reason you aren't taking advantage of EZ-Face already communicating with ARC?
Italy
#142  
First of all, i work in win xp, so, i have not ARC for win xp..... it works with win 7 and win 8, but not in win xp.

Second reason, i like programming in visual basic.
I am building a robot working in visual basic because i know well this language......

How do your software works? I simply need it to send "name" when someone is detected.......

Scuse me if i understand little, but it's difficult for me english........
#143  
@odt The best way to understand how EZ-Face is sending the data to ARC is to download the EZ-Robot SDK for .NET and Example 52 is localhost communication sample I used as my starting point for the same function in EZ-Face. It's written in C#
Italy
#145  
Yes Justin.
I am working about and i am sure i will have a good result.

First of all, i need to buy a bigger pc because your software needs many processor power......
Second thing, i have to unbuilt my robot and rebuilt it with new pc.
Then, i will program this in C#. I am very friendly with Visual basic, but i don't know C# well.
No problem. I will learn it fastly.

I am sure your software will make real the dream i had, but, until now it was impossible to do.
Now, thanks to you, this is possible and i will do anything to realize it.

I am doing some experiments on the pc working and i am having good results.
Italy
#146  
Hello.
I am working hard on this C# project, but now, i have a problem.

I have correctly recognize my face, but, every unknown face detected, has my name...... is this a 'bug'?
#147  
@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.
Italy
#148  
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.
#149  
@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.
Canada
#150  
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.
Thanks
Chris
#151  
It should work for whatever video feed is live viewable in ARC. Can you see the video feed?
#152  
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.
Canada
#153  
@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.

thanks
#154  
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.
#155  
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
PRO
USA
#156  
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....!?!
#158  
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.
#159  
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. ;-)


Boris
#160  
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?


Boris
#161  
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.
#162  
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 http://192.168.226.201/Pages/login.htm 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
#163  
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.
#165  
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.
PRO
Synthiam
#166  
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