vitis::ai::YOLOv3

Base class for detecting objects in the input image (cv::Mat).

Input is an image (cv::Mat).

Output is the position of the pedestrians in the input image.

Sample code:

   auto yolo =
vitis::ai::YOLOv3::create("yolov3_adas_pruned_0_9", true);
   Mat img = cv::imread("sample_yolov3.jpg");

   auto results = yolo->run(img);

   for(auto &box : results.bboxes){
     int label = box.label;
     float xmin = box.x * img.cols + 1;
     float ymin = box.y * img.rows + 1;
     float xmax = xmin + box.width * img.cols;
     float ymax = ymin + box.height * img.rows;
     if(xmin < 0.) xmin = 1.;
     if(ymin < 0.) ymin = 1.;
     if(xmax > img.cols) xmax = img.cols;
     if(ymax > img.rows) ymax = img.rows;
     float confidence = box.score;

     cout << "RESULT: " << label << "\t" << xmin << "\t" << ymin << "\t"
          << xmax << "\t" << ymax << "\t" << confidence << "\n";
     if (label == 0) {
       rectangle(img, Point(xmin, ymin), Point(xmax, ymax), Scalar(0, 255, 0),
                 1, 1, 0);
     } else if (label == 1) {
       rectangle(img, Point(xmin, ymin), Point(xmax, ymax), Scalar(255, 0, 0),
                 1, 1, 0);
     } else if (label == 2) {
       rectangle(img, Point(xmin, ymin), Point(xmax, ymax), Scalar(0, 0, 255),
                 1, 1, 0);
     } else if (label == 3) {
       rectangle(img, Point(xmin, ymin), Point(xmax, ymax),
                 Scalar(0, 255, 255), 1, 1, 0);
     }

   }
   imwrite("sample_yolov3_result.jpg", img);

Display of the model results:

Figure 1: out image

Image sample_yolov3_result.jpg

Quick Function Reference

The following table lists all the functions defined in the vitis::ai::YOLOv3 class:

Table 1. Quick Function Reference
TypeNameArguments
std::unique_ptr< YOLOv3 >create
  • const std::string & model_name
  • bool need_preprocess
YOLOv3Resultrun
  • const cv::Mat & image
std::vector< YOLOv3Result >run
  • const std::vector< cv::Mat > & images
std::vector< YOLOv3Result >run
  • const std::vector< vart::xrt_bo_t > & input_bos

create

Factory function to get an instance of derived classes of class YOLOv3.

Prototype

std::unique_ptr< YOLOv3 > create(const std::string &model_name, bool need_preprocess=true);

Parameters

The following table lists the create function arguments.

Table 2. create Arguments
Type Name Description
const std::string & model_name Model name
bool need_preprocess Normalize with mean/scale or not, default value is true.

Returns

An instance of YOLOv3 class.

run

Function to get running result of the YOLOv3 neuron network.

Prototype


            YOLOv3Result run(const cv::Mat &image)=0;

Parameters

The following table lists the run function arguments.

Table 3. run Arguments
Type Name Description
const cv::Mat & image Input data of input image (cv::Mat).

Returns

YOLOv3Result.

run

Function to get running result of the YOLOv3 neuron network in batch mode.

Prototype

std::vector< YOLOv3Result > run(const std::vector< cv::Mat > &images)=0;

Parameters

The following table lists the run function arguments.

Table 4. run Arguments
Type Name Description
const std::vector< cv::Mat > & images Input data of input images (std:vector<cv::Mat>). The size of input images equals batch size obtained by get_input_batch.

Returns

The vector of YOLOv3Result.

run

Function to get running result of the YOLOv3 neuron network in batch mode, used to receive user's xrt_bo to support zero copy.

Prototype

std::vector< YOLOv3Result > run(const std::vector< vart::xrt_bo_t > &input_bos)=0;

Parameters

The following table lists the run function arguments.

Table 5. run Arguments
Type Name Description
const std::vector< vart::xrt_bo_t > & input_bos The vector of vart::xrt_bo_t.

Returns

The vector of YOLOv3Result.