Skip to content
This repository has been archived by the owner on Aug 7, 2024. It is now read-only.

Adds human pose estimation #177

Open
wants to merge 20 commits into
base: dev-ov2020.3
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,17 +68,17 @@ Currently, the inference feature list is supported:
- Face Detection:
```/ros_openvino_toolkit/face_detection```([object_msgs::ObjectsInBoxes](https://github.com/intel/object_msgs/blob/master/msg/ObjectsInBoxes.msg))
- Emotion Recognition:
```/ros_openvino_toolkit/emotions_recognition```([people_msgs::EmotionsStamped](https://github.com/intel/ros_openvino_toolkit/blob/master/people_msgs/msg/EmotionsStamped.msg))
```/ros_openvino_toolkit/emotions_recognition```([vino_people_msgs::EmotionsStamped](https://github.com/intel/ros_openvino_toolkit/blob/master/vino_people_msgs/msg/EmotionsStamped.msg))
- Age and Gender Recognition:
```/ros_openvino_toolkit/age_genders_Recognition```([people_msgs::AgeGenderStamped](https://github.com/intel/ros_openvino_toolkit/blob/master/people_msgs/msg/AgeGenderStamped.msg))
```/ros_openvino_toolkit/age_genders_Recognition```([vino_people_msgs::AgeGenderStamped](https://github.com/intel/ros_openvino_toolkit/blob/master/vino_people_msgs/msg/AgeGenderStamped.msg))
- Head Pose Estimation:
```/ros_openvino_toolkit/headposes_estimation```([people_msgs::HeadPoseStamped](https://github.com/intel/ros_openvino_toolkit/blob/master/people_msgs/msg/HeadPoseStamped.msg))
```/ros_openvino_toolkit/headposes_estimation```([vino_people_msgs::HeadPoseStamped](https://github.com/intel/ros_openvino_toolkit/blob/master/vino_people_msgs/msg/HeadPoseStamped.msg))
- Object Detection:
```/ros_openvino_toolkit/detected_objects```([object_msgs::ObjectsInBoxes](https://github.com/intel/object_msgs/blob/master/msg/ObjectsInBoxes.msg))
- Object Segmentation:
```/ros_openvino_toolkit/segmented_obejcts```([people_msgs::ObjectsInMasks](https://github.com/intel/ros_openvino_toolkit/blob/devel/people_msgs/msg/ObjectsInMasks.msg))
```/ros_openvino_toolkit/segmented_obejcts```([vino_people_msgs::ObjectsInMasks](https://github.com/intel/ros_openvino_toolkit/blob/devel/vino_people_msgs/msg/ObjectsInMasks.msg))
- Person Reidentification:
```/ros_openvino_toolkit/reidentified_persons```([people_msgs::ReidentificationStamped](https://github.com/intel/ros_openvino_toolkit/blob/devel/people_msgs/msg/ReidentificationStamped.msg))
```/ros_openvino_toolkit/reidentified_persons```([vino_people_msgs::ReidentificationStamped](https://github.com/intel/ros_openvino_toolkit/blob/devel/vino_people_msgs/msg/ReidentificationStamped.msg))
- Rviz Output:
```/ros_openvino_toolkit/image_rviz```([sensor_msgs::Image](http://docs.ros.org/melodic/api/sensor_msgs/html/msg/Image.html))

Expand All @@ -88,11 +88,11 @@ Currently, the inference feature list is supported:
- Face Detection Service:
```/detect_face``` ([object_msgs::DetectObject](https://github.com/intel/object_msgs/blob/master/srv/DetectObject.srv))
- Age & Gender Detection Service:
```/detect_age_gender``` ([people_msgs::AgeGender](https://github.com/intel/ros_openvino_toolkit/blob/master/people_msgs/srv/AgeGenderSrv.srv))
```/detect_age_gender``` ([vino_people_msgs::AgeGender](https://github.com/intel/ros_openvino_toolkit/blob/master/vino_people_msgs/srv/AgeGenderSrv.srv))
- Headpose Detection Service:
```/detect_head_pose``` ([people_msgs::HeadPose](https://github.com/intel/ros_openvino_toolkit/blob/master/people_msgs/srv/HeadPoseSrv.srv))
```/detect_head_pose``` ([vino_people_msgs::HeadPose](https://github.com/intel/ros_openvino_toolkit/blob/master/vino_people_msgs/srv/HeadPoseSrv.srv))
- Emotion Detection Service:
```/detect_emotion``` ([people_msgs::Emotion](https://github.com/intel/ros_openvino_toolkit/blob/master/people_msgs/srv/EmotionSrv.srv))
```/detect_emotion``` ([vino_people_msgs::Emotion](https://github.com/intel/ros_openvino_toolkit/blob/master/vino_people_msgs/srv/EmotionSrv.srv))


### RViz
Expand Down Expand Up @@ -249,7 +249,7 @@ One-step installation scripts are provided for the dependencies' installation. P
```
Run example application with an absolute path of an image on another console:
```bash
rosrun dynamic_vino_sample image_object_client ~/catkin_ws/src/ros_openvino_toolkit/data/images/car.png
rosrun vino_sample image_object_client ~/catkin_ws/src/ros_openvino_toolkit/data/images/car.png
```
* run face detection service sample code input from Image
Run image processing service:
Expand All @@ -258,7 +258,7 @@ One-step installation scripts are provided for the dependencies' installation. P
```
Run example application with an absolute path of an image on another console:
```bash
rosrun dynamic_vino_sample image_people_client ~/catkin_ws/src/ros_openvino_toolkit/data/images/team.jpg
rosrun vino_sample image_people_client ~/catkin_ws/src/ros_openvino_toolkit/data/images/team.jpg
```
# TODO Features
* Support **result filtering** for inference process, so that the inference results can be filtered to different subsidiary inference. For example, given an image, firstly we do Object Detection on it, secondly we pass cars to vehicle brand recognition and pass license plate to license number recognition.
Expand Down
8 changes: 4 additions & 4 deletions doc/BINARY_VERSION_README.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,15 +177,15 @@ sudo ln -s ~/catkin_ws/src/ros_openvino_toolkit /opt/openvino_toolkit/ros_openvi
```bash
roslaunch vino_launch pipeline_image.launch
```
* run object detection sample code input from RealSenseCamera.(connect Intel® Neural Compute Stick 2)
* run object detection sample code input from RealSenseCamera.
```bash
roslaunch vino_launch pipeline_object.launch
```
* run object detection sample code input from RealSenseCameraTopic.(connect Intel® Neural Compute Stick 2)
```bash
roslaunch vino_launch pipeline_object_topic.launch
```
* run object segmentation sample code input from RealSenseCameraTopic.(connect Intel® Neural Compute Stick 2)
* run object segmentation sample code input from RealSenseCameraTopic.
```bash
roslaunch vino_launch pipeline_segmentation.launch
```
Expand All @@ -204,7 +204,7 @@ sudo ln -s ~/catkin_ws/src/ros_openvino_toolkit /opt/openvino_toolkit/ros_openvi
```
Run example application with an absolute path of an image on another console:
```bash
rosrun dynamic_vino_sample image_object_client ~/catkin_ws/src/ros_openvino_toolkit/data/images/car.png
rosrun vino_sample image_object_client ~/catkin_ws/src/ros_openvino_toolkit/data/images/car.png
```
* run people detection service sample code input from Image
Run image processing service:
Expand All @@ -213,7 +213,7 @@ sudo ln -s ~/catkin_ws/src/ros_openvino_toolkit /opt/openvino_toolkit/ros_openvi
```
Run example application with an absolute path of an image on another console:
```bash
rosrun dynamic_vino_sample image_people_client ~/catkin_ws/src/ros_openvino_toolkit/data/images/team.jpg
rosrun vino_sample image_people_client ~/catkin_ws/src/ros_openvino_toolkit/data/images/team.jpg
```
## 6. Known Issues
* Possible problems
Expand Down

This file was deleted.

3 changes: 1 addition & 2 deletions script/environment_setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,13 @@ echo "Set OTHER_DEPENDENCY to $OTHER_DEPENDENCY"
# Clean Existing Directories
if [ "$CLEAN" == "1" ]; then
read -n1 -p "The clean operation will delete some manually created directories,
including ~/code, ~/catkin_ws, /opt/intel, /opt/openvino_toolkit, and OpenVINO tar ball.
including ~/code, /opt/intel, /opt/openvino_toolkit, and OpenVINO tar ball.
Do you want to clean existing directories[Y/N]?" answer
case $answer in
Y|y) echo
echo "===================Cleaning...===================================="
echo $ROOT_PASSWD | sudo -S rm -rf ~/code
echo $ROOT_PASSWD | sudo -S rm -rf /opt/intel
rm -rf ~/catkin_ws
echo $ROOT_PASSWD | sudo -S rm -rf /opt/openvino_toolkit
if [[ $system_ver = "16.04" && -L "/usr/lib/x86_64-linux-gnu/libboost_python3.so" ]]; then
echo $ROOT_PASSWD | sudo -S rm /usr/lib/x86_64-linux-gnu/libboost_python3.so
Expand Down
3 changes: 1 addition & 2 deletions script/environment_setup_binary.sh
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,12 @@ if [ "$CLEAN" == "1" ]; then
echo "===================Clean Existing Directories...===================================="

read -n1 -p "The clean operation will delete some manually created directories,
including ~/code, ~/catkin_ws, /opt/intel, /opt/openvino_toolkit, and OpenVINO tar ball.
including ~/code, /opt/intel, /opt/openvino_toolkit, and OpenVINO tar ball.
Do you want to clean existing directories[Y/N]?" answer
case $answer in
Y|y) echo
echo "===================Cleaning...===================================="
echo $ROOT_PASSWD | sudo -S rm -rf ~/code
rm -rf ~/catkin_ws
echo $ROOT_PASSWD | sudo -S rm -rf /opt/intel
echo $ROOT_PASSWD | sudo -S rm -rf /opt/openvino_toolkit
if [[ $system_ver = "16.04" && -L "/usr/lib/x86_64-linux-gnu/libboost_python3.so" ]]; then
Expand Down
34 changes: 34 additions & 0 deletions skel-track-notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Notes for Skeleton Tracking Package

* Model URL: https://docs.openvinotoolkit.org/latest/_models_intel_human_pose_estimation_0001_description_human_pose_estimation_0001.html

## Installation

```bash
$ cd /opt/openvino_toolkit/open_model_zoo/tools/downloader
$ python3 downloader.py --name human-pose-estimation-0001
```

## Keypoints

| Id | Keypoint Name |
| -- | -- |
| 0 | nose |
| 1 | neck |
| 2 | right shoulder |
| 3 | right elbow |
| 4 | right wrist |
| 5 | left shoulder |
| 6 | left elbow |
| 7 | left wrist |
| 8 | right hip |
| 9 | right knee |
| 10 | right ankle |
| 11 | left hip |
| 12 | left knee |
| 13 | left ankle |
| 14 | right eye |
| 15 | left eye |
| 16 | right ear |
| 17 | left ear |

Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

cmake_minimum_required (VERSION 2.8.3)

project(dynamic_vino_lib)
project(vino_core_lib)

message(STATUS "Looking for inference engine configuration file at: ${CMAKE_PREFIX_PATH}")
find_package(InferenceEngine 1.1)
Expand All @@ -29,7 +29,7 @@ find_package(
std_msgs
sensor_msgs
object_msgs
people_msgs
vino_people_msgs
image_transport
cv_bridge
InferenceEngine
Expand Down Expand Up @@ -147,6 +147,8 @@ add_library(${PROJECT_NAME} SHARED
src/inferences/object_detection.cpp
src/inferences/object_segmentation.cpp
src/inferences/person_reidentification.cpp
src/inferences/human_pose_estimation.cpp
src/inferences/peak.cpp
src/inputs/realsense_camera.cpp
src/inputs/realsense_camera_topic.cpp
src/inputs/standard_camera.cpp
Expand All @@ -160,6 +162,7 @@ add_library(${PROJECT_NAME} SHARED
src/models/object_detection_model.cpp
src/models/object_segmentation_model.cpp
src/models/person_reidentification_model.cpp
src/models/human_pose_estimation_model.cpp
src/outputs/image_window_output.cpp
src/outputs/ros_topic_output.cpp
src/outputs/rviz_output.cpp
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@
* @brief A header file with declaration for NetworkEngine class
* @file engine.h
*/
#ifndef DYNAMIC_VINO_LIB_ENGINES_ENGINE_H
#define DYNAMIC_VINO_LIB_ENGINES_ENGINE_H
#ifndef VINO_CORE_LIB_ENGINES_ENGINE_H
#define VINO_CORE_LIB_ENGINES_ENGINE_H

#pragma once

#include "dynamic_vino_lib/models/base_model.h"
#include "vino_core_lib/models/base_model.h"
#include "inference_engine.hpp"

/**
Expand Down Expand Up @@ -65,4 +65,4 @@ class Engine
};
} // namespace Engines

#endif // DYNAMIC_VINO_LIB_ENGINES_ENGINE_H
#endif // VINO_CORE_LIB_ENGINES_ENGINE_H
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,16 @@
* @file factory.h
*/

#ifndef DYNAMIC_VINO_LIB_FACTORY_H
#define DYNAMIC_VINO_LIB_FACTORY_H
#ifndef VINO_CORE_LIB_FACTORY_H
#define VINO_CORE_LIB_FACTORY_H

#include <inference_engine.hpp>

#include <memory>
#include <string>

#include "dynamic_vino_lib/common.h"
#include "dynamic_vino_lib/inputs/base_input.h"
#include "vino_core_lib/common.h"
#include "vino_core_lib/inputs/base_input.h"
#include "extension/ext_list.hpp"

/**
Expand Down Expand Up @@ -67,4 +67,4 @@ class Factory
const std::string& custom_cldnn_message, bool performance_message);
};

#endif // DYNAMIC_VINO_LIB_FACTORY_H
#endif // VINO_CORE_LIB_FACTORY_H
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,16 @@
* @brief A header file with declaration for AgeGenderDetection Class
* @file age_gender_recignition.h
*/
#ifndef DYNAMIC_VINO_LIB_INFERENCES_AGE_GENDER_DETECTION_H
#define DYNAMIC_VINO_LIB_INFERENCES_AGE_GENDER_DETECTION_H
#ifndef VINO_CORE_LIB_INFERENCES_AGE_GENDER_DETECTION_H
#define VINO_CORE_LIB_INFERENCES_AGE_GENDER_DETECTION_H

#include <memory>
#include <string>
#include <vector>

#include "dynamic_vino_lib/engines/engine.h"
#include "dynamic_vino_lib/inferences/base_inference.h"
#include "dynamic_vino_lib/models/age_gender_detection_model.h"
#include "vino_core_lib/engines/engine.h"
#include "vino_core_lib/inferences/base_inference.h"
#include "vino_core_lib/models/age_gender_detection_model.h"
#include "inference_engine.hpp"
#include "opencv2/opencv.hpp"

Expand All @@ -36,7 +36,7 @@ namespace Outputs
class BaseOuput;
}

namespace dynamic_vino_lib
namespace vino_core_lib
{
/**
* @class AgeGenderResult
Expand Down Expand Up @@ -76,7 +76,7 @@ class AgeGenderResult : public Result
class AgeGenderDetection : public BaseInference
{
public:
using Result = dynamic_vino_lib::AgeGenderResult;
using Result = vino_core_lib::AgeGenderResult;
AgeGenderDetection();
~AgeGenderDetection() override;
/**
Expand Down Expand Up @@ -114,7 +114,7 @@ class AgeGenderDetection : public BaseInference
* to the frame generated by the input device.
* @param[in] idx The index of the result.
*/
const dynamic_vino_lib::Result* getLocationResult(int idx) const override;
const vino_core_lib::Result* getLocationResult(int idx) const override;
/**
* @brief Get the name of the Inference instance.
* @return The name of the Inference instance.
Expand All @@ -131,6 +131,6 @@ class AgeGenderDetection : public BaseInference
std::shared_ptr<Models::AgeGenderDetectionModel> valid_model_;
std::vector<Result> results_;
};
} // namespace dynamic_vino_lib
} // namespace vino_core_lib

#endif // DYNAMIC_VINO_LIB_INFERENCES_AGE_GENDER_DETECTION_H
#endif // VINO_CORE_LIB_INFERENCES_AGE_GENDER_DETECTION_H
Loading