@@ -23,7 +23,7 @@ OpenPose is freely available for free non-commercial use, and may be redistribut
Library main functionality:
* Multi-person 15 or **18-keypoint body pose** estimation and rendering. **Running time invariant of number of people** on the image.
* Multi-person 15 or **18-keypoint body pose** estimation and rendering. **Running time invariant to number of people** on the image.
* Multi-person **2x21-keypoint hand** estimation and rendering. Note: In this initial version, **running time** linearly **depends** on the **number of people** on the image. **Coming soon (in around 1-5 weeks)!**
...
...
@@ -76,8 +76,6 @@ The pose estimation work is based on the C++ code from [the ECCV 2016 demo](http
2.[OpenPose Wrapper](#openpose-wrapper)
3.[OpenPose Library](#openpose-library)
4.[Output](#output)
1.[Output Format](#output-format)
2.[Reading Saved Results](#reading-saved-results)
5.[OpenPose Benchmark](#openpose-benchmark)
6.[Send Us Your Feedback!](#send-us-your-feedback)
@@ -28,7 +28,7 @@ DEFINE_int32(logging_level, 3, "The logging level. Inte
DEFINE_string(image_path,"examples/media/COCO_val2014_000000000192.jpg","Process the desired image.");
// OpenPose
DEFINE_string(model_pose,"COCO","Model to be used (e.g. COCO, MPI, MPI_4_layers).");
DEFINE_string(model_folder,"models/","Folder where the pose models (COCO and MPI) are located.");
DEFINE_string(model_folder,"models/","Folder path (absolute or relative) where the models (pose, face, ...) are located.");
DEFINE_string(net_resolution,"656x368","Multiples of 16. If it is increased, the accuracy usually increases. If it is decreased, the speed increases.");
DEFINE_string(resolution,"1280x720","The image resolution (display). Use \"-1x-1\" to force the program to use the default images resolution.");
@@ -28,7 +28,7 @@ DEFINE_int32(logging_level, 3, "The logging level. Inte
DEFINE_string(image_path,"examples/media/COCO_val2014_000000000192.jpg","Process the desired image.");
// OpenPose
DEFINE_string(model_pose,"COCO","Model to be used (e.g. COCO, MPI, MPI_4_layers).");
DEFINE_string(model_folder,"models/","Folder where the pose models (COCO and MPI) are located.");
DEFINE_string(model_folder,"models/","Folder path (absolute or relative) where the models (pose, face, ...) are located.");
DEFINE_string(net_resolution,"656x368","Multiples of 16. If it is increased, the accuracy usually increases. If it is decreased, the speed increases.");
DEFINE_string(resolution,"1280x720","The image resolution (display). Use \"-1x-1\" to force the program to use the default images resolution.");
* Hands code is in development phase. Not included in this version.
...
...
@@ -98,6 +105,8 @@ namespace op
floatscaleNetToOutput;/**< Scale ratio between the net output and the final output Datum::cvOutputData. */
std::vector<float>scaleRatios;/**< Scale ratios between each scale (e.g. flag `num_scales`). Used to resize the different scales. */
std::pair<int,std::string>elementRendered;/**< Pair with the element key id POSE_BODY_PART_MAPPING on `pose/poseParameters.hpp` and its mapped value (e.g. 1 and "Neck"). */
...
...
@@ -167,7 +176,7 @@ namespace op
* @param datum Datum to be compared.
* @result Whether the instance satisfies the condition with respect to datum.
*/
inlinebooloperator<(constDatum&datum)const
inlinebooloperator<(constDatum&datum)const
{
returnid<datum.id;
}
...
...
@@ -176,7 +185,7 @@ namespace op
* @param datum Datum to be compared.
* @result Whether the instance satisfies the condition with respect to datum.
*/
inlinebooloperator>(constDatum&datum)const
inlinebooloperator>(constDatum&datum)const
{
returnid>datum.id;
}
...
...
@@ -185,7 +194,7 @@ namespace op
* @param datum Datum to be compared.
* @result Whether the instance satisfies the condition with respect to datum.
*/
inlinebooloperator<=(constDatum&datum)const
inlinebooloperator<=(constDatum&datum)const
{
returnid<=datum.id;
}
...
...
@@ -194,7 +203,7 @@ namespace op
* @param datum Datum to be compared.
* @result Whether the instance satisfies the condition with respect to datum.
*/
inlinebooloperator>=(constDatum&datum)const
inlinebooloperator>=(constDatum&datum)const
{
returnid>=datum.id;
}
...
...
@@ -203,7 +212,7 @@ namespace op
* @param datum Datum to be compared.
* @result Whether the instance satisfies the condition with respect to datum.
*/
inlinebooloperator==(constDatum&datum)const
inlinebooloperator==(constDatum&datum)const
{
returnid==datum.id;
}
...
...
@@ -212,7 +221,7 @@ namespace op
* @param datum Datum to be compared.
* @result Whether the instance satisfies the condition with respect to datum.
// It mostly follows the Caffe::layer implementation, so Caffe users can easily use it. However, in order to keep the compatibility with any generic Caffe version,
// It mostly follows the Caffe::layer implementation, so Caffe users can easily use it. However, in order to keep the
// compatibility with any generic Caffe version,
// we keep this 'layer' inside our library rather than in the Caffe code.
inline __device__ T cubicResize(const T* const sourcePtr, const T xSource, const T ySource, const int widthSource, const int heightSource, const int widthSourcePtr)
inline __device__ T bicubicInterpolate(const T* const sourcePtr, const T xSource, const T ySource, const int widthSource,