Halcon之MLP多层感知机分类

这篇博客详细介绍了如何使用Halcon的多层感知器(MLP)进行图像识别模型的训练。从模型创建、图像读取、特征提取、样本添加、模型训练到模型保存,步骤清晰明了。此外,还展示了前向推断过程,包括模型加载、图像预测、结果处理,并通过准确率计算评估模型性能。
摘要由CSDN通过智能技术生成

H a l c o n 之 M L P Halcon之MLP HalconMLP

模 型 训 练 模型训练

HTuple hv_MLPHandle

一 定义模型

HOperatorSet.CreateClassMlp(180, 50, 5, "softmax", "normalization", 10, 42, out hv_MLPHandle);

二 读取图像

HOperatorSet.ReadImage(out ho_Image, hv_ImageFiles.TupleSelect(hv_Index));

三 获取特征输入矩阵

gen_features(ho_Image, out hv_FeatureVector);

四 添加训练样本

HOperatorSet.AddSampleClassMlp(hv_MLPHandle, hv_FeatureVector, hv_iGrade);

五 训练模型

public static void TrainClassMlp(HTuple MLPHandle, HTuple maxIterations, HTuple weightTolerance, HTuple errorTolerance, 
out HTuple error, out HTuple errorLog);

HOperatorSet.TrainClassMlp(hv_MLPHandle, 500, 1, 0.000001, out hv_Error, out hv_ErrorLog);

六 保存模型到本地

HOperatorSet.WriteClassMlp(hv_MLPHandle, hv_ModelPath);

前 向 推 导 前向推导

一 读取模型

HOperatorSet.ReadClassMlp(model_path ,out hv_MLPHandle);

二 读取预测图像

HOperatorSet.ReadImage(out ho_Image, hv_ImageFiles.TupleSelect(hv_Index));  
MachineMaster.halcon.GenDetectionRegion(ho_Image, out ho_DectionRegion, out HObject ho_DectionContour, hv_RegionType);
MachineMaster.halcon.gen_features(ho_DectionRegion, out hv_FeatureVector);

三 推导

 HOperatorSet.ClassifyClassMlp(hv_MLPHandle, hv_FeatureVector, 5, out hv_FoundClassIDs,out hv_Confidence);

四 预测结果处理

 hv_score_base = hv_Score_Base.TupleSelect(hv_FoundClassIDs.TupleSelect(0));
 hv_grad = (hv_FoundClassIDs.TupleSelect(0)) + 1;

评测指标

private List<string> preds_list = new List<string>();
private List<string> labels_list = new List<string>();

private string CalculateAcc(List<string> preds_list, List<string> labels_list)
{
    int correct = 0;
    string label = string.Empty;
    for (int i = 0; i < preds_list.Count; i++)
    {
        string label_substring = labels_list[i].Substring(1, 1);
        if(label_substring == "A")
        {
            label = "1";

        }else if(label_substring == "B")
        {
            label = "2";
        }
        else if (label_substring == "C")
        {
            label = "3";
        }
        else if (label_substring == "D")
        {
            label = "4";
        }
        else if (label_substring == "E")
        {
            label = "5";
        }


        if (preds_list[i] == label)
        {
            correct++;
        }
    }
    string res = (correct / preds_list.Count).ToString();
    return res;
}

// 预测值列表
preds_list.Add(hv_grad.ToString());
// 标签列表
labels_list.Add(hv_FileName);
//  计算正确率
string res = CalculateAcc(preds_list, labels_list);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值