Go to documentation repository
You can use custom scripts for partial automation of processes when configuring Face PSIM. In the Guide for creating scripts (programming) document there is a description of programming objects and methods which are used for scripts creation in Axxon PSIM.
The verification mode compares the face captured in the frame with the user photo stored on the disk at <Axxon PSIM installation folder>\Bmp\<Person>. It also determines the face parameters: emotions, temperature, face concealment (mask), gender, facial hair.
To perform face verification, do the following:
Create the script:
if(Event.SourceType == "MACRO" && Event.Action == "RUN" && Event.SourceID == "1") { DoReactStr("FIRSERVER","1","VERIFY_START","cam_id<1>,p_id<15>,wait<10>"); }
Parameters:
Run the first macro. If the user from the photo does not appear in front of the camera in 10 seconds, the Verification declined event will be displayed. In case the user appears, the Successful verification event will be displayed immediately showing the similarity percentage of the captured face with the user photo stored on the disk.
Example of a successful verification with output of the similarity percentage of a captured face to the user's photo, as well as the user's gender, body temperature, facial hair, evasion, and emotions:
Event : FIRSERVER|1|IDENTIFY_ACCEPT|temperature_alarm <37>, imageBase64.0<>, emotion<neutral>,fraction<285>,int_obj_id<1>,temperature<36,6>,evasion<normal>,owner<PC>,gender<male>, sim<99.60>,facialHair<gm>,date<11-10-21>,from_script<1>,guid_pk<{1CCF1800-772A-EC11-94B6-D8BBC1166DF4}>,core_global<1>,p_id<11176>,wait<10>,cam_id<13>,time<12:38:42>,param0<Timeout>, imageBase64Count<1>, liveness<not_liveness>
Example of an event when a photo doesn't match the face being verified:
Event : FIRSERVER|1|IDENTIFY_DECLINE|temperature_alarm<>,fraction<371>,int_obj_id<1>,owner<PC>,noImage<0>,date<10-02-22>,from_script<1>, guid_pk<{51A469CC-438A-EC11-94E5-D8BBC1166DF4}>,timeout<1>,core_global<1>,p_id<1>,quality<83.864>,wait<10>,cam_id<2>,time<10:34:01>,param0<Timeout>
Example of an event when a user doesn't have a photo:
Event : FIRSERVER|1|IDENTIFY_DECLINE|temperature_alarm<>,fraction<367>,int_obj_id<1>,owner<PC>,noImage<1>,date<10-02-22>,from_script<1>, guid_pk<{B314D117-458A-EC11-94E5-D8BBC1166DF4}>,timeout<1>,core_global<1>,p_id<4>,quality<0>,wait<10>,cam_id<2>,time<10:43:14>,param0<Timeout>
The face verification is completed.
Attention!
File with a photo must have the .bmp extension. But the file format can be one from the list: JPG, BMP, or PNG.
A reference face can be added to the database from a file with a photo using the ADD_PERSON_FROM_FILE reaction of the FIRSERVER object.
Note
When you add a reference face to the Face PSIM database, a new user is automatically created and assigned a photo from the specified file.
Parameters:
Example of the script usage:
if(Event.SourceType == "MACRO" && Event.Action == "RUN" && Event.SourceID == "1") { DoReactStr("FIRSERVER","1","ADD_PERSON_FROM_FILE","filename<c:\\iso_small.jpg>,name<Jane>,surname<Kramer>,department<Department 1>,comment<>"); }
If the face was successfully added to the reference face database, the ADD_PERSON_FROM_FILE_OK event will be displayed in the Debug window. If there are any errors when adding the reference face, the ADD_PERSON_FROM_FILE_ERROR event will be displayed (see FIRSERVER events).
You can check the quality of a saved user photo using the CHECK_QUALITY_START command:
Create the script:
if(Event.SourceType == "MACRO" && Event.Action == "RUN" && Event.SourceID == "1") { DoReactStr("FIRSERVER","1","CHECK_QUALITY_START","p_id<1>"); }
Parameters:
If the quality of the photo is higher than the minimum quality of the face on the face recognition server, the following event is generated:
Event : FIRSERVER|1|QUALITY_OK|fraction<413>,int_obj_id<1>,owner<PC>,date<08-02-22>,guid_pk<{11DB55C9-F188-EC11-94E4-D8BBC1166DF4}>, core_global<1>,p_id<3>,time<18:14:24>,param0<92.4644>
If the quality of the photo is lower than the minimum quality of the face on the face recognition server, the following event is generated:
Event : FIRSERVER|1|QUALITY_BAD|fraction<281>,int_obj_id<1>,owner<PC>,date<08-02-22>,guid_pk<{0742EBE0-F288-EC11-94E4-D8BBC1166DF4}>, core_global<1>,p_id<3>,time<18:22:12>,param0<92.4644>
If there is no photo, the following event is generated:
Event : FIRSERVER|1|QUALITY_BAD|fraction<517>,int_obj_id<1>,owner<PC>,date<24-02-22>,guid_pk<{1C9609E4-7795-EC11-A50D-74D435D0E19B}>, core_global<1>,p_id<3>,time<17:44:34>,param0<0>
If the photo quality is successfully checked, the user can also be verified (see the script for user verification above). If a photo of a low quality is detected, the user will be marked to find them in the Access Manager and replace the photo.
Note
If the photo quality is higher than the quality of the face, set on the Face recognition server object, it doesn’t guarantee that the verification will be performed correctly 100% of the time. The verification result depends on the position and settings of the camera, on the lighting of the face, the camera angle and other derivatives. It is recommended to set the Similarity level on the Face recognition server settings panel to no higher than 50% and adjust it on a trial basis to get the required result.
You can recognize a face for a specific camera using the QUERY_RECOGNIZE_START command.
Face recognition upon request is only available for VA and VisioLabs modules.
Example of sending a request to recognize a face from one of several cameras is shown below.
if (Event.SourceType == "CAM" && Event.SourceId == "3" && Event.Action == "MD_START") { DoReactStr("FIRSERVER","1","QUERY_RECOGNIZE_START","from_script<1>,cam_facecapture<3.1>"); }
Parameters:
If face was successfully recognized upon request, the Face detected event is displayed in the Debug window.