跳转至

Classification.h

Go to the source code of this file.

Classification将图像分类为用户确定的几个类别。

图像被分类为具有最高分数的类别,该分数被计算为属于每个类别的概率。

推理选项

See also: SaigeInferenceOption

类激活图

在Classification功能中,您可以计算类激活图。这提供了有关图像中每个像素的类激活程度的分布信息。 要使用此功能,请将calcClassActivationMap值设置为true,并将标志设置为SAIGE_SET_CALC_CLASS_ACTIVATION_MAP。

Warning

当应用优化功能时,无法计算。在此示例中,仅当optimize选项值为false时,才设置为计算类激活图。

164
165
166
167
168
169
170
171
172
173
174
175
176
// ExampleClsRuntime.cpp:166

if (verbosity >= 3 && optimize == false) {
    options->calcClassActivationMap = true;
    retval = SaigeSetInferenceOption(handle, options, SAIGE_SET_CALC_CLASS_ACTIVATION_MAP);
    if (retval < 0) {
        std::cerr << "SaigeSetInferenceOption() failed - " << SaigeStrError(retval)
                  << std::endl;
        SaigeDestroyInferenceHandle(handle);
        SaigeDestroyInferenceResult(result);
        return retval;
    }
}

检查结果

在Classification功能中,您可以获得每个类别的分数值,分类图像的类别ID和推理时间。

附加分数

您可以设置每个类别的附加分数,SaigeInferenceOption::additionalScores。这允许您为特定类别分配权重。 要获取应用此选项的结果,必须将true作为第二个参数传递给SaigeGetInferenceResultScore函数。

244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
// ExampleClsRuntime.cpp:246

std::vector<float> score;
int classId;
score.resize(modelInfo->numOfClasses);
retval = SaigeGetInferenceResultScore(result, score.data(), true);
if (retval < 0) {
    std::cerr << "SaigeGetInferenceResultScore() failed - " << SaigeStrError(retval)
              << std::endl;
    SaigeDestroyInferenceHandle(handle);
    SaigeDestroyInferenceResult(result);
    return retval;
}

retval = SaigeGetInferenceResultClass(result, &classId);
if (retval < 0) {
    std::cerr << "SaigeGetInferenceResultClass() failed - " << SaigeStrError(retval)
              << std::endl;
    SaigeDestroyInferenceHandle(handle);
    SaigeDestroyInferenceResult(result);
    return retval;
}

retval = SaigeGetInferenceResultInspectionTime(result, &imreadTime, &inferenceTime,
                                               &postProcessingTime);
if (retval < 0) {
    std::cerr << "SaigeGetInferenceResultClass() failed - " << SaigeStrError(retval)
              << std::endl;
    SaigeDestroyInferenceHandle(handle);
    SaigeDestroyInferenceResult(result);
    return retval;
}

See also: SaigeGetInferenceResultClass, SaigeGetInferenceResultScore, SaigeGetInferenceResultInspectionTime