Signapse
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
CNNProcessor Class Reference

#include <CNNProcessor.h>

Inheritance diagram for CNNProcessor:
Inheritance graph
Collaboration diagram for CNNProcessor:
Collaboration graph

Public Member Functions

Scene ProcessScene (Scene s)
 
 CNNProcessor (CNNProcessorSettings s)
 
cv::Mat MakeBlob (Scene scene)
 
virtual void NextScene (Scene next)=0
 

Protected Member Functions

void LoadModel (std::string modelPath)
 
void NextScene (Scene scene)
 

Protected Attributes

CNNProcessorSettings settings
 
cv::dnn::Net net
 

Detailed Description

Schedulable Pipeline Link which performs network inference on each Scene, populating the results field.

Definition at line 20 of file CNNProcessor.h.

Constructor & Destructor Documentation

◆ CNNProcessor()

CNNProcessor::CNNProcessor ( CNNProcessorSettings  s)

Constructor, inits settings and loads model

Parameters
s

Definition at line 15 of file CNNProcessor.cpp.

15 : settings(s) {
17}
void LoadModel(std::string modelPath)
Definition: CNNProcessor.cpp:7
CNNProcessorSettings settings
Definition: CNNProcessor.h:27

Member Function Documentation

◆ LoadModel()

void CNNProcessor::LoadModel ( std::string  modelPath)
protected

Loads neural network from location on disk

Parameters
modelPath

Definition at line 7 of file CNNProcessor.cpp.

7 {
8 net = cv::dnn::readNetFromTensorflow(modelPath);
9}
cv::dnn::Net net
Definition: CNNProcessor.h:29

◆ MakeBlob()

cv::Mat CNNProcessor::MakeBlob ( Scene  scene)

Makes OpenCV image "blob" from the region of interest in the frame. Blob format is required for inference.

Parameters
scene
Returns
matrix image blob, ready for inference

Definition at line 25 of file CNNProcessor.cpp.

25 {
26 int x = scene.regionOfInterest.UpperLeft.x; int y = scene.regionOfInterest.UpperLeft.y;
27 int width = scene.regionOfInterest.LowerRight.x - x;
28 int height = scene.regionOfInterest.LowerRight.y - y;
29 cv::Mat roi = scene.frame(cv::Range(y, y+height), cv::Range(x, x+width));
30 cv::Mat small;
31 cv::resize(roi, small, cv::Size(settings.InputDim_x,settings.InputDim_y));
32 cv::Mat blob;
33 cv::dnn::blobFromImage(small, blob, (1.0 / 255.0));
34 return blob;
35}
Point LowerRight
Definition: Scene.h:25
Point UpperLeft
Definition: Scene.h:24
int y
Definition: Scene.h:13
int x
Definition: Scene.h:13
cv::Mat frame
Member variable.
Definition: Scene.h:42
BoundingBox regionOfInterest
Member variable.
Definition: Scene.h:52

◆ ProcessScene()

Scene CNNProcessor::ProcessScene ( Scene  scene)
virtual

Executed network inference on given scene, populates the scene with results.

Parameters
sceneinput scene
Returns
output processed scene

Implements SchedulableLink.

Definition at line 42 of file CNNProcessor.cpp.

42 {
43 if(scene.frame.empty()) return scene;
44 cv::Mat blob = MakeBlob(scene);
45 net.setInput(blob);
46 cv::Mat prob = net.forward();
47 cv::Point classIdPoint;
48 double confidence;
49 minMaxLoc(prob.reshape(1, 1), 0, &confidence, 0, &classIdPoint);
50 int classId = classIdPoint.x;
51 scene.result = SignapseUtils::getLetterFromDigit(classId);
52 return scene;
53}
cv::Mat MakeBlob(Scene scene)
std::string result
Member variable.
Definition: Scene.h:47

Member Data Documentation

◆ net

cv::dnn::Net CNNProcessor::net
protected

Definition at line 29 of file CNNProcessor.h.

◆ settings

CNNProcessorSettings CNNProcessor::settings
protected

Definition at line 27 of file CNNProcessor.h.


The documentation for this class was generated from the following files: