Skip to content

Commit

Permalink
Merge branch 'face_recognition' of github.com:tue-robotics/image_reco…
Browse files Browse the repository at this point in the history
…gnition into face_recognition
  • Loading branch information
iasonth95 committed Mar 8, 2024
2 parents 8a128b3 + 65d24ed commit afcf4c1
Show file tree
Hide file tree
Showing 15 changed files with 196,764 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,7 @@
path = image_recognition_pose_estimation/docs
url = https://github.com/tue-robotics/tue_documentation_python.git
branch = master
[submodule "image_recognition_face_recognition/docs"]
path = image_recognition_face_recognition/docs
url = https://github.com/tue-robotics/tue_documentation_python.git
branch = master
1 change: 1 addition & 0 deletions image_recognition/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
<exec_depend>image_recognition_age_gender</exec_depend>
<exec_depend>image_recognition_analysis</exec_depend>
<exec_depend>image_recognition_color_extractor</exec_depend>
<exec_depend>image_recognition_face_recognition</exec_depend>
<exec_depend>image_recognition_footwear</exec_depend>
<exec_depend>image_recognition_msgs</exec_depend>
<exec_depend>image_recognition_openface</exec_depend>
Expand Down
20 changes: 20 additions & 0 deletions image_recognition_face_recognition/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
cmake_minimum_required(VERSION 3.0.2)
project(image_recognition_face_recognition)


find_package(catkin REQUIRED COMPONENTS)

catkin_python_setup()

catkin_package()

install(PROGRAMS
scripts/get_face_recognition
scripts/face_recognition_node
scripts/train_from_images
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
if(CATKIN_ENABLE_TESTING)
find_package(catkin_lint_cmake REQUIRED)
catkin_add_catkin_lint_test()
endif()
79 changes: 79 additions & 0 deletions image_recognition_face_recognition/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# image_recognition_face_recognition

NEEDS WORK

Face recognition with use of Openpose (https://cmusatyalab.github.io/openface/)

## Installation

See https://github.com/tue-robotics/image_recognition

Make sure that openface is correctly installed. Installation instructions can be found here: https://cmusatyalab.github.io/openface/setup/. Make sure you have installed **CUDA8**. CUDA10 is not working: https://github.com/torch/torch7/issues/1180

```bash
export TORCH_INSTALL_PATH=~/torch
export OPENFACE_INSTALL_PATH=~/openface
git clone https://github.com/torch/distro.git ~/torch --recursive && \
cd $TORCH_INSTALL_PATH && bash install-deps && ./install.sh && \
for NAME in dpnn nn optim optnet csvigo cutorch cunn fblualib torchx tds; do $TORCH_INSTALL_PATH/install/bin/luarocks install $NAME; done && \
sudo -H pip install dlib && \
git clone https://github.com/cmusatyalab/openface.git $OPENFACE_INSTALL_PATH && \
cd $OPENFACE_INSTALL_PATH && sudo -H python setup.py install && \
./models/get-models.sh
```

## How-to

### ROS Node

Run the image_recognition_openface node in one terminal (Specify the dlib and openface_net path as ROS parameter):

rosrun image_recognition_openface face_recognition_node

Run the rqt annotation client (https://github.com/tue-robotics/image_recognition_rqt)

rosrun image_recognition_rqt annotation_gui

Setup the service by clicking the gear wheel in the top-right corner. Select the `/annotate` services exposed by the openface ros node. Also don't forget to set-up your labels.

![Configuration](doc/config.png)

Now draw a rectangle around the face you would like to learn. The face recognizer will find the biggest face in the image and store a representation for this face.

![Annotate](doc/annotate.png)

Now select the label and you will see that the openface ros node stores the face (console output node):

[INFO] [WallTime: 1478636380.407308] Succesfully learned face of 'rokus'

Learn as many faces as you want ..

Next step is starting the image_recognition_Rqt test gui (https://github.com/tue-robotics/image_recognition_rqt)

rosrun image_recognition_rqt test_gui

Again configure the service you want to call with the gear-wheel in the top-right corner of the screen. If everything is set-up, draw a rectangle in the image and ask the service for detections:

![Test](doc/test_face.png)

You will see that the result of the detection will prompt in a dialog combo box. Also the detections will be drawn on the image.

### Command line

Command line interface to test the detection / recognition based on an image:

usage: get_face_recognition IMAGE [-k ALIGN_PATH] [-s NET_PATH] [-v]

Run the command on an example image:

rosrun image_recognition_openface get_face_recognition `rospack find image_recognition_openface`/doc/example.png

This will lookup this image in the image_recognition_openface/doc folder and perform recognitions

![Example](doc/example.png)

Output:

[RecognizedFace(roi=(374, 188, 108, 123), l2_distances=[]), RecognizedFace(roi=(72, 147, 88, 105), l2_distances=[]), RecognizedFace(roi=(377, 95, 74, 86), l2_distances=[]), RecognizedFace(roi=(149, 26, 74, 86), l2_distances=[]), RecognizedFace(roi=(52, 47, 75, 86), l2_distances=[]), RecognizedFace(roi=(246, 115, 88, 102), l2_distances=[]), RecognizedFace(roi=(0, 0, 42, 60), l2_distances=[]), RecognizedFace(roi=(336, 33, 74, 86), l2_distances=[]), RecognizedFace(roi=(228, 0, 62, 60), l2_distances=[])]

Since no faces were trained, the l2_distances will not be calculated of-course.
1 change: 1 addition & 0 deletions image_recognition_face_recognition/docs
Submodule docs added at e81558
38 changes: 38 additions & 0 deletions image_recognition_face_recognition/package.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?xml version="1.0"?>
<?xml-model
href="http://download.ros.org/schema/package_format3.xsd"
schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>image_recognition_face_recognition</name>
<version>0.0.1</version>
<description>The image_recognition_face_recognition package</description>

<maintainer email="[email protected]">iason</maintainer>

<license>MIT</license>

<buildtool_depend>catkin</buildtool_depend>

<buildtool_depend>python3-setuptools</buildtool_depend>

<exec_depend>roscpp</exec_depend>
<exec_depend>cv_bridge</exec_depend>
<exec_depend>diagnostic_updater</exec_depend>
<exec_depend>image_recognition_msgs</exec_depend>
<exec_depend>image_recognition_util</exec_depend>
<exec_depend>python-dlib</exec_depend> <!--pip package-->
<exec_depend>python3-numpy</exec_depend>
<exec_depend>python3-opencv</exec_depend>
<exec_depend>rospy</exec_depend>

<test_depend>catkin_lint_cmake</test_depend>

<doc_depend>python3-sphinx</doc_depend>
<doc_depend>python-sphinx-autoapi-pip</doc_depend>
<doc_depend>python-sphinx-rtd-theme-pip</doc_depend>
<doc_depend>python3-yaml</doc_depend>

<export>
<rosdoc config="rosdoc.yaml" />
</export>
</package>
3 changes: 3 additions & 0 deletions image_recognition_face_recognition/rosdoc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- builder: sphinx
sphinx_root_dir: docs
name: Python API
Loading

0 comments on commit afcf4c1

Please sign in to comment.