In order to add a new module, these are the recommended steps in order to develop it:
- Create a folder with its name in the
experimental/module, e.g.experimental/hair/. - Implement all the functionality in one
Worker(i.e. inherit fromWorkerand implement all the functionality on that class).- The first letter of the class name should be
W(e.g.WHairExtractor). - To initially simplify development:
- Initialize the Worker class with the specific std::shared_ptr<std::vectorop::Datum> instead of directly using a template class (following the
examples/tutorial_wrappersynchronous examples). - Use the whole op::Datum as unique argument of your auxiliary functions.
- Use the OpenPose Wrapper in ThreadManagerMode::SingleThread mode (e.g. it allows you to directly use cv::imshow).
- If you are using your own custom Caffe -> initially change the Caffe for your version. It should directly work.
- Initialize the Worker class with the specific std::shared_ptr<std::vectorop::Datum> instead of directly using a template class (following the
- Copy the design from
pose/WPoseExtractor.
- The first letter of the class name should be
- To test it:
- Add the functionality to
Wrapper, use theexperimentalnamespace for the new Struct (e.g.experimental::HairStruct) that theWrapperwill use. Do not change any function name fromWrapper, just add a newconfigure, with the newHairStructor modify the existing ones without changing their names. - Add a demo (e.g.
examples/openpose/rthair.cpp) to test it.
- Add the functionality to
- Split the
Workerinto as many Workers as required. - If the Workers need extra data from
Datum, simply add intoDatumthe new variables required (without removing/modifying any previous variables!). - Read also the release steps before starting this developping phase.
In order to release the new module:
- Move the functionality of each
Workerclass to the non-template class (e.g.WHairExtractortoHairExtractor).WHairExtractorwill simply wrapHairExtractor. This will reduce compiling time for the user. See examples from other modules. - 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.
- Move the module from
experimental/hair/tohair/. - Remove
experimentalnamespaces (fromWrapperandhair) and turn Workers into template classes. - Add a demo in
examples/openpose/and tutorial examples inexamples/tutorial_.