halcon 分类器 笔记

1. 分类器使用范围 :


    1.1  image segmentation 图像分割;  object recognition 对象识别; quality control 质量控制;

            novelty detection 缺陷检测; optical character recognition(OCR)  光学字符识别;


2. 几类重要的HALCON分类器:


    2.1  多层神经网络Neural Nets (MLP) 

    2.2  支持向量机(SVM) : 一种监督学习的方法,广泛用于统计分类及回归分析;

    2.3  K-最邻近 (K-NN)

    2.4 高斯混合类型(GMM)


3. 如何选择适合的分类器、特征和训练样本


    3.1 选择适合的分类器

        MLP、GMM、SVM和K-NN这几种分类器是很强大且灵活的。对于图像分割,这四种分类器方法加上LUT(查表),能显著提升处理速度。但LUT最多支持3通道的图像。此外,LUT需要更高的内存需求且离线阶段的处理(如训练样本)更慢(lead to slower offline phase)。

        MLP分类器: 特别适合于需要快速分类但能接受离线训练样本慢 的应用;不支持缺陷检测。

        SVM分类器: 经过调整,能够比其他分类器实现更高质量的分类,但相对的检测速度要慢;

        GMM分类器: 训练和分类查找都很快,特别是当类的数量较少时;非常适合缺陷检测,但只适合那些不需要高维度空间的应用;

        K-NN分类器: 训练非常快且无维度空间的限制,所以非常适合有多种结构的特征和训练数据;此外,要加入额外的训练数据也非常快。缺点是比MLP要慢但是占用内存却更多,某些应用可能无法接受这个特点。。。


    上图:

image.png

    3.2  选择合适的特征


        对一般的分类器,所有特征,如region,颜色以及结构纹理,都能用来构建特征向量。使用合适算子生成的特征值来构建特征向量。

        对于图像分割,多通道图像和纹理图像的像素值被当作特征,由于有对应的影像分割算子,我们不需要明确提取出这些特征,有算子完成了这个步骤。

        对于OCR,一系列受限制的region被用来构建特征向量,有特定的OCR算子会计算这些特征,所以只需要选择特征的类型便可。

        对于texture纹理对象,可以使用算子texture_laws获得一个单通道的图像;使用cmopose6处理一个6通道的texture图像等;两个texture处理后得到两个单通道纹理图像,然后使用histo_2dim合并成2通道图像并获取2通道图像的直方图(texture_laws.hdv);


        halcon提供的选择特征的算子:  select_feature_set_svm;  select_feature_set_gmm;  select_feature_set_mlp;

        select_feature_set_knn;


    3.3 选择训练样本


        选择总体特征,但要允许偏差;

        对texture纹理图像,样本要覆盖纹理图像的噪声引起的偏差;

        对region,不能只识别理想化的值,要泛化;


        一些技巧: 

            1.拷贝一些样本,通过腐蚀、膨胀或轻微的选择角度来修改,然后生成的人工样本,可以覆盖掉一些偏差;

            2.对于样本的类的数量分布差别很大的,如质量检测时,大部分是好的产品,这时可以把较少的坏的产品合并成一个特征类,这时就是两个class的特征的对比了。


4.HALCON 分类器的基础步骤:


    4.1 提取样本对象的向量特征并存储;

    4.2 用存储的多个样本对象的向量特征来训练分类器;

    4.3  通过训练过的样本特征 来研究分类的对象;

     4.4  使用训练器识别出新的特征属于哪一类向量特征;


5.例程


    5.1 通过 MLP分类器 识别不同金属部分;classify_metal_parts.hdev;


    step1: Create classifier 创建分类器

        create_class_mlp()  为分类器创建多层感知器。

create_class_mlp( : : NumInput, NumHidden, NumOutput, OutputFunction,Preprocessing, NumComponents,

 RandSeed : MLPHandle)


   参数:

    NumInput: 提取到的要输入的特征的数量;

    NumOutput: 输出的特征类  的数量;一般来说, NumOutput 的值 与 NumComponents 的值 是相同的。


    step2: Add training samples to the classifier 添加训练样本到分类器

    add_sample_class_mlp()  添加训练的样本到多层感知器的训练数据;


      add_sample_class_mlp( : : MLPHandle, Features, Target : )

 Features被存储的训练样本的特征向量,  Target指定的类别或期望的返回向量    

 训练的样本通过 参数 Features 和Target提供,Feature的 数量与 Create_class_mlp_Target的 NumInput相同。

  Target 是样本的目标向量, 其向量长度一定要与 step1 所有三种激活函数(OutputFunction)的NumOutput相同。


  Step3 : Train the classifier 训练分类器

    train_class_mlp()


  train_class_mlp( : : MLPHandle, MaxIterations, WeightTolerance, ErrorTolerance :Error, ErrorLog)

   MaxIterations : 最大迭代次数(迭代训练多少次));

  WeightTolerance: 权重;


step5: classify new objects

classify_class_mlp()

 step6. Destroy the classifyer

clear_class_mlp()


————————————————

版权声明:本文为CSDN博主「nope啊」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/u010096608/article/details/80350692



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864