JeVois
1.20
JeVois Smart Embedded Machine Vision Toolkit
|
|
#include <jevois/DNN/Network.H>
Abstract class to represent a neural network.
Derived classes provide implementation via OpenCV (on CPU, OpenCL, or OpenVino/Myriad-X), Amlogic/Vivante NPU, Hailo-8, Python, or Google Coral TPU.
Public Member Functions | |
virtual | ~Network () |
Destructor. More... | |
void | waitBeforeDestroy () |
If network is currently loading, wait until that is done before destroying. More... | |
bool | ready () |
Returns true when network is ready to run (loaded and initialized) More... | |
virtual std::vector< vsi_nn_tensor_attr_t > | inputShapes ()=0 |
Get shapes of all input tensors. More... | |
virtual std::vector< vsi_nn_tensor_attr_t > | outputShapes ()=0 |
Get shapes of all output tensors. More... | |
std::vector< cv::Mat > | process (std::vector< cv::Mat > const &blobs, std::vector< std::string > &info) |
Process input blobs and obtain output blobs. More... | |
virtual void | freeze (bool doit) |
Freeze/unfreeze parameters that users should not change while running. More... | |
Public Member Functions inherited from jevois::Component | |
Component (std::string const &instance) | |
Constructor. More... | |
virtual | ~Component () |
Virtual destructor for safe inheritance. More... | |
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. More... | |
template<class Comp > | |
void | removeSubComponent (std::shared_ptr< Comp > &component) |
Remove a sub-Component from this Component, by shared_ptr. More... | |
void | removeSubComponent (std::string const &instance, bool warnIfNotFound=true) |
Remove a sub-Component from this Component, by instance name. More... | |
template<class Comp = jevois::Component> | |
std::shared_ptr< Comp > | getSubComponent (std::string const &instance) const |
Get a sub-component by instance name. More... | |
bool | isTopLevel () const |
Returns true if this component is top-level, i.e., its parent is jevois::Manager. More... | |
Engine * | engine () const |
Get a handle to our Engine, or throw if we do not have an Engine as root ancestor. More... | |
bool | initialized () const |
Has this component been initialized yet? More... | |
const std::string & | className () const |
The class name of this component. More... | |
const std::string & | instanceName () const |
The instance name of this component. More... | |
template<typename T > | |
std::vector< std::string > | setParamVal (std::string const ¶mdescriptor, T const &val) |
Set a parameter value. More... | |
template<typename T > | |
void | setParamValUnique (std::string const ¶mdescriptor, T const &val) |
Set a parameter value, simple version assuming only one parameter match. More... | |
template<typename T > | |
std::vector< std::pair< std::string, T > > | getParamVal (std::string const ¶mdescriptor) const |
Get parameter(s) value(s) by descriptor. More... | |
template<typename T > | |
T | getParamValUnique (std::string const ¶mdescriptor) const |
Get a parameter value, simple version assuming only one parameter match. More... | |
std::vector< std::string > | setParamString (std::string const ¶mdescriptor, std::string const &val) |
Set a parameter value, by string. More... | |
void | setParamStringUnique (std::string const ¶mdescriptor, std::string const &val) |
Set a parameter value by string, simple version assuming only one parameter match. More... | |
std::vector< std::pair< std::string, std::string > > | getParamString (std::string const ¶mdescriptor) const |
Get a parameter value, by string. More... | |
std::string | getParamStringUnique (std::string const ¶mdescriptor) const |
Get a parameter value by string, simple version assuming only one parameter match. More... | |
void | freezeParam (std::string const ¶mdescriptor) |
Freeze a parameter, by name, see ParameterBase::freeze() More... | |
void | unFreezeParam (std::string const ¶mdescriptor) |
Unfreeze a parameter, by name, see ParameterBase::unFreeze() More... | |
void | freezeAllParams () |
Freeze all parameters. More... | |
void | unFreezeAllParams () |
Unfreeze all parameters. More... | |
std::string | descriptor () const |
Get our full descriptor (including all parents) as [Instancename]:[...]:[...]. More... | |
void | setParamsFromFile (std::string const &filename) |
Set some parameters from a file. More... | |
std::istream & | setParamsFromStream (std::istream &is, std::string const &absfile) |
Set some parameters from an open stream. More... | |
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. More... | |
void | foreachParam (std::function< void(std::string const &compname, ParameterBase *p)> func, std::string const &cname="") |
Run a function on every param we hold. More... | |
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. More... | |
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. More... | |
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. More... | |
void | removeDynamicParameter (std::string const &name) |
Remove a previously added dynamic parameter. More... | |
void | setPath (std::string const &path) |
Assign a filesystem path to this component. More... | |
std::filesystem::path | absolutePath (std::filesystem::path const &path="") |
If given path is relative (not starting with /), prepend the Component path to it. More... | |
Public Member Functions inherited from jevois::ParameterRegistry | |
virtual | ~ParameterRegistry () |
Virtual destructor for safe inheritance. More... | |
Protected Member Functions | |
virtual void | load ()=0 |
Load from disk. More... | |
virtual std::vector< cv::Mat > | doprocess (std::vector< cv::Mat > const &blobs, std::vector< std::string > &info)=0 |
Process input blobs and obtain output blobs. More... | |
void | onParamChange (network::outreshape const ¶m, std::string const &val) override |
Protected Member Functions inherited from jevois::Component | |
virtual void | preInit () |
Called before all sub-Components are init()ed. More... | |
virtual void | postInit () |
Called after all sub-Components are init()ed. More... | |
virtual void | preUninit () |
Called before all sub-Components are uninit()ed. More... | |
virtual void | postUninit () |
Called after all sub-Components are uninit()ed. More... | |
Protected Member Functions inherited from jevois::ParameterRegistry | |
void | addParameter (ParameterBase *const param) |
The Parameter class uses this method to register itself on construction with its owning Component. More... | |
void | removeParameter (ParameterBase *const param) |
The Parameter class uses this method to un-register itself on destruction with its owning Component. More... | |
void | callbackInitCall () |
For all parameters that have a callback which has never been called, call it with the default param value. More... | |
|
virtual |
Destructor.
CAUTION: derived classes must call waitBeforeDestroy() in their destructor
|
protectedpure virtual |
Process input blobs and obtain output blobs.
Implemented in jevois::dnn::NetworkHailo, jevois::dnn::NetworkNPU, jevois::dnn::NetworkONNX, jevois::dnn::NetworkOpenCV, jevois::dnn::NetworkTPU, and jevois::dnn::NetworkPython.
|
virtual |
Freeze/unfreeze parameters that users should not change while running.
Note: derived classes can freeze their own params by overriding this function, and should remember to still call the base class jevois::dnn::Network::freeze(doit)
Reimplemented in jevois::dnn::NetworkHailo, jevois::dnn::NetworkNPU, jevois::dnn::NetworkONNX, jevois::dnn::NetworkOpenCV, jevois::dnn::NetworkTPU, and jevois::dnn::NetworkPython.
Definition at line 27 of file Network.C.
Referenced by jevois::dnn::NetworkPython::freeze(), jevois::dnn::NetworkOpenCV::freeze(), jevois::dnn::NetworkTPU::freeze(), jevois::dnn::NetworkONNX::freeze(), jevois::dnn::NetworkHailo::freeze(), and jevois::dnn::NetworkNPU::freeze().
|
pure virtual |
Get shapes of all input tensors.
Implemented in jevois::dnn::NetworkHailo, jevois::dnn::NetworkNPU, jevois::dnn::NetworkONNX, jevois::dnn::NetworkOpenCV, jevois::dnn::NetworkTPU, and jevois::dnn::NetworkPython.
|
protectedpure virtual |
Load from disk.
Implemented in jevois::dnn::NetworkHailo, jevois::dnn::NetworkNPU, jevois::dnn::NetworkONNX, jevois::dnn::NetworkOpenCV, jevois::dnn::NetworkTPU, and jevois::dnn::NetworkPython.
Referenced by ready().
|
overrideprotected |
Definition at line 35 of file Network.C.
References jevois::dnn::parseTensorSpecs().
|
pure virtual |
Get shapes of all output tensors.
Implemented in jevois::dnn::NetworkHailo, jevois::dnn::NetworkNPU, jevois::dnn::NetworkONNX, jevois::dnn::NetworkOpenCV, jevois::dnn::NetworkTPU, and jevois::dnn::NetworkPython.
std::vector< cv::Mat > jevois::dnn::Network::process | ( | std::vector< cv::Mat > const & | blobs, |
std::vector< std::string > & | info | ||
) |
Process input blobs and obtain output blobs.
Network implementations may push information data into the info string, which will be displayed to user. Convention is: if an info line starts with '* ', it is a header, and if it starts with '- ' it is a bullet. Info should always be organized into headers at the top level.
Definition at line 83 of file Network.C.
References jevois::dnn::attrdims(), jevois::dnn::attrmat(), jevois::imu::get(), LFATAL, jevois::dnn::shapestr(), jevois::split(), and jevois::dnn::strshape().
bool jevois::dnn::Network::ready | ( | ) |
Returns true when network is ready to run (loaded and initialized)
Definition at line 58 of file Network.C.
References jevois::async(), LINFO, load(), and jevois::warnAndRethrowException().
void jevois::dnn::Network::waitBeforeDestroy | ( | ) |
If network is currently loading, wait until that is done before destroying.
CAUTION: derived classes must call waitBeforeDestroy() in their destructor
Definition at line 45 of file Network.C.
References LINFO.
Referenced by jevois::dnn::NetworkOpenCV::~NetworkOpenCV(), and jevois::dnn::NetworkTPU::~NetworkTPU().