ImageEn, unit ievision

TIEVisionNNet


Declaration

TIEVisionNNet = interface(TIEVisionNNetBase)


Description

The TIEVisionNNet class provides functionilty related to neural networks and deep learning. The following functions are supported:
Recognizing (classifying) a single object within an image,
Detecting the position of one or more objects within an image
Detecting the position of one or more text blocks within an image.

This class is responsible for loading the model, preparing the input, running the neural network, and post-processing the output.


More information on Deep Learning is available at: learnopencv.com/deep-learning-with-opencvs-dnn-module-a-definitive-guide/


Demo

Demo  Demos\IEVision\NeuralNet\NeuralNet.dpr


Examples

// Recognize the object inside TImageEnView1 using a pretrained BLVC GoogLeNet model
var
  nnet: TIEVisionNNet;
  classId: integer;
  confidence: single;
begin
  nnet := IEVisionLib.createNNet('bvlc_googlenet.caffemodel', 'bvlc_googlenet.prototxt');
  nnet.classifyObject(ImageEnView1.IEBitmap.GetIEVisionImage(), classId, confidence);
  ShowMessage(Format('Object index %d (%d%%)', [classId, trunc(confidence * 100)]));
end;

// Detect all text blocks inside TImageEnView using DB_IC15_resnet18.onnx pretrained model
var
  nnet: TIEVisionNNet;
  rrects: TIEVisionVectorRotatedRect;
  confidences: TIEVisionVectorDouble;
  i: integer;
begin
  nnet := IEVisionLib.createNNet('models\DB\DB_IC15_resnet18.onnx');
  nnet.setInputSize(1280, 736);
  nnet.setInputScale(1.0/255);
  nnet.detectTexts(1, ImageEnView1.IEBitmap.GetIEVisionImage(), confidences, rrects);
  for i := 0 to rrects.size() - 1 do
  begin
    // Do something with the detected text blocks, e.g. use TIEVisionOCR to recognize the text
  end;
end;


Methods and Properties

Public Method  setInputScale
Public Method  setInputSize
Public Method  setSwapRB
Public Method  classifyObject
Public Method  detectObjects
Public Method  detectTexts
Public Method  isEmpty


See Also

createNNet
TIEVisionNNetSuperRes