티스토리 뷰

 

onnx 모델에는 operations 뿐만아니라 metadata 도 저장할 수 있다. 이를 잘 활용하면 하나의 onnx 파일로 별도의 config 파일 없이도 손쉽게 모델을 배포할 수 있을 것이다.

 

이를 C++ 에서 읽어올 수 있는 방법은 아래와 같다.

 

*onnxruntime 1.15.1 기준이다.

 

#include <algorithm>
#include <cassert>
#include <cmath>
#include <cstddef>
#include <cstdint>
#include <iostream>
#include <numeric>
#include <onnxruntime_cxx_api.h>
#include <opencv2/opencv.hpp>
#include <sstream>
#include <string>
#include <vector>


int main(int argc, char *argv[]) {
  std::string model_file = "/app/models/yolov8n.onnx";

  Ort::Env env(ORT_LOGGING_LEVEL_WARNING, "parse_metadata");
  Ort::SessionOptions session_options;
  Ort::Session session{nullptr};
  Ort::AllocatorWithDefaultOptions allocator;

  session = Ort::Session(env, model_file.c_str(), session_options);

  auto model_metadata = session.GetModelMetadata();
  auto custom_metadata_map_keys = model_metadata.GetCustomMetadataMapKeysAllocated(allocator);
  std::cout << "Model Metadata: " << std::endl;
  for (auto &key : custom_metadata_map_keys) {
    std::string key_str = key.get();
    std::string value_str = model_metadata.LookupCustomMetadataMapAllocated(key_str.c_str(), allocator).get();
    std::cout << "key: " << key_str << " value: " << value_str << std::endl;
  }

  return 0;
}

 

앞으로 다양한 onnxruntime 예제 코드를 올리려고한다. 

https://github.com/developer0hye/onnxruntime-cuda-cpp-example/tree/main

 

GitHub - developer0hye/onnxruntime-cuda-cpp-example

Contribute to developer0hye/onnxruntime-cuda-cpp-example development by creating an account on GitHub.

github.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함