vitis::ai::Hourglass - 1.4 English

Vitis AI Library User Guide (UG1354)

Document ID
UG1354
Release Date
2021-07-22
Version
1.4 English
Hourglass model, input size is 256x256.

Base class for detecting poses of people.

Input is an image (cv:Mat).

Output is HourglassResult.

Sample code:

auto image = cv::imread(argv[2]);
if (image.empty()) {
  std::cerr << "cannot load " << argv[2] << std::endl;
  abort();
}
auto det = vitis::ai::Hourglass::create(argv[1]);
vector<vector<int>> limbSeq = {{0, 1},  {1, 2},   {2, 6},  {3, 6},  {3, 4}, {4, 5},
                               {6, 7},   {7, 8},  {8, 9}, {7, 12},
                               {12, 11}, {11, 10}, {7, 13}, {13, 14}, {14, 15}};

auto results = det->run(image.clone());
for (size_t i = 0; i < results.poses.size(); ++i) {
  cout<< results.poses[i].point<<endl;
  if (results.poses[i].type == 1) {
    cv::circle(image, results.poses[i].point, 5, cv::Scalar(0, 255, 0),
               -1);
  }
}
for (size_t i = 0; i < limbSeq.size(); ++i) {
  Result a = results.poses[limbSeq[i][0]];
  Result b = results.poses[limbSeq[i][1]];
  if (a.type == 1 && b.type == 1) {
    cv::line(image, a.point, b.point, cv::Scalar(255, 0, 0), 3, 4);
  }
}

Display of the hourglass model results:

Figure 1. hourglass result image
Image sample_hourglass_result.jpg

Quick Function Reference

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

Table 1. Quick Function Reference
Type Name Arguments
std::unique_ptr< Hourglass > create
  • const std::string & model_name
  • bool need_preprocess
HourglassResult run
  • const cv::Mat & image
std::vector< HourglassResult > run
  • const std::vector< cv::Mat > & images
int getInputWidth
  • void
int getInputHeight
  • void
size_t get_input_batch
  • void