main.cpp 1.77 KB
Newer Older
liucong's avatar
liucong committed
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <opencv2/dnn.hpp>
#include <SimpleLog.h>
#include <CommonDefinition.h>
#include <resnet50.h>

int main()
{
    // 创建分类器
    migraphxSamples::Classifier classifier;
    migraphxSamples::InitializationParameterOfClassifier initParamOfClassifier;
    migraphxSamples::ErrorCode errorCode=classifier.Initialize(initParamOfClassifier);
    if(errorCode!=migraphxSamples::SUCCESS)
    {
        LOG_ERROR(stdout, "fail to initialize ResNet50!\n");
        exit(-1);
    }
    LOG_INFO(stdout, "succeed to initialize ResNet50\n");

    // 读取测试图片
    cv::Mat srcImage=cv::imread("../Resource/Images/ImageNet_01.jpg",1);

    // 设置batchsize
    int batchsize=1;
    std::vector<cv::Mat> srcImages;
    for(int i=0;i<batchsize;++i)
    {
        srcImages.push_back(srcImage);
    }

    // 推理
    std::vector<std::vector<migraphxSamples::ResultOfPrediction>> predictions;
    double time1 = getTickCount();
    classifier.Classify(srcImages,predictions);
    double time2 = getTickCount();
    double elapsedTime = (time2 - time1)*1000 / getTickFrequency();
    LOG_INFO(stdout, "inference time:%f ms\n", elapsedTime);

    // 获取推理结果
    LOG_INFO(stdout,"========== Classification Results ==========\n");
    for(int i=0;i<predictions.size();++i)
    {
        // 一个batch中第i幅图像的结果
        printf("========== %d result ==========\n",i);
        std::vector<migraphxSamples::ResultOfPrediction> resultOfPredictions=predictions[i];
        for(int j=0;j<resultOfPredictions.size();++j)
        {
            migraphxSamples::ResultOfPrediction prediction=resultOfPredictions[j];
            printf("label:%d,confidence:%f\n",prediction.label,prediction.confidence);
        }

    }

    return 0;
}