JeVois  1.18
JeVois Smart Embedded Machine Vision Toolkit
Share this page:
PostProcessorDetectYOLO.H
Go to the documentation of this file.
1 // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2 //
3 // JeVois Smart Embedded Machine Vision Toolkit - Copyright (C) 2021 by Laurent Itti, the University of Southern
4 // California (USC), and iLab at USC. See http://iLab.usc.edu and http://jevois.org for information about this project.
5 //
6 // This file is part of the JeVois Smart Embedded Machine Vision Toolkit. This program is free software; you can
7 // redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software
8 // Foundation, version 2. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
9 // without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
10 // License for more details. You should have received a copy of the GNU General Public License along with this program;
11 // if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
12 //
13 // Contact information: Laurent Itti - 3641 Watt Way, HNB-07A - Los Angeles, CA 90089-2520 - USA.
14 // Tel: +1 213 740 3527 - itti@pollux.usc.edu - http://iLab.usc.edu - http://jevois.org
15 // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
16 /*! \file */
17 
18 #pragma once
19 
21 
22 namespace jevois
23 {
24  namespace dnn
25  {
26  //! Post-Processor sub-component for raw YOLO decoding
28  public Parameter<postprocessor::anchors, postprocessor::scalexy,
29  postprocessor::sigmoid>
30  {
31  public:
32  //! Inherited constructor ok
34 
35  //! Destructor
36  virtual ~PostProcessorDetectYOLO();
37 
38  //! Freeze/unfreeze parameters that users should not change while running
39  void freeze(bool doit);
40 
41  //! Generic raw YOLO processing
42  void yolo(std::vector<cv::Mat> const & outs, std::vector<int> & classIds, std::vector<float> & confidences,
43  std::vector<cv::Rect> & boxes, size_t nclass, float boxThreshold, float confThreshold,
44  cv::Size const & bsiz, int fudge, size_t const maxbox);
45 
46  private:
47  void onParamChange(postprocessor::anchors const & param, std::string const & val);
48 
49  // Raw YOLO processing for one scale
50  void yolo_one(cv::Mat const & out, std::vector<int> & classIds, std::vector<float> & confidences,
51  std::vector<cv::Rect> & boxes, size_t nclass, int yolonum, float boxThreshold,
52  float confThreshold, cv::Size const & bsiz, int fudge, size_t maxbox,
53  bool sigmo, float scale_xy);
54 
55  std::vector<std::vector<float>> itsAnchors;
56  std::vector<int> itsYoloNum;
57  std::mutex itsOutMtx;
58  };
59 
60  } // namespace dnn
61 } // namespace jevois
jevois::ParameterRegistry::Component
friend class Component
Allow Component and DynamicParameter to access our registry data, everyone else is locked out.
Definition: ParameterRegistry.H:51
jevois::dnn::PostProcessorDetectYOLO
Post-Processor sub-component for raw YOLO decoding.
Definition: PostProcessorDetectYOLO.H:27
jevois::Component
A component of a model hierarchy.
Definition: Component.H:181
jevois::dnn::PostProcessorDetectYOLO::~PostProcessorDetectYOLO
virtual ~PostProcessorDetectYOLO()
Destructor.
Definition: PostProcessorDetectYOLO.C:51
jevois
Definition: Concepts.dox:1
jevois::dnn::PostProcessorDetectYOLO::freeze
void freeze(bool doit)
Freeze/unfreeze parameters that users should not change while running.
Definition: PostProcessorDetectYOLO.C:55
PostProcessor.H
jevois::dnn::PostProcessorDetectYOLO::yolo
void yolo(std::vector< cv::Mat > const &outs, std::vector< int > &classIds, std::vector< float > &confidences, std::vector< cv::Rect > &boxes, size_t nclass, float boxThreshold, float confThreshold, cv::Size const &bsiz, int fudge, size_t const maxbox)
Generic raw YOLO processing.
Definition: PostProcessorDetectYOLO.C:69