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.
|
| |
| std::vector< std::pair< std::string, std::string > > const & | zooSettings () const |
| | Get access to the settings that were loaded from the zoo.
|
| |
| | 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.
|
| |
| void | hideParam (std::string const ¶mdescriptor, bool doit) |
| | Hide/unhide a parameter, by name, see ParameterBase::hide()
|
| |
| void | hideAllParams (bool doit) |
| | Hide 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.
|
| |