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.
-
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.
-
-
Copy the design from
pose/WPoseExtractor.
-
-
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.
-
-
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_.