<aside> 💡 이 페이지는 MrD C++ API를 이용하여 학습한 모델을 사용하는 예제를 담고 있습니다.
</aside>
모델이 예측한 결과
#include <iostream>
#include <classificationHelper.h>
#include <common.h>
#include <opencv2/opencv.hpp>
void main()
{
try {
//CUDA 사용 여부 확인
if (mrd::classificationHelper::device_check() == mrd::deviceType::cpu) {
std::cout << "cpu enabled" << std::endl;
}
else {
std::cout << "gpu enabled" << std::endl;
}
//Classification 클래스 생성
auto classifier = mrd::classificationHelper::classification();
//학습된 모델 열기
classifier->open("C://Github//DeepLearningStudy//trained_model//foodDetector.pt",
"C://Github//DeepLearningStudy//dataset//FIAT_dataset_food//___target_info.json",
mrd::deviceType::gpu_cuda);
//분류 유형 설정
classifier->mode(mrd::classificationMode::multi_class);
//예측할 이미지를 opencv로 로드
auto cvImage = cv::imread("C://Github//DeepLearningStudy//dataset//FIAT_dataset_food//1_1_hamburger.jpg", cv::IMREAD_COLOR);
//모델에 입력할 수 있도록 이미지 리사이즈
cv::Mat resized_image;
cv::resize(cvImage, resized_image, cv::Size(224, 224));
//모델에 입력 가능하도록 MrD에서 제공하는 Frame형태로 변경
auto frame = mrd::common::Frame(224, 224, 3, resized_image.data, mrd::pixel_type::byte_pixel);
//결과 예측
auto result = classifier->predict(frame);
//결과 디스플레이
for (int index = 0; index < result.size(); index++) {
std::cout << "num class : " << index << ", score : " << result[index] << std::endl;
}
cv::imshow("input image", resized_image);
cv::waitKey();
}
catch (std::exception e) {
std::cout << "message" << std::endl;
std::cout << e.what() << std::endl;
}
}
<aside> 📘 MrD C++ API설치 방법은 메인 페이지를 참고 바랍니다.
</aside>