Skip to content

Latest commit

 

History

History
30 lines (26 loc) · 2.45 KB

library_add_new_module.md

File metadata and controls

30 lines (26 loc) · 2.45 KB

OpenPose Library - Steps to Add a New Module

Developping Steps

In order to add a new module, these are the recommended steps in order to develop it:

  1. Create a folder with its name in the experimental/ module, e.g. experimental/hair/.
  2. Implement all the functionality in one Worker (i.e. inherit from Worker and implement all the functionality on that class).
    1. The first letter of the class name should be W (e.g. WHairExtractor).
    2. To initially simplify development:
      1. Initialize the Worker class with the specific std::shared_ptr<std::vectorop::Datum> instead of directly using a template class (following the examples/tutorial_wrapper synchronous examples).
      2. Use the whole op::Datum as unique argument of your auxiliary functions.
      3. Use the OpenPose Wrapper in ThreadManagerMode::SingleThread mode (e.g. it allows you to directly use cv::imshow).
      4. If you are using your own custom Caffe -> initially change the Caffe for your version. It should directly work.
    3. Copy the design from pose/WPoseExtractor.
  3. To test it:
    1. Add the functionality to Wrapper, use the experimental namespace for the new Struct (e.g. experimental::HairStruct) that the Wrapper will use. Do not change any function name from Wrapper, just add a new configure, with the new HairStruct or modify the existing ones without changing their names.
    2. Add a demo (e.g. examples/openpose/rthair.cpp) to test it.
  4. Split the Worker into as many Workers as required.
  5. If the Workers need extra data from Datum, simply add into Datum the new variables required (without removing/modifying any previous variables!).
  6. Read also the release steps before starting this developping phase.

Release Steps

In order to release the new module:

  1. Move the functionality of each Worker class to the non-template class (e.g. WHairExtractor to HairExtractor). WHairExtractor will simply wrap HairExtractor. This will reduce compiling time for the user. See examples from other modules.
  2. If you are using a custom Caffe version, move the custom code into the OpenPose library and change back Caffe to the default (most updated) version.
  3. Move the module from experimental/hair/ to hair/.
  4. Remove experimental namespaces (from Wrapper and hair) and turn Workers into template classes.
  5. Add a demo in examples/openpose/ and tutorial examples in examples/tutorial_.