From 1d46c088fc34a4d7902e9ba5d8343dc2ca8a55ed Mon Sep 17 00:00:00 2001 From: Gines Hidalgo Date: Thu, 19 Nov 2020 00:42:23 -0500 Subject: [PATCH] Doc ordered in a more intuitive way Signed-off-by: Gines Hidalgo --- README.md | 21 ++-- appveyor.yml | 4 +- doc/{modules => }/3d_reconstruction_module.md | 6 +- doc/{ => advanced}/UML/1_0_0rc3/UML.mdj | 0 doc/{ => advanced}/UML/1_0_0rc3/UML.pdf | Bin doc/{ => advanced}/UML/1_0_0rc3/UML.png | Bin doc/{ => advanced}/library_add_new_module.md | 0 doc/advanced/library_extend_functionality.md | 20 ++++ doc/{ => advanced}/library_how_to_develop.md | 0 doc/{ => advanced}/library_introduction.md | 6 +- doc/{ => advanced}/library_overview.md | 10 +- .../Chessboard_in_PDF/pattern.eps | Bin .../Chessboard_in_PDF/pattern.pdf | 0 .../README.md} | 2 +- .../installation_deprecated.md | 0 doc/installation.md | 10 +- .../installation_jetson_tx1.md | 0 .../installation_jetson_tx2_jetpack3.1.md | 0 .../installation_jetson_tx2_jetpack3.3.md | 0 doc/library_extend_functionality.md | 20 ---- doc/output.md | 2 +- doc/{modules => }/python_module.md | 2 +- doc/release_notes.md | 97 +++++++++--------- doc/released_features.md | 12 +-- examples/calibration/calibration.cpp | 4 +- src/openpose/3d/poseTriangulation.cpp | 4 +- 26 files changed, 109 insertions(+), 111 deletions(-) rename doc/{modules => }/3d_reconstruction_module.md (96%) rename doc/{ => advanced}/UML/1_0_0rc3/UML.mdj (100%) mode change 100755 => 100644 rename doc/{ => advanced}/UML/1_0_0rc3/UML.pdf (100%) rename doc/{ => advanced}/UML/1_0_0rc3/UML.png (100%) rename doc/{ => advanced}/library_add_new_module.md (100%) create mode 100644 doc/advanced/library_extend_functionality.md rename doc/{ => advanced}/library_how_to_develop.md (100%) rename doc/{ => advanced}/library_introduction.md (76%) rename doc/{ => advanced}/library_overview.md (97%) rename doc/{ => calibration}/Chessboard_in_PDF/pattern.eps (100%) rename doc/{ => calibration}/Chessboard_in_PDF/pattern.pdf (100%) rename doc/{modules/calibration_module.md => calibration/README.md} (99%) rename doc/{ => deprecated}/installation_deprecated.md (100%) rename doc/{ => jetson_tx}/installation_jetson_tx1.md (100%) rename doc/{ => jetson_tx}/installation_jetson_tx2_jetpack3.1.md (100%) rename doc/{ => jetson_tx}/installation_jetson_tx2_jetpack3.3.md (100%) delete mode 100644 doc/library_extend_functionality.md rename doc/{modules => }/python_module.md (98%) diff --git a/README.md b/README.md index 80478220..5f40ac10 100644 --- a/README.md +++ b/README.md @@ -48,19 +48,18 @@ It is **authored by [Gines Hidalgo](https://www.gineshidalgo.com), [Zhe Cao](htt - [**Foot dataset website**](https://cmu-perceptual-computing-lab.github.io/foot_keypoint_dataset/). - **Others**: - Available: command-line demo, C++ wrapper, and C++ API. - - [**Python API**](doc/modules/python_module.md). + - [**Python API**](doc/python_module.md). - [**Unity Plugin**](https://github.com/CMU-Perceptual-Computing-Lab/openpose_unity_plugin). - CUDA (Nvidia GPU), OpenCL (AMD GPU), and CPU-only (no GPU) versions. +For further details, check [all released features](doc/released_features.md) and [release notes](doc/release_notes.md). -## Latest Features -- Sep 2019: [**Training code released**](https://github.com/CMU-Perceptual-Computing-Lab/openpose_train)! -- Jan 2019: [**Unity plugin released**](https://github.com/CMU-Perceptual-Computing-Lab/openpose_unity_plugin)! -- Jan 2019: [**Improved Python API**](doc/modules/python_module.md) released! Including body, face, hands, and all the functionality of the C++ API! -- Dec 2018: [**Foot dataset released**](https://cmu-perceptual-computing-lab.github.io/foot_keypoint_dataset) and [**new paper released**](https://arxiv.org/abs/1812.08008)! -For further details, check [all released features](doc/released_features.md) and [release notes](doc/release_notes.md). +## Related Work +- Since Sep 2019: [**Training code**](https://github.com/CMU-Perceptual-Computing-Lab/openpose_train)! +- Since Jan 2019: [**Unity plugin**](https://github.com/CMU-Perceptual-Computing-Lab/openpose_unity_plugin)! +- Since Dec 2018: [**Foot dataset**](https://cmu-perceptual-computing-lab.github.io/foot_keypoint_dataset) and [**new paper released**](https://arxiv.org/abs/1812.08008)! @@ -107,7 +106,7 @@ This analysis was performed using the same images for each algorithm and a batch ## Contents 1. [Features](#features) -2. [Latest Features](#latest-features) +2. [Related Work](#related-work) 3. [Results](#results) 4. [Installation, Reinstallation and Uninstallation](#installation-reinstallation-and-uninstallation) 5. [Quick Start](#quick-start) @@ -138,13 +137,11 @@ Most users do not need the OpenPose C++/Python API, but can simply use the OpenP bin\OpenPoseDemo.exe --video examples\media\video.avi ``` -- **Calibration toolbox**: To easily calibrate your cameras for 3-D OpenPose or any other stereo vision task. See [doc/modules/calibration_module.md](doc/modules/calibration_module.md). - -- **OpenPose C++ API**: If you want to read a specific input, and/or add your custom post-processing function, and/or implement your own display/saving, check the C++ API tutorial on [examples/tutorial_api_cpp/](examples/tutorial_api_cpp/) and [doc/library_introduction.md](doc/library_introduction.md). You can create your custom code on [examples/user_code/](examples/user_code/) and quickly compile it with CMake when compiling the whole OpenPose project. Quickly **add your custom code**: See [examples/user_code/README.md](examples/user_code/README.md) for further details. +- **OpenPose C++ API**: If you want to read a specific input, and/or add your custom post-processing function, and/or implement your own display/saving, check the C++ API tutorial on [examples/tutorial_api_cpp/](examples/tutorial_api_cpp/). You can easily **create your custom code** on [examples/user_code/](examples/user_code/) and CMake will automatically compile it together with the whole OpenPose project. See [examples/user_code/README.md](examples/user_code/README.md) for more details. - **OpenPose Python API**: Analogously to the C++ API, find the tutorial for the Python API on [examples/tutorial_api_python/](examples/tutorial_api_python/). -- **Adding an extra module**: Check [doc/library_add_new_module.md](./doc/library_add_new_module.md). +- **Calibration toolbox**: To easily calibrate your cameras for 3-D OpenPose or any other stereo vision task. See [doc/calibration/README.md](doc/calibration/README.md). - **Standalone face or hand detector**: - **Face** keypoint detection **without body** keypoint detection: If you want to speed it up (but also reduce amount of detected faces), check the OpenCV-face-detector approach in [doc/standalone_face_or_hand_keypoint_detector.md](doc/standalone_face_or_hand_keypoint_detector.md). diff --git a/appveyor.yml b/appveyor.yml index 299612b3..394e8b6b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -25,10 +25,10 @@ after_build: - ps: Get-ChildItem -Path 3rdparty/*.lib -Recurse -File | Copy-Item -Destination artifacts/lib - ps: Copy-Item models -Recurse -Destination artifacts/ - ps: cd artifacts - - ps: 7z a ..\openpose.zip . + # - ps: 7z a ..\openpose.zip . # `artifacts` disabled - ps: cd .. # Test - - ps: .\artifacts\bin\openpose.bin --image_dir examples/media/ --net_resolution -1x32 --write_json output/ --write_images output/ --display 0 + - ps: .\artifacts\bin\OpenPoseDemo.exe --image_dir examples/media/ --net_resolution -1x32 --write_json output/ --write_images output/ --display 0 # `artifacts` disabled because of the AppVeyor crash: "Maximum allowed artifact storage size of 50000 Mb will be exceeded." # artifacts: diff --git a/doc/modules/3d_reconstruction_module.md b/doc/3d_reconstruction_module.md similarity index 96% rename from doc/modules/3d_reconstruction_module.md rename to doc/3d_reconstruction_module.md index d4526ec4..ecc35755 100644 --- a/doc/modules/3d_reconstruction_module.md +++ b/doc/3d_reconstruction_module.md @@ -23,13 +23,13 @@ This module performs 3-D keypoint (body, face, and hand) reconstruction and rend ## Installation -Check [doc/installation.md#3d-reconstruction-module](../installation.md#3d-reconstruction-module) for installation steps. +Check [doc/installation.md#3d-reconstruction-module](./installation.md#3d-reconstruction-module) for installation steps. ## Non Linear Optimization -In order to increase the 3-D reconstruction accuracy, OpenPose optionally performs non-linear optimization if Ceres solver support is enabled (only available in Ubuntu for now). To enable it, check [doc/installation.md#3d-reconstruction-module](../installation.md#3d-reconstruction-module) for more details. +In order to increase the 3-D reconstruction accuracy, OpenPose optionally performs non-linear optimization if Ceres solver support is enabled (only available in Ubuntu for now). To enable it, check [doc/installation.md#3d-reconstruction-module](./installation.md#3d-reconstruction-module) for more details. @@ -69,7 +69,7 @@ This demo assumes n arbitrary stereo cameras from the FLIR company (formerly Poi The user must manually get the intrinsic and extrinsic parameters of the stereo-cameras. Note, we will assume `Flir` cameras, which is specified by default with the flag `--camera_parameter_path "models/cameraParameters/flir/"`. Otherwise, change the path to your camera name accordingly. There are 2 alternatives to calibrate the cameras: -1. Using the [OpenPose calibration toolbox](./calibration_module.md#). +1. Using the OpenPose calibration toolbox, [doc/calibration/README.md](./calibration/README.md). 2. Using your own calibration toolbox (or if you already know the camera parameters of your cameras): 1. Create a xml file for each camera named as `models/cameraParameters/flir/{camera_serial_number}.xml`. 2. The elements inside each xml file are the extrinsic parameters of the camera (`CameraMatrix`), the intrinsic parameters (`Intrinsics`), and the distortion coefficients (`Distortion`). Copy the format from `models/cameraParameters/flir/17012332.xml.example`. For the extrinsic parameters of the camera, it allows you to set the coordinate origin (so that 3-d keypoints are distances with respect to that origin). diff --git a/doc/UML/1_0_0rc3/UML.mdj b/doc/advanced/UML/1_0_0rc3/UML.mdj old mode 100755 new mode 100644 similarity index 100% rename from doc/UML/1_0_0rc3/UML.mdj rename to doc/advanced/UML/1_0_0rc3/UML.mdj diff --git a/doc/UML/1_0_0rc3/UML.pdf b/doc/advanced/UML/1_0_0rc3/UML.pdf similarity index 100% rename from doc/UML/1_0_0rc3/UML.pdf rename to doc/advanced/UML/1_0_0rc3/UML.pdf diff --git a/doc/UML/1_0_0rc3/UML.png b/doc/advanced/UML/1_0_0rc3/UML.png similarity index 100% rename from doc/UML/1_0_0rc3/UML.png rename to doc/advanced/UML/1_0_0rc3/UML.png diff --git a/doc/library_add_new_module.md b/doc/advanced/library_add_new_module.md similarity index 100% rename from doc/library_add_new_module.md rename to doc/advanced/library_add_new_module.md diff --git a/doc/advanced/library_extend_functionality.md b/doc/advanced/library_extend_functionality.md new file mode 100644 index 00000000..0c7683ba --- /dev/null +++ b/doc/advanced/library_extend_functionality.md @@ -0,0 +1,20 @@ +OpenPose Library - How to Develop OpenPose +==================================== + +If you intend to extend the functionality of our library: + +1. Read the [README.md](../../README.md) page. + +2. Check the basic library overview doc on [doc/advanced/library_overview.md](library_overview.md). + +3. Read, understand and play with the basic real time pose demo source code [examples/openpose/openpose.cpp](../../examples/openpose/openpose.cpp) and [examples/tutorial_api_cpp](../../examples/tutorial_api_cpp). It includes all the functionality of our library, and it has been properly commented. + +4. Read, understand and play with the other tutorials in [examples/](../../examples/). It includes more specific examples. + +5. Check the basic UML diagram on the [doc/advanced/UML](./UML/) to get an idea of each module relations. + +6. Take a look to the stucuture of the already existing modules. + +7. The C++ headers files add documentation in [Doxygen](http://www.doxygen.org/) format. Create this documentation by compiling the [include](../../include/) folder with Doxygen. This documentation is slowly but continuously improved. + +8. You can also take a look to the source code or ask us on GitHub. diff --git a/doc/library_how_to_develop.md b/doc/advanced/library_how_to_develop.md similarity index 100% rename from doc/library_how_to_develop.md rename to doc/advanced/library_how_to_develop.md diff --git a/doc/library_introduction.md b/doc/advanced/library_introduction.md similarity index 76% rename from doc/library_introduction.md rename to doc/advanced/library_introduction.md index 2b3ec639..39b3ec5e 100644 --- a/doc/library_introduction.md +++ b/doc/advanced/library_introduction.md @@ -4,7 +4,7 @@ OpenPose C++ API - Introduction The C++ API is ideal if you want to e.g., change internal functions and/or extend the OpenPose functionality. In order to learn the basics: 1. Take a look at the [library Quick Start section](../README.md#quick-start) from the README. -2. OpenPose Overview: Learn the basics about the library source code in [doc/library_overview.md](./library_overview.md). -3. Extending Functionality: Learn how to extend the library in [doc/library_extend_functionality.md](./library_extend_functionality.md). -4. Adding An Extra Module: Learn how to add an extra module in [doc/library_add_new_module.md](./library_add_new_module.md). +2. OpenPose Overview: Learn the basics about the library source code in [doc/advanced/library_overview.md](./library_overview.md). +3. Extending Functionality: Learn how to extend the library in [doc/advanced/library_extend_functionality.md](./library_extend_functionality.md). +4. Adding An Extra Module: Learn how to add an extra module in [doc/advanced/library_add_new_module.md](./library_add_new_module.md). 5. See the Doxygen documentation on [http://cmu-perceptual-computing-lab.github.io/openpose/html/index.html](http://cmu-perceptual-computing-lab.github.io/openpose/html/index.html) or build it from the source code. diff --git a/doc/library_overview.md b/doc/advanced/library_overview.md similarity index 97% rename from doc/library_overview.md rename to doc/advanced/library_overview.md index 428a8b79..07be55cb 100644 --- a/doc/library_overview.md +++ b/doc/advanced/library_overview.md @@ -3,19 +3,19 @@ OpenPose C++ API - Basic Overview -Note: Read [doc/library_introduction.md](./library_introduction.md) before this page. +Note: Read [doc/advanced/library_introduction.md](./library_introduction.md) before this page. ## Modules Diagram

- +

## Main Modules -In order to use and/or slightly extend the OpenPose library, we try to explain the 2 main components on this section. [doc/UML/](../doc/UML/) contains the class diagram of all these modules. +In order to use and/or slightly extend the OpenPose library, we try to explain the 2 main components on this section. [doc/advanced/UML](./UML/) contains the class diagram of all these modules. 1. The basic module: `core`. @@ -120,7 +120,7 @@ There are 3 basic configuration modes: single-threading, multi-threading and sma threadManager.add(threadId++, wPose, queueIn++, queueOut++); // Thread 2, queues 3 -> 3 ``` -3. Smart multi-threading: Some classes are much more faster than others (e.g., pose estimation takes ~100 ms while extracting frames from a video only ~10 ms). In addition, any machine has a limited number of threads. Therefore, the library allows the user to merge the faster threads in order to potentially speed up the code. Check the [real-time pose demo](../examples/openpose/openpose.cpp) too see a more complete example. +3. Smart multi-threading: Some classes are much more faster than others (e.g., pose estimation takes ~100 ms while extracting frames from a video only ~10 ms). In addition, any machine has a limited number of threads. Therefore, the library allows the user to merge the faster threads in order to potentially speed up the code. Check the [real-time pose demo](../../examples/openpose/openpose.cpp) too see a more complete example. ``` auto threadId = 0; auto queueIn = 0; @@ -192,7 +192,7 @@ In order to be initialized, `PoseExtractorCaffe` has the following constructor a 3. `outputSize` is the final desired resolution to be used. The human pose keypoint locations will be scaled to this output size. However, the heat-maps will have the `netOutputSize` size due to performance. -4. `scaleNumber` and `scaleGap` specify the multi-scale parameters. Explained in the [README.md](../README.md), in the demo section. +4. `scaleNumber` and `scaleGap` specify the multi-scale parameters. Explained in the [README.md](../../README.md), in the demo section. 5. `poseModel` specifies the model to load (e.g., COCO or MPI). diff --git a/doc/Chessboard_in_PDF/pattern.eps b/doc/calibration/Chessboard_in_PDF/pattern.eps similarity index 100% rename from doc/Chessboard_in_PDF/pattern.eps rename to doc/calibration/Chessboard_in_PDF/pattern.eps diff --git a/doc/Chessboard_in_PDF/pattern.pdf b/doc/calibration/Chessboard_in_PDF/pattern.pdf similarity index 100% rename from doc/Chessboard_in_PDF/pattern.pdf rename to doc/calibration/Chessboard_in_PDF/pattern.pdf diff --git a/doc/modules/calibration_module.md b/doc/calibration/README.md similarity index 99% rename from doc/modules/calibration_module.md rename to doc/calibration/README.md index 8cb4199f..93b581f9 100644 --- a/doc/modules/calibration_module.md +++ b/doc/calibration/README.md @@ -174,7 +174,7 @@ This is a 3x4 matrix, which represents rotation (R as a 3x3 matrix) and translat ## Using a Different Camera Brand If you plan to use the calibration tool without using OpenPose, you can manually save a video sequence of your desired camera into each of the camera image folders (i.e., in the above example, the `~/Desktop/intrinsics_0`, `~/Desktop/intrinsics_1`, etc. folders). -If you wanna eventually run that camera with OpenPose, check [doc/modules/3d_reconstruction_module.md#using-a-different-camera-brand](./3d_reconstruction_module.md#using-a-different-camera-brand). +If you wanna eventually run that camera with OpenPose, check [doc/3d_reconstruction_module.md#using-a-different-camera-brand](../3d_reconstruction_module.md#using-a-different-camera-brand). diff --git a/doc/installation_deprecated.md b/doc/deprecated/installation_deprecated.md similarity index 100% rename from doc/installation_deprecated.md rename to doc/deprecated/installation_deprecated.md diff --git a/doc/installation.md b/doc/installation.md index 8d76bed2..62dc5dcf 100644 --- a/doc/installation.md +++ b/doc/installation.md @@ -41,8 +41,8 @@ OpenPose - Installation - **Ubuntu 20**. - **Mac OSX** Mavericks and above. - **Ubuntu 14, 16 and 18** as well as **Windows 7 and 8** are no longer officially maintained. However, they should still work (but might require minor changes). - - **Nvidia Jetson TX1** (for JetPack 3.1), installation instructions in [doc/installation_jetson_tx1.md](./installation_jetson_tx1.md). - - **Nvidia Jetson TX2** (for JetPack 3.1 or 3.3), installation instructions in [doc/installation_jetson_tx2_jetpack3.1.md](./installation_jetson_tx2_jetpack3.1.md) and [doc/installation_jetson_tx2_jetpack3.3.md](./installation_jetson_tx2_jetpack3.3.md) respectively. + - **Nvidia Jetson TX1** (for JetPack 3.1), installation instructions in [doc/jetson_tx/installation_jetson_tx1.md](./jetson_tx/installation_jetson_tx1.md). + - **Nvidia Jetson TX2** (for JetPack 3.1 or 3.3), installation instructions in [doc/jetson_tx/installation_jetson_tx2_jetpack3.1.md](./jetson_tx/installation_jetson_tx2_jetpack3.1.md) and [doc/jetson_tx/installation_jetson_tx2_jetpack3.3.md](./jetson_tx/installation_jetson_tx2_jetpack3.3.md) respectively. - OpenPose has also been used on **CentOS** and other **Nvidia Jetson (TK1)** embedded systems. However, we do not officially support them at the moment. - **Requirements** for the default configuration - CUDA (Nvidia GPU) version: @@ -244,7 +244,7 @@ Note: Check the differences between these models in [doc/faq.md#difference-betwe ### Python API -To install the Python API, ensure that the `BUILD_PYTHON` flag is turned on while running CMake GUI and follow the standard installation steps. After the installation, check [doc/modules/python_module.md](./modules/python_module.md) for further details. +To install the Python API, ensure that the `BUILD_PYTHON` flag is turned on while running CMake GUI and follow the standard installation steps. After the installation, check [doc/python_module.md](./python_module.md) for further details. @@ -337,14 +337,14 @@ You can include the 3D reconstruction module by: 3. Follow the CMake installation steps. In addition, set the `WITH_FLIR_CAMERA` (only if Spinnaker was installed) and `WITH_3D_RENDERER` options. 4. Increased accuracy with Ceres solver (Ubuntu only): For extra 3-D reconstruction accuracy, run `sudo apt-get install libeigen3-dev`, install [Ceres solver](http://ceres-solver.org/installation.html), and enable `WITH_CERES` in CMake when installing OpenPose. Ceres is harder to install in Windows, so we have not tested it so far in there. Feel free to make a pull request if you do. -After installation, check the [doc/modules/3d_reconstruction_module.md](./modules/3d_reconstruction_module.md) instructions. +After installation, check the [doc/3d_reconstruction_module.md](./3d_reconstruction_module.md) instructions. ### Calibration Module The calibration module is included by default, but you must also enable `WITH_EIGEN` if you intend to use the extrinsic camera parameter estimation tool. You can set that flag to 2 different values: `BUILD` or `FIND`, check [Requirements and Dependencies](#requirements-and-dependencies) for more information. -After installation, check the [doc/modules/calibration_module.md](./modules/calibration_module.md) instructions. +After installation, check the [doc/calibration/README.md](./calibration/README.md) instructions. diff --git a/doc/installation_jetson_tx1.md b/doc/jetson_tx/installation_jetson_tx1.md similarity index 100% rename from doc/installation_jetson_tx1.md rename to doc/jetson_tx/installation_jetson_tx1.md diff --git a/doc/installation_jetson_tx2_jetpack3.1.md b/doc/jetson_tx/installation_jetson_tx2_jetpack3.1.md similarity index 100% rename from doc/installation_jetson_tx2_jetpack3.1.md rename to doc/jetson_tx/installation_jetson_tx2_jetpack3.1.md diff --git a/doc/installation_jetson_tx2_jetpack3.3.md b/doc/jetson_tx/installation_jetson_tx2_jetpack3.3.md similarity index 100% rename from doc/installation_jetson_tx2_jetpack3.3.md rename to doc/jetson_tx/installation_jetson_tx2_jetpack3.3.md diff --git a/doc/library_extend_functionality.md b/doc/library_extend_functionality.md deleted file mode 100644 index a11da00b..00000000 --- a/doc/library_extend_functionality.md +++ /dev/null @@ -1,20 +0,0 @@ -OpenPose Library - How to Develop OpenPose -==================================== - -If you intend to extend the functionality of our library: - -1. Read the README page. - -2. Check the basic library overview doc on [library_overview.md](library_overview.md). - -3. Read, understand and play with the basic real time pose demo source code [examples/openpose/openpose.cpp](../examples/openpose/openpose.cpp) and [examples/tutorial_api_cpp](../examples/tutorial_api_cpp). It includes all the functionality of our library, and it has been properly commented. - -4. Read, understand and play with the other tutorials in [examples/](../examples/). It includes more specific examples. - -5. Check the basic UML diagram on the [UML folder](UML/) to get an idea of each module relations. - -6. Take a look to the stucuture of the already existing modules. - -7. The C++ headers files add documentation in [Doxygen](http://www.doxygen.org/) format. Create this documentation by compiling the [include](../include/) folder with Doxygen. This documentation is slowly but continuously improved. - -8. You can also take a look to the source code or ask us on GitHub. diff --git a/doc/output.md b/doc/output.md index e9732a95..70a52992 100644 --- a/doc/output.md +++ b/doc/output.md @@ -273,4 +273,4 @@ There are 3 different keypoint `Array` elements in the `Datum` class: ``` ## Camera Matrix Output Format -Check [doc/modules/calibration_module.md#camera-matrix-output-format](./modules/calibration_module.md#camera-matrix-output-format). +Check [doc/calibration/README.md#camera-matrix-output-format](./calibration/README.md#camera-matrix-output-format). diff --git a/doc/modules/python_module.md b/doc/python_module.md similarity index 98% rename from doc/modules/python_module.md rename to doc/python_module.md index 80422a7e..e245f581 100644 --- a/doc/modules/python_module.md +++ b/doc/python_module.md @@ -50,7 +50,7 @@ If run via the command line, you may need to run cmake twice in order for this c ## Installation -Check [doc/installation.md#python-api](../installation.md#python-api) for installation steps. +Check [doc/installation.md#python-api](./installation.md#python-api) for installation steps. The Python API requires python-dev, Numpy (for array management), and OpenCV (for image loading). They can be installed via: diff --git a/doc/release_notes.md b/doc/release_notes.md index 76b3d9d9..0ace69ca 100644 --- a/doc/release_notes.md +++ b/doc/release_notes.md @@ -7,7 +7,7 @@ OpenPose Library - Release Notes 1. Initial version, main functionality: 1. Body keypoint detection and rendering in Ubuntu 14 and 16. 2. It can read an image directory, video or webcam. - 3. It can display the results or storing them on disk. + 3. It can display the results or store them on disk. @@ -27,7 +27,7 @@ OpenPose Library - Release Notes 1. Added face keypoint detection. 2. Added Windows 10 compatibility. 3. Auto-detection of the number of GPUs. - 4. MPI visualization more similar to COCO one. + 4. MPI visualization is more similar to COCO one. 5. Rendering max resolution from 720p to >32k images. 6. GUI info adder working when the worker TDatum has more than 1 Datum. 7. It prints out the error description before throwing the exception (so that it is written on the Windows cmd). @@ -39,7 +39,7 @@ OpenPose Library - Release Notes 4. PoseSaver and its JSON variant renamed as KeypointSaver. 5. PoseJsonCocoSaver renamed as CocoJsonSaver. 3. Main bugs fixed: - 1. All visualization functions moved to same thread, so it works with most OpenCV custom compiled versions. + 1. All visualization functions moved to the same thread, so it works with most OpenCV custom compiled versions. 2. Fixed error on debug mode: `Too many resources requested for launch`. @@ -69,7 +69,7 @@ OpenPose Library - Release Notes 1. Fixed bug in Array::getConstCvMat() if mVolume=0, now returning empty cv::Mat. 2. Fixed bug: `--process_real_time` threw error with webcam. 3. Fixed bug: Face not working when input and output resolutions are different. - 4. Fixed some bugs that prevented debug version to run. + 4. Fixed some bugs that prevented the debug version to run. 5. Face saved in JSON files were called `--body_parts`. Now they are called `--face_keypoints`. @@ -86,15 +86,15 @@ OpenPose Library - Release Notes ## OpenPose 1.0.2 (Sep 3, 2017) 1. Main improvements: 1. Added OpenCV 3.3 compatibility. - 2. Caffe turned into DLL library. + 2. Caffe turned into a DLL library. 3. OpenPose is now completely portable across Windows 10 computers (with Nvidia graphic card). 4. Added OpenPose 1.0.1 portable demo. 5. Removed Python and some unnecessary boost dependencies on the VS project. 6. Replaced all double quotes by angle brackets in include statements (issue #61). 7. Added 3-D reconstruction demo. 8. Auto-detection of the camera index. - 9. Speed up of ~30% in floatPtrToUCharCvMat. - 10. COCO extractor now extracts image ID from the image name itslef (format "string_%d"). Before, only working with validation test, now applicable to e.g., test sets. + 9. Speed up of about 30% in floatPtrToUCharCvMat. + 10. COCO extractor now extracts image ID from the image name itself (format "string_%d"). Before, only working with validation test, now applicable to e.g., test sets. 11. Changed display texts, added `OpenPose` name. 2. Main bugs fixed: 1. Pycaffe can now be imported from Python. @@ -120,7 +120,7 @@ OpenPose Library - Release Notes 3. Slightly increase of accuracy given the fixed mini-bugs. 4. Added IP camera support. 5. Output images can have the input size, OpenPose able to change its size for each image and not required fixed size anymore. - 1. FrameDisplayer accepts variable size images by rescaling every time a frame with bigger width or height is displayed (gui module). + 1. FrameDisplayer accepts variable size images by rescaling every time a frame with a bigger width or height is displayed (gui module). 2. OpOutputToCvMat & GuiInfoAdder does not require to know the output size at construction time, deduced from each image. 3. CvMatToOutput and Renderers allow to keep input resolution as output for images (core module). 6. New standalone face keypoint detector based on OpenCV face detector: much faster if body keypoint detection is not required but much less accurate. @@ -147,7 +147,7 @@ OpenPose Library - Release Notes 3. Main bugs fixed: 1. Scaling resize issue fixed: approximately 1-pixel offset due to not considering 0-based indexes. 2. Ubuntu installer script now works even if Python pip was not installed previously. - 3. Flags to set first and last frame as well as jumping frames backward and forward now works on image directory reader. + 3. Flags to set first and last frame as well as jumping frames backward and forward now works on the image directory reader. @@ -156,8 +156,8 @@ OpenPose Library - Release Notes 1. Heatmaps can be saved in floating format. 2. More efficient non-processing version (i.e., if all keypoint extractors are disabled, and only image extraction and display/saving operations are performed). 3. Heat maps scaling: Added `--heatmaps_scale` to OpenPoseDemo, added option not to scale the heatmaps, and added custom `float` format to save heatmaps in floating format. - 4. Detector of the number of GPU also considers the initial GPU index given by the user. - 5. Added `--write_json` as new version of `--write_keypoint_json`. It includes the body part candidates (if enabled), as well as any extra information added in the future (e.g., person ID). + 4. Detector of the number of GPUs also considers the initial GPU index given by the user. + 5. Added `--write_json` as a new version of `--write_keypoint_json`. It includes the body part candidates (if enabled), as well as any extra information added in the future (e.g., person ID). 6. Body part candidates can be retrieved in Datum and saved with `--write_json`. 2. Functions or parameters renamed: 1. `PoseParameters` splitted into `PoseParameters` and `PoseParametersRender` and const parameters turned into functions for more clarity. @@ -172,7 +172,7 @@ OpenPose Library - Release Notes 1. Main improvements: 1. Output of `--write_json` uses less hard disk space (enters and tabs removed). 2. Removed Boost dependencies. - 3. Caffe added as submodule. + 3. Caffe added as a submodule. 4. CMake installer compatible with Windows. 5. Added freeglut download script (3-D reconstruction demo for Windows). 6. Added Debug version for Windows (CMake). @@ -187,9 +187,9 @@ OpenPose Library - Release Notes 15. Camera parameters (flir camera) are read from disk at runtime rather than being compiled. 16. 3-D reconstruction module can be implemented with different camera brands or custom image sources. 17. Flag `--write_json` includes 3-D keypoints. - 18. 3-D reconstruction module can be used with images and videos. Flag `--3d_views` added to allow `--image_dir` and `--video` allow loading stereo images. + 18. 3-D reconstruction module can be used with images and videos. Flag `--3d_views` added to allow `--image_dir` and `--video` to load stereo images. 19. Flag `--camera_resolution` applicable to `--flir_camera`. - 20. Throw error message if requested GPU IDs does not exist (e.g., asking for 2 GPUs starting in ID 1 if there is only 2 GPUs in total). + 20. Throwing an error message if requested GPU IDs do not exist (e.g., asking for 2 GPUs starting with ID 1 if there are only 2 GPUs in total). 21. VideoSaver (`--write_video`) compatible with multi-camera setting. It will save all the different views concatenated. 22. OpenPose small GUI rescale the verbose text to the displayed image, to avoid the text to be either too big or small. 23. OpenPose small GUI shows the frame number w.r.t. the original producer, rather than the frame id. E.g., if video is started at frame 30, OpenPose will display 30 rather than 0 in the first frame. @@ -219,16 +219,16 @@ OpenPose Library - Release Notes 2. Undistortion of the images is x3.5 faster per camera, i.e., x3.5 Flir camera producer reading w.r.t previous multi-threaded version, which was x number_cameras faster than the original version. 3. Added flag `flir_camera_index` to allow running on all the cameras at once, or only on 1 camera at the time. 4. Added flag `frame_keep_distortion` not to undistort the images. E.g., useful when recording images for camera calibration. - 5. Changed Spinnaker::DEFAULT image extraction mode by Spinnaker::IPP, which does not show a pixelated image while keeping very similar runtime. + 5. Changed Spinnaker::DEFAULT image extraction mode by Spinnaker::IPP, which does not show a pixelated image while keeping a very similar runtime. 4. 3-D reconstruction: 1. Added non-linear minimization to further improve 3-D triangulation accuracy by ~5% (Ubuntu only). - 2. It is only run if reprojction error is more than a minimum threshold (improve speed with already good quality results) and also less than another outlier threshold. - 3. Outliers are removed from final result if >= 3 camera views. + 2. It is only run if reprojection error is more than a minimum threshold (improve speed with already good quality results) and also less than another outlier threshold. + 3. Outliers are removed from the final result if >= 3 camera views. 4. Applied RANSAC if >=4 camera views. - 5. Latency highly reduced in multi-GPU setting. Each GPU process a different camera view, instead of a different time-instant sequence. - 5. CMake: All libraries as single variable (simpler to add/remove libraries). + 5. Latency highly reduced in multi-GPU setting. Each GPU processes a different camera view, instead of a different time-instant sequence. + 5. CMake: All libraries as a single variable (simpler to add/remove libraries). 6. Averaged latency reduced to half. - 7. 15% speed up for default CMake version. CMake was not setting `Release` mode by default. + 7. 15% speed up for the default CMake version. CMake was not setting `Release` mode by default. 8. Light speed up, and body approach much more invariant to number of people. Removed `checkEQ` from tight loop in bodyPartConnectorBase, which took a huge time exponential to the number of people. 9. Datum includes extrinsic and intrinsic camera parameters. 10. Function `scaleKeypoints(Array& keypoints, const float scale)` also accepts 3D keypoints. @@ -236,24 +236,24 @@ OpenPose Library - Release Notes 12. New `PoseExtractor` class to contain future ID and tracking algorithms as well as the current OpenPose keypoint detection algorithm. 13. Added initial alpha versions of the `tracking` and `identification` modules (for now disabled but available in the source code), including `PersonIdExtractor` and `PersonTracker`. `PersonIdExtractor` includes greedy matrix OP-LK matching. 14. Added catchs to all demos for higher debug information. - 15. GUI includes the capability of dynamically enable/disable the face, hand, and 3-D rendering, as well as more clear visualization for skeleton, background, heatmap addition, and PAF addition channels. + 15. GUI includes the capability of dynamically enabling/disabling the face, hand, and 3-D rendering, as well as more clear visualization for skeleton, background, heatmap addition, and PAF addition channels. 16. When GUI changes some parameter from PoseExtractorNet, there is a log to notify the user of the change. 17. Deprecated flag `--write_keypoint_json` removed (`--write_json` is the equivalent since version 1.2.1). 18. Speed up of cvMatToOpOutput and opOutputToCvMat: Datum::outputData is now H x W x C instead of C x H x W, making it much faster to be copied to/from Datum::cvOutputData. 19. Much faster GUI display by adding the `WITH_OPENCV_WITH_OPENGL` flag to tell whether to use OpenGL support for OpenCV. 20. Turned sanity check error into warning when using dynamic `net_resolution` for `image_dir` in CPU/OpenCL versions. - 21. Minimized CPU usage when queues are empty or full, in order to prevent problems such as general computer slow down, overheating, or excesive power usage. + 21. Minimized CPU usage when queues are empty or full, in order to prevent problems such as general computer slow down, overheating, or excessive power usage. 2. Functions or parameters renamed: 1. Removed scale parameter from hand and face rectangle extractor (causing wrong results if custom `--output_resolution`). 2. Functions `scaleKeypoints`, other than `scaleKeypoints(Array& keypoints, const float scale)`, renamed as `scaleKeypoints2d`. - 3. `(W)PoseExtractor` renamed to `(W)PoseExtractorNet` to distinguish from new `PoseExtractor`. Analogously with `(W)FaceExtractorNet` and `(W)HandExtractorNet`. + 3. `(W)PoseExtractor` renamed to `(W)PoseExtractorNet` to distinguish from the new `PoseExtractor`. Analogously with `(W)FaceExtractorNet` and `(W)HandExtractorNet`. 4. Experimental module removed and internal `tracking` directory moved to main openpose directory. 5. Switched GUI shortcuts for the kind of channel to render (skeleton, heatmap, PAF, ...) in order to make it more intuitive: 1 for skeleton, 1 for background heatmap, 2 for adding all heatmaps, 3 for adding all PAFs, and 4 to 0 for the initial heatmaps. 3. Main bugs fixed: 1. Fixed hand and face extraction and rendering scaling issues when `--output_resolution` is not the default one. 2. Part candidates (`--part_candidates`) are saved with the same scale than the final keypoints itself. 3. Fixed bug in keepTopNPeople.hpp (`--number_people_max`) that provoked core dumped if lots of values equal to the threshold. - 4. Flir cameras: Cameras sorted by serial number. Video and images recorded from flir cameras were (and are) assigned the camera parameters based on serial number order, so it would fail if the cameras order was not the same than if sorted by serial number. + 4. Flir cameras: Cameras sorted by serial number. Video and images recorded from flir cameras were (and are) assigned the camera parameters based on serial number order, so it would fail if the cameras order was not the same as if sorted by serial number. 5. CPU version working in non-Nvidia Windows machines. @@ -267,25 +267,25 @@ OpenPose Library - Release Notes 3. About 2-4x speedup for NMS. 4. About 2x speedup for image resize and about 2x speedup for multi-scale resize. 5. About 25-30% speedup for rendering. - 6. Reduced latency and increased speed by moving the resize in CvMatToOpOutput and OpOutputToCvMat to CUDA. The linear speedup generalizes better to higher number of GPUs. + 6. Reduced latency and increased speed by moving the resize in CvMatToOpOutput and OpOutputToCvMat to CUDA. The linear speedup generalizes better to a higher number of GPUs. 3. Unity binding of OpenPose released. OpenPose adds the flag `BUILD_UNITY_SUPPORT` on CMake, which enables special Unity code so it can be built as a Unity plugin. - 4. If camera is unplugged, OpenPose GUI and command line will display a warning and try to reconnect it. + 4. If the camera is unplugged, OpenPose GUI and command line will display a warning and try to reconnect it. 5. Wrapper classes simplified and renamed. Wrapper renamed as WrapperT, and created Wrapper as the non-templated class equivalent. 6. API and examples improved: 1. New header file `flags.hpp` that includes all OpenPose flags, removing the need to copy them repeatedly on each OpenPose example file. 2. Renamed `tutorial_wrapper` as `tutorial_api_cpp` as well as new examples were added. 2. Renamed `tutorial_python` as `tutorial_api_python` as well as new examples were added. - 3. Renamed `tutorial_thread` as `tutorial_api_thread`, focused in the multi-thread mechanism. + 3. Renamed `tutorial_thread` as `tutorial_api_thread`, focused on the multi-thread mechanism. 4. Removed `tutorial_pose`, the directory `tutorial_api_cpp` includes much cleaner and commented examples. - 5. Examples do not end in core dumped if an OpenPose exception occurred during initialization, but they are rather closed returning -1. However, it will still results in core dumped if the exception occurs during multi-threading execution. + 5. Examples do not end in core dumped if an OpenPose exception occurred during initialization, but they are rather closed returning -1. However, it will still result in core dumped if the exception occurs during multithreading execution. 6. Added new examples, including examples to extract face and/or hand from images. - 7. Added `--no_display` flag for the examples that does not use OpenPose output. + 7. Added `--no_display` flag for the examples that do not use OpenPose output. 8. Given that display can be disabled in all examples, they all have been added to the Travis build so they can be tested. - 7. Added a virtual destructor to almost all clases, so they can be inherited. Exceptions (for performance reasons): Array, Point, Rectangle, CvMatToOpOutput, OpOutputToCvMat. + 7. Added a virtual destructor to almost all classes, so they can be inherited. Exceptions (for performance reasons): Array, Point, Rectangle, CvMatToOpOutput, OpOutputToCvMat. 8. Auxiliary classes in errorAndLog turned into namespaces (Profiler must be kept as class to allow static parameters). 9. Added flags: 1. Added flag `--frame_step` to allow the user to select the step or gap between processed frames. E.g., `--frame_step 5` would read and process frames 0, 5, 10, etc. - 2. Previously hardcoded `COCO_CHALLENGE` variable turned into user configurable flag `--maximize_positives`. + 2. Previously hardcoded `COCO_CHALLENGE` variable turned into a user configurable flag `--maximize_positives`. 3. Added flag `--verbose` to plot the progress. 4. Added flag `--fps_max` to limit the maximum processing frame rate of OpenPose (useful to display results at a maximum desired speed). 5. Added sanit30. Added the flags `--prototxt_path` and `--caffemodel_path` to allow custom ProtoTxt and CaffeModel paths. @@ -327,7 +327,7 @@ OpenPose Library - Release Notes 29. Maximum queue size per OpenPose thread is configurable through the Wrapper class. 30. Added pre-processing capabilities to Wrapper (WorkerType::PreProcessing), which will be run right after the image has been read. 31. Removed boost::shared_ptr and caffe::Blob dependencies from the headers. No 3rdparty dependencies left on headers (except dim3 for CUDA). - 32. Added Array `poseNetOutput` to Datum so that user can introduce his custom network output. + 32. Added Array `poseNetOutput` to Datum so that the user can introduce his custom network output. 33. OpenPose will never provoke a core dumped or crash. Exceptions in threads (`errorWorker()` instead of `error()`) lead to stopping the threads and reporting the error from the main thread, while exceptions in destructors (`errorDestructor()` instead of `error()`) are reported with std::cerr but not thrown as std::exceptions. 34. When reading a directory of images, they will be sorted in natural order (rather than regular sort). 35. Windows updates: @@ -337,12 +337,12 @@ OpenPose Library - Release Notes 2. Functions or parameters renamed: 1. By default, python example `tutorial_developer/python_2_pose_from_heatmaps.py` was using 2 scales starting at -1x736, changed to 1 scale at -1x368. 2. WrapperStructPose default parameters changed to match those of the OpenPose demo binary. - 3. WrapperT.configure() changed from 1 function that requries all arguments to individual functions that take 1 argument each. - 4. Added `Forward` to all net classes that automatically selects between CUDA, OpenCL, or CPU-only version depending on the defines. + 3. WrapperT.configure() changed from 1 function that requires all arguments to individual functions that take 1 argument each. + 4. Added `Forward` to all net classes that automatically selects between CUDA, OpenCL, or CPU-only versions depending on the defines. 5. Removed old COCO 2014 validation scripts. 6. WrapperStructOutput split into WrapperStructOutput and WrapperStructGui. 7. Replaced flags: - 1. Replaced `--camera_fps` flag by `--write_video_fps`, given that it was a confusing name: It did not affect the webcam FPS, but only the FPS of the output video. In addition, default value changed from 30 to -1. + 1. Replaced `--camera_fps` flag by `--write_video_fps`, given that it was a confusing name: It did not affect the webcam FPS, but only the FPS of the output video. In addition, the default value changed from 30 to -1. 2. Flag `--hand_tracking` is a subcase of `--hand_detector`, so it has been removed and incorporated as `--hand_detector 3`. 8. Renamed `--frame_keep_distortion` as `--frame_undistort`, which performs the opposite operation (the default value has been also changed to the opposite). 9. Renamed `--camera_parameter_folder` as `--camera_parameter_path` because it could also take a whole XML file path rather than its parent directory. @@ -352,7 +352,7 @@ OpenPose Library - Release Notes 13. Renamed intRound, charRound, etc. by positiveIntRound, positiveCharRound, etc. so that people can realize it is not safe for negative numbers. 14. Replaced flag `--write_coco_foot_json` by `--write_coco_json_variants` in order to generalize to any COCO JSON format (i.e., hand, face, etc). 3. Main bugs fixed: - 1. CMake-GUI was forcing to Release mode, allowed Debug modes too. + 1. CMake-GUI was forced to Release mode, now also allowed Debug modes. 2. NMS returns in index 0 the number of found peaks. However, while the number of peaks was truncated to a maximum of 127, this index 0 was saving the real number instead of the truncated one. 3. Template functions could not be imported in Windows for projects using the OpenPose library DLL. 4. Function `scaleKeypoints2d` was not working if any of the scales was 1 (e.g., fail if scaleX = 1 but scaleY != 1, or if any offset was not 0). @@ -369,14 +369,14 @@ OpenPose Library - Release Notes 1. Main improvements: 1. Highly improved 3D triangulation for >3 cameras by fixing some small bugs. 2. Added community-based support for Nvidia NVCaffe. - 3. Increased accuracy very lightly for CUDA version (about 0.01%) by adapting the threshold in `process()` in `bodyPartConnectorBase.cu` to `defaultNmsThreshold`. This also removes any posibility of future bugs in that function for using a default NMS threshold higher than 0.15 (which was the hard-coded value used previously). - 4. Increased mAP but reduced mAR (both about 0.01%) as well as reduction of false positives. Step 1: removed legs where only knee/ankle/feet are found. Step 2: If no people is found in an image, `removePeopleBelowThresholdsAndFillFaces` is re-run with `maximizePositives = true`. + 3. Increased accuracy very lightly for CUDA version (about 0.01%) by adapting the threshold in `process()` in `bodyPartConnectorBase.cu` to `defaultNmsThreshold`. This also removes any possibility of future bugs in that function for using a default NMS threshold higher than 0.15 (which was the hard-coded value used previously). + 4. Increased mAP but reduced mAR (both about 0.01%) as well as reduction of false positives. Step 1: removed legs where only knee/ankle/feet are found. Step 2: If no people are found in an image, `removePeopleBelowThresholdsAndFillFaces` is re-run with `maximizePositives = true`. 5. Number of maximum people is not limited by the maximum number of max peaks anymore. However, the number of body part candidates for a specific keypoint (e.g., nose) is still limited to the number of max peaks. 6. Added more checks during destructors of CUDA-related functions and safer CUDA frees. 7. Improved accuracy of CPU version about 0.2% by following the CUDA/OpenCL approach of assigning the minimum possible PAF score to keypoints that are very close to each other. 8. Added Windows auto-testing (AppVeyor). 2. Functions or parameters renamed: - 1. `--3d_min_views` default value (-1) no longer means that all camera views are required. Instead, it will be equal to max(2, min(4, #cameras-1)). This should provide a good trade-off between recall and precission. + 1. `--3d_min_views` default value (-1) no longer means that all camera views are required. Instead, it will be equal to max(2, min(4, #cameras-1)). This should provide a good trade-off between recall and precision. 3. Main bugs fixed: 1. Windows: Added back support for OpenGL and Spinnaker, as well as DLLs for debug compilation. 2. `06_face_from_image.cpp`, `07_hand_from_image.cpp`, and `09_keypoints_from_heatmaps` working again, they stopped working in version 1.5.0 with the GPU image resize for the GUI. @@ -392,21 +392,21 @@ OpenPose Library - Release Notes 2. Created Matrix as container of cv::Mat, and String as container of std::string. 3. After replacing cv::Mat by Matrix, headers do not contain any 3rd-party library includes nor functions. This way, OpenPose can be exported without needing 3rd-party includes nor static library files (e.g., lib files in Windows), allowing people to use their own versions of OpenCV, Eigen, etc. without conflicting with OpenPose. Dynamic library files (e.g., `dll` files in Windows, `so` in Ubuntu) are still required. 4. Created the `openpose_private` directory with some internal headers that, if exported with OpenPose, would require including 3rd-party headers and static library files. - 5. Default OpenCV version for Windows upgraded to version 4.2.0, extracted from their oficial website: section `Releases`, subsection `OpenCV - 4.2.0`, `Windows` version. + 5. Default OpenCV version for Windows upgraded to version 4.2.0, extracted from their official website: section `Releases`, subsection `OpenCV - 4.2.0`, `Windows` version. 6. In all `*.cpp` files, their include of their analog `*.hpp` file has been moved to the first line of those `*.cpp` files to slightly speed up compiling time. - 7. String is used in `include/openpose/wrapper/` to avoid std::string to cause errors for using diferent std DLLs. + 7. String is used in `include/openpose/wrapper/` to avoid std::string to cause errors for using different std DLLs. 8. Added `ScaleMode::ZeroToOneFixedAspect` and `ScaleMode::PlusMinusOneFixedAspect`. Compared to `ZeroToOne` and `PlusMinusOne`, the new ones also preserve the aspect ratio of each axis. - 9. Added more verbose to wrapper when it is been configured, showing the values of some of its parameters. + 9. Added more verbose to wrapper when it has been configured, showing the values of some of its parameters. 10. Removed many Visual Studio (Windows) warnings. 2. Functions or parameters renamed: 1. All headers moved into `openpose_private`, all 3rd-party library calls in headers, and std::string calls in `include/openpose/wrapper/`. 2. Renamed `dLog()` as `opLogIfDebug()`, `log()` as `opLog()`, `check()` as `checkBool()`, and also renamed all the `checkX()` functions in `include/openpose/utilities/check.hpp`. This avoids compiling crashes when exporting OpenPose to other projects which contain other 3rd-party libraries that define functions with the same popular names with `#define`. 3. Main bugs fixed: - 1. Debug version of OpenPose actually targets debug lib/DLL files of 3rd-party libraries. - 2. Debug version no longer prints on console a huge log message from Caffe with the network when starting OpenPose (fixed by using the right debug libraries). - 4. Natural sort now works properly with filenames containining numbers longer than the limit of an int. - 5. Optionally auto-generated bin folder only contains the required DLLs (depending on the CMake configuration), instead of all of them. - 6. When WrapperStructFace and WrapperStructHand are not called and configured for Wrapper, setting body to CPU rendering was not working. + 1. The debug version of OpenPose actually targets debug lib/DLL files of 3rd-party libraries. + 2. The debug version no longer prints on console a huge log message from Caffe with the network when starting OpenPose (fixed by using the right debug libraries). + 4. Natural sort now works properly with filenames containing numbers longer than the limit of an int. + 5. The optionally auto-generated bin folder only contains the required DLLs (depending on the CMake configuration), instead of all of them. + 6. When WrapperStructFace and WrapperStructHand are not called and configured for Wrapper, setting the body to CPU rendering was not working. 7. Skeleton rendering bugs: 1. All or some skeletons were not properly displayed or completely missing on images with many people (e.g., videos with about 32 people). 2. All or some skeletons were not properly displayed or completely missing on images where the multiplication of people and image resolution was too big (e.g., videos with about 32 people on 4k resolution). @@ -426,7 +426,7 @@ OpenPose Library - Release Notes 1. `USE_MKL` disabled by default in Ubuntu. Reason: Not compatible with non-intel CPUs or Ubuntu 20. 3. Main bugs fixed: 1. 90 and 270-degree rotations working again. - 2. C++ tutorial API demos only try to cv::imshow the image if it is not empty (avoding the assert that it would trigger otherwise). + 2. C++ tutorial API demos only try to cv::imshow the image if it is not empty (avoiding the assert that it would trigger otherwise). 3. Several typos fixed in the documentation. @@ -439,6 +439,7 @@ OpenPose Library - Release Notes 2. Eigen: From 3.3.4 to 3.3.8. 3. `wget` (Windows): From 1.19.1 to 1.20.3. 3. AppVeyor now tests the actual OpenPoseDemo.exe example (Windows). + 4. Doc restructured and divided into subfolders to help users (`advanced`, `calibration`, `deprecated`, etc). 2. Functions or parameters renamed: 3. Main bugs fixed: 1. Eigen working again on Windows. diff --git a/doc/released_features.md b/doc/released_features.md index cd5c3b13..599fe9f0 100644 --- a/doc/released_features.md +++ b/doc/released_features.md @@ -1,18 +1,18 @@ -OpenPose Library - All Released Features +OpenPose Library - All Major Released Features ==================================== - Sep 2019: [**Training code released**](https://github.com/CMU-Perceptual-Computing-Lab/openpose_train)! - Jan 2019: [**Unity plugin released**](https://github.com/CMU-Perceptual-Computing-Lab/openpose_unity_plugin)! -- Jan 2019: [**Improved Python API**](doc/modules/python_module.md) released! Including body, face, hands, and all the functionality of the C++ API! +- Jan 2019: [**Improved Python API**](doc/python_module.md) released! Including body, face, hands, and all the functionality of the C++ API! - Dec 2018: [**Foot dataset released**](https://cmu-perceptual-computing-lab.github.io/foot_keypoint_dataset) and [**new paper released**](https://arxiv.org/abs/1812.08008)! - Sep 2018: [**Experimental tracker**](./quick_start.md#tracking)! - Jun 2018: [**Combined body-foot model released! 40% faster and 5% more accurate**](./installation.md)! -- Jun 2018: [**Python API**](./modules/python_module.md) released! -- Jun 2018: [**OpenCL/AMD graphic card version**](./modules/calibration_module.md) released! -- Jun 2018: [**Calibration toolbox**](./modules/calibration_module.md) released! +- Jun 2018: [**Python API**](./python_module.md) released! +- Jun 2018: [**OpenCL/AMD graphic card version**](./installation.md) released! +- Jun 2018: [**Calibration toolbox**](./calibration/README.md) released! - Jun 2018: [**Mac OSX version (CPU)**](./installation.md) released! - Mar 2018: [**CPU version**](./installation.md#cpu-version)! -- Mar 2018: [**3-D keypoint reconstruction module**](./modules/3d_reconstruction_module.md) (from multiple camera views)! +- Mar 2018: [**3-D keypoint reconstruction module**](./3d_reconstruction_module.md) (from multiple camera views)! - Sep 2017: [**CMake**](./installation.md) installer and **IP camera** support! - Jul 2017: [**Windows portable binaries and demo**](https://github.com/CMU-Perceptual-Computing-Lab/openpose/releases)! - Jul 2017: **Hands** released! diff --git a/examples/calibration/calibration.cpp b/examples/calibration/calibration.cpp index 8079c001..9d5e1f83 100644 --- a/examples/calibration/calibration.cpp +++ b/examples/calibration/calibration.cpp @@ -1,5 +1,5 @@ // ------------------------- OpenPose Calibration Toolbox ------------------------- -// Check `doc/modules/calibration_module.md`. +// Check `doc/calibration/README.md`. // Implemented on top of OpenCV. // It computes and saves the intrinsics parameters of the input images. @@ -23,7 +23,7 @@ DEFINE_string(camera_serial_number, "18079958", "Camera serial number.") DEFINE_bool(omit_distortion, false, "Set to true if image views are already undistorted (e.g., if recorded from OpenPose" " after intrinsic parameter calibration)."); DEFINE_bool(combine_cam0_extrinsics, false, "Set to true if cam0 extrinsics are not [R=I, t=0]. I will make no effect if cam0 is" - " already the origin. See doc/modules/calibration_module.md for an example."); + " already the origin. See doc/calibration/README.md for an example."); DEFINE_int32(cam0, 1, "Baseline camera for extrinsic calibration, cam1 will be calibrated assuming cam0 the" " world coordinate origin."); DEFINE_int32(cam1, 0, "Target camera to estimate its extrinsic parameters, it will be calibrated assuming cam0" diff --git a/src/openpose/3d/poseTriangulation.cpp b/src/openpose/3d/poseTriangulation.cpp index fe6b9f0b..0d48821c 100644 --- a/src/openpose/3d/poseTriangulation.cpp +++ b/src/openpose/3d/poseTriangulation.cpp @@ -147,8 +147,8 @@ namespace op " detection from 4 cameras is about 2-3 pixels. It might be simply a wrong OpenPose" " detection. However, if this message appears very frequently, your calibration parameters" " might be wrong. Note: If you have introduced your own camera intrinsics, are they an" - " upper triangular matrix (as specified in the OpenPose doc/modules/calibration_module.md" - " and 3d_reconstruction_module.md)?", Priority::High); + " upper triangular matrix (as specified in the OpenPose doc/calibration/README.md" + " and doc/3d_reconstruction_module.md)?", Priority::High); // opLog("Reprojection error: " + std::to_string(reprojectionErrorTotal)); // To debug reprojection error return atLeastOnePointProjected; } -- GitLab