Neural processing pipeline.
A neural processing pipeline in JeVois consists of:
- pre-processing an input image to extract one or more blobs used as input tensors to a deep neural network
- processing the input blobs through a deep network to obtain output blobs
- post-processing the output blobs to display results and send serial messages
A pipeline is typically configured by parsing a YAML config file (zoo file) that determines what kind of pre-processing, network, and post-processing to use, and that sets the parameters for those.
Definition at line 143 of file Pipeline.H.
|
| Pipeline (std::string const &instance) |
| Constructor.
|
|
virtual | ~Pipeline () |
| Destructor.
|
|
bool | ready () const |
| Returns true when all three of preproc, net, and postproc are ready.
|
|
void | process (jevois::RawImage const &inimg, jevois::StdModule *mod, jevois::RawImage *outimg, jevois::OptGUIhelper *helper, bool idle=false) |
| Process an input image, send results to serial/image/gui.
|
|
void | freeze (bool doit) |
| Freeze/unfreeze parameters that users should not change while running.
|
|
std::vector< ObjReco > const & | latestRecognitions () const |
| Get the latest recognition results, use with caution, not thread-safe.
|
|
std::vector< ObjDetect > const & | latestDetections () const |
| Get the latest detection results, use with caution, not thread-safe.
|
|
std::vector< ObjDetectOBB > const & | latestDetectionsOBB () const |
| Get the latest oriented bounded box (OBB) detection results, use with caution, not thread-safe.
|
|
std::vector< PoseSkeleton > const & | latestSkeletons () const |
| Get the latest skeletons, use with caution, not thread-safe.
|
|
| Component (std::string const &instance) |
| Constructor.
|
|
virtual | ~Component () |
| Virtual destructor for safe inheritance.
|
|
template<class Comp , typename... Args> |
std::shared_ptr< Comp > | addSubComponent (std::string const &instance, Args &&...args) |
| Pseudo-constructor: construct and add another component as a subcomponent of this one.
|
|
template<class Comp > |
void | removeSubComponent (std::shared_ptr< Comp > &component) |
| Remove a sub-Component from this Component, by shared_ptr.
|
|
void | removeSubComponent (std::string const &instance, bool warnIfNotFound=true) |
| Remove a sub-Component from this Component, by instance name.
|
|
template<class Comp = jevois::Component> |
std::shared_ptr< Comp > | getSubComponent (std::string const &instance) const |
| Get a sub-component by instance name.
|
|
bool | isTopLevel () const |
| Returns true if this component is top-level, i.e., its parent is jevois::Manager.
|
|
bool | initialized () const |
| Has this component been initialized yet?
|
|
std::string const & | className () const |
| The class name of this component.
|
|
std::string const & | instanceName () const |
| The instance name of this component.
|
|
template<typename T > |
std::vector< std::string > | setParamVal (std::string const ¶mdescriptor, T const &val) |
| Set a parameter value.
|
|
template<typename T > |
void | setParamValUnique (std::string const ¶mdescriptor, T const &val) |
| Set a parameter value, simple version assuming only one parameter match.
|
|
template<typename T > |
std::vector< std::pair< std::string, T > > | getParamVal (std::string const ¶mdescriptor) const |
| Get parameter(s) value(s) by descriptor.
|
|
template<typename T > |
T | getParamValUnique (std::string const ¶mdescriptor) const |
| Get a parameter value, simple version assuming only one parameter match.
|
|
std::vector< std::string > | setParamString (std::string const ¶mdescriptor, std::string const &val) |
| Set a parameter value, by string.
|
|
void | setParamStringUnique (std::string const ¶mdescriptor, std::string const &val) |
| Set a parameter value by string, simple version assuming only one parameter match.
|
|
std::vector< std::pair< std::string, std::string > > | getParamString (std::string const ¶mdescriptor) const |
| Get a parameter value, by string.
|
|
std::string | getParamStringUnique (std::string const ¶mdescriptor) const |
| Get a parameter value by string, simple version assuming only one parameter match.
|
|
void | freezeParam (std::string const ¶mdescriptor, bool doit) |
| Freeze/unfreeze a parameter, by name, see ParameterBase::freeze()
|
|
void | freezeAllParams (bool doit) |
| Freeze all parameters.
|
|
std::string | descriptor () const |
| Get our full descriptor (including all parents) as [Instancename]:[...]:[...].
|
|
void | setParamsFromFile (std::string const &filename) |
| Set some parameters from a file.
|
|
std::istream & | setParamsFromStream (std::istream &is, std::string const &absfile) |
| Set some parameters from an open stream.
|
|
virtual void | paramInfo (std::shared_ptr< UserInterface > s, std::map< std::string, std::string > &categs, bool skipFrozen, std::string const &cname="", std::string const &pfx="") |
| Get machine-oriented descriptions of all parameters.
|
|
void | foreachParam (std::function< void(std::string const &compname, ParameterBase *p)> func, std::string const &cname="") |
| Run a function on every param we hold.
|
|
template<typename T > |
std::shared_ptr< DynamicParameter< T > > | addDynamicParameter (std::string const &name, std::string const &description, T const &defaultValue, ParameterCategory const &category) |
| Add a new parameter after the Component has already been constructed.
|
|
template<typename T , template< typename > class ValidValuesSpec> |
std::shared_ptr< DynamicParameter< T > > | addDynamicParameter (std::string const &name, std::string const &description, T const &defaultValue, ValidValuesSpec< T > const &validValuesSpec, ParameterCategory const &category) |
| Add a new parameter after the Component has already been constructed.
|
|
template<typename T > |
void | setDynamicParameterCallback (std::string const &name, std::function< void(T const &)> cb, bool callnow=true) |
| Register a callback with a previously created dynamic parameter.
|
|
void | removeDynamicParameter (std::string const &name, bool throw_if_not_found=true) |
| Remove a previously added dynamic parameter.
|
|
void | setPath (std::string const &path) |
| Assign a filesystem path to this component.
|
|
std::filesystem::path | absolutePath (std::filesystem::path const &path="") |
| If given path is relative (not starting with /), prepend the Component path to it.
|
|
virtual | ~ParameterRegistry () |
| Virtual destructor for safe inheritance.
|
|
|
void | postInit () override |
| Called after all sub-Components are init()ed.
|
|
void | preUninit () override |
| Called before all sub-Components are uninit()ed.
|
|
void | reloadZoo (std::string const &root, std::string const &filt, std::string const &zoofile) |
|
void | onParamChange (pipeline::zooroot const ¶m, std::string const &val) override |
|
void | onParamChange (pipeline::zoo const ¶m, std::string const &val) override |
|
void | onParamChange (pipeline::filter const ¶m, pipeline::Filter const &val) override |
|
void | onParamChange (pipeline::pipe const ¶m, std::string const &val) override |
|
void | onParamChange (pipeline::nettype const ¶m, pipeline::NetType const &val) override |
|
void | onParamChange (pipeline::preproc const ¶m, pipeline::PreProc const &val) override |
|
void | onParamChange (pipeline::postproc const ¶m, pipeline::PostProc const &val) override |
|
void | onParamChange (pipeline::benchmark const ¶m, bool const &val) override |
|
void | onParamChange (pipeline::extramodels const ¶m, bool const &val) override |
|
void | showInfo (std::vector< std::string > const &info, jevois::StdModule *mod, jevois::RawImage *outimg, jevois::OptGUIhelper *helper, bool ovl, bool idle) |
|
void | asyncNetWait () |
|
bool | checkAsyncNetComplete () |
|
void | showDataPeekWindow (jevois::GUIhelper *helper, bool refresh) |
|
virtual void | preInit () |
| Called before all sub-Components are init()ed.
|
|
virtual void | postUninit () |
| Called after all sub-Components are uninit()ed.
|
|
void | addParameter (ParameterBase *const param) |
| The Parameter class uses this method to register itself on construction with its owning Component.
|
|
void | removeParameter (ParameterBase *const param) |
| The Parameter class uses this method to un-register itself on destruction with its owning Component.
|
|
void | callbackInitCall () |
| For all parameters that have a callback which has never been called, call it with the default param value.
|
|
|
(Note that these are not member symbols.)
|
| JEVOIS_DECLARE_PARAMETER_WITH_CALLBACK (zooroot, std::string, "Path where to find zoo files (.yml). " "If not absolute, it is relative to this module's path", JEVOIS_SHARE_PATH "/dnn", ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER_WITH_CALLBACK (zoo, std::string, "Filename for neural network zoo file (.yml). " "If not absolute, it is relative to zooroot", "models.yml", ParamCateg) |
| Parameter.
|
|
| JEVOIS_DEFINE_ENUM_CLASS (Filter,(All)(OpenCV)(TPU)(NPU)(VPU)(VPUX)(NPUX)(SPU)(ORT)) |
| Enum.
|
|
| JEVOIS_DECLARE_PARAMETER_WITH_CALLBACK (filter, Filter, "Filter to possibly only show as options in " "the 'pipe' parameter some class of models from the zoo", Filter::All, Filter_Values, ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER_WITH_CALLBACK (pipe, std::string, "Pipeline to use, which should correspond to a " "top-level entry in the zoo file. Network execution types are: OpenCV: " "on CPU, NPU: on JeVois NPU accelerator, TPU: on Coral Edge TPU if " "available, VPU: on MyriadX VPU if available, NPUX: on NPU via TimVX " "OpenCV extension, VPUX: on CPU via ARM-Compute OpenVino emulation " "of VPU, and SPU: on Hailo8 SPU if available.", "", ParamCateg) |
| Parameter.
|
|
| JEVOIS_DEFINE_ENUM_CLASS (PreProc,(Blob)(Python)) |
| Enum.
|
|
| JEVOIS_DECLARE_PARAMETER_WITH_CALLBACK (preproc, PreProc, "Pre-Processor to use, usually set automatically " "by selecting a pipeline from the zoo file", PreProc::Blob, PreProc_Values, ParamCateg) |
| Parameter.
|
|
| JEVOIS_DEFINE_ENUM_CLASS (NetType,(OpenCV)(ORT)(NPU)(TPU)(SPU)(Python)) |
| Enum.
|
|
| JEVOIS_DECLARE_PARAMETER_WITH_CALLBACK (nettype, NetType, "Network runtime framework to use, usually set " "automatically by selecting a pipeline from the zoo file", NetType::OpenCV, NetType_Values, ParamCateg) |
| Parameter.
|
|
| JEVOIS_DEFINE_ENUM_CLASS (PostProc,(Classify)(Detect)(DetectOBB)(Segment)(YuNet)(Pose)(Python)(Stub)) |
| Enum.
|
|
| JEVOIS_DECLARE_PARAMETER_WITH_CALLBACK (postproc, PostProc, "Post-Processor to use, usually set automatically " "by selecting a pipeline from the zoo file", PostProc::Classify, PostProc_Values, ParamCateg) |
| Parameter.
|
|
| JEVOIS_DEFINE_ENUM_CLASS (Processing,(Sync)(Async)) |
| Enum.
|
|
| JEVOIS_DECLARE_PARAMETER (processing, Processing, "Type of processing: Sync runs pre-processing, " "network, and post-processing sequentially for every frame. Use for fast " "networks only, otherwise it will slow down the GUI... Async runs the network in " "a thread and should be used for networks slower than the camera framerate.", Processing::Async, Processing_Values, ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER (overlay, bool, "Show some pipeline info as an overlay over output or GUI video", true, ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER (paramwarn, bool, "Issue warning if parameters are specified in the zoo file for " "a pipeline, but the pipeline's component is not using them. Warnings appear " "in the console when the pipeline is loaded.", true, ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER (statsfile, std::string, "Append pre/net/post timing statistics in HTML table format " "to the specified file if not empty. If path is relative, it is to " JEVOIS_SHARE_PATH, "", ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER_WITH_CALLBACK (benchmark, bool, "Cycle through all networks specified by filter and, " "for each, run it for a while and append pre/net/post timing statistics " "in HTML table format to " JEVOIS_SHARE_PATH "/benchmark.html", false, ParamCateg) |
| Parameter.
|
|
| JEVOIS_DECLARE_PARAMETER_WITH_CALLBACK (extramodels, bool, "If true, show all available models, including older " "ones, in the pipe list otherwise, only those not marked 'extramodel' " "in their model zoo definition", false, ParamCateg) |
| Parameter.
|
|