Halcon 分类

news/2024/11/17 23:57:54/

分类是将对象分配给一组类的单个实例的术语。由特定的特征来描述对象及类。例如,像素的颜色或图形的形状区域。为定义类,必须指定特征。通过基于已知对象的训练。训练后,分类器将对象的特征与可用的相关特征进行比较类并返回具有最大对应关系的类。取决于所选的分类器,可能还需要给出分类的概率信息或分类的置信度。

通常,可以区分两种图像数据分类。一种方法是基于纯像素分类,根据颜色或纹理对图像进行分割。另一种方法更通用,可以对任意特征进行分类,也就是说,可以根据区域特征(如形状、大小或颜色)对区域进行分类

Halcon提供不同的分类器。最重要的分类器是神经网络(多层感知器)(MLP)分离器,支持向量机(SVM)分类器,高斯混合模型(GMM)分类器和K近邻(KNN)分类器。另外,也可以使用核分类器,但是作为GMM分类器导致可比较的结果,并且更鲁帮,这里只描述GMM分类器。此外,最简单的分类器可以用于图像分割,包括二维像素的分类器使用class_2dim_sup或class_2dim_unsup进行分类,以及n维像素分类方法。基于(class_ndim_norm)它可以用于,例如,欧几里分类

决定为特定任务使用哪个分类器,并为所选分类选择合适的参数相对具有挑战性,根据分类任务不同,需要不同的处理方法。Halcon提供用于应用分类的操作符,在创建分类器的步骤中,总结不同分类器的最显著的优点和缺点。单个操作符相关的分类器之间的细微差异用相应的步骤说明或参考手册的相应部分。然而,对于分类没有一套固定的规则来进行合适的旋转并给出分类器的参数旋转。在许多情况下,必须尝试不同的分类器。针对特定的任务和特定的训练数据。独立于选择的方法,在几乎任何为得到满意的结果,必须处理这些参数。综上,分类是复杂的。

一 基本概念

分类基本步骤:
在这里插入图片描述

1 获取图像

在对图像进行分类时,必须同时获取训练数据的生产和分类图像的生产。

2 创建分类

分类的第一步是创建一个新的分类器。根据分类的需求觉得选择那一个分类器。以下是四种分类器的主要优缺点:
①多层感知器:MLP分类器识别率高,分类速度快。作为交换,训练速度不如SVM分类,特别是对于庞大的训练集。如果分类是时间紧迫的,但训练可以离线应用,MLP方法是一个很好的选择。一个返回拒绝类,但与GMM分类器相比,它可以受到离群值的影响,因此建议进行额外的明确的拒绝训练。另外,如果需要添加对于额外的训练样本,不应该附件第二次训练,而应该使用两个样本重复训练。

② 支持向量机:与MLP分类器相比,SVM分类器的识别效果稍微好一些训练速度更快,特别是对于庞大的训练集。此外,还进行了新的培训样本可以简单附加到以前的训练中。作为交换,分类速度不如MLP方法。

③高斯混合模型:GMM分类的优点是,由参数控制设置时,与训练过的类之一不匹配的特征向量可以分配给拒绝类。此外,您可以应用附加到第一个培训的第二个培训。例如,为添加新样本。GMM分类器的优缺点是识别率不如MLP或SVM方法获得的识别率。进一步,对于特征向量的长读为15个特征是推荐,而对于MPL和SVM分类器,500个特征的特征向量可以实现。

④K最近邻:KNN分类器的一个优点是它只有几个非常直观的参数。此外,KNN分类器使用很少的训练数据。原则上,每只样品一次是足够,可以得到合理的结果。KNN分类器的训练速度是所有分类器中最快的。从而KNN分类器成为自动特征选择和快速评估的首选。

二 具体步骤

在这里插入图片描述

例子 SVM分类器例子
在这里插入图片描述

* 如何使用SVM分类器进行分类
dev_update_off()read_image(Image,'plastic_mesh/plastic_mesh_01')get_image_size(Image,Width,Height)dev_close_window()dev_open_window(0,0,Width,Height,'black',WindowHandle)dev_set_color('red')set_display_font(WindowHandle,16,'mono', 'true', 'false')* 用于分类的纹理过滤器奖返回图像上的工件边界,需要检查塑料的网格图像是否
* 包含一个整数的网格单元。当然这样会导致错误,在图像边缘检测到错误时,必须
* 排除靠近的区域。从图像边界进行训练和分类并生成矩形。注意,该图像随后被按
* 2倍的比例缩小。
gen_rectangle1(Rectangle,10,10,Height/2-11,Width/2-11)
* 创建SVM分类器
create_class_svm (5, 'rbf', 0.01, 0.0005, 1, 'novelty-detection', 'normalization', 5, SVMHandle)
* 训练5张无异常的图像
for J:=1 to 5 by 1read_image(Image,'plastic_mesh/plastic_mesh_'+J$'02')* 为节省时间,优化网格的图像的分辨率zoom_image_factor(Image,ImageZoomed,0.5,0.5,'constant')dev_display(ImageZoomed)disp_message (WindowHandle, 'Adding training samples...', 'window', 12, 12, 'black', 'true')* 生成训练图像gen_texture_image (ImageZoomed, ImageTexture)* 将样本添加到分类器中add_samples_image_class_svm(ImageTexture,Rectangle,SVMHandle)
endfordev_display(ImageZoomed)
disp_message(WindowHandle,'Training SVM...','window',12,12,'black', 'true')
* 训练SVM.生成许多支持向量
train_class_svm(SVMHandle,0.001,'default')
* 提升速度,减少支持向量
reduce_class_svm(SVMHandle,'bottom_up',2,0.001,SVMHandleReduced)* 现在检测图像中NG的网格
dev_set_draw('margin')
dev_set_line_width(3)
for J:=1 to 14 by 1read_image(Image,'plastic_mesh/plastic_mesh_'+J$'02')zoom_image_factor(Image,ImageZoomed,0.5,0.5,'constant')dev_display(ImageZoomed)dev_set_color('white')dev_display(Rectangle)gen_texture_image(ImageZoomed,ImageTexture)reduce_domain(ImageTexture,Rectangle,ImageTextureReduced)* 使用SVM进行分类检测classify_image_class_svm(ImageTextureReduced,Errors,SVMHandleReduced)* 对返回的数据进行处理,删除数据中不重要的部分opening_circle(Errors,ErrorsOpening,3.5)closing_circle(ErrorsOpening,ErrorsClosing,10.5)connection(ErrorsClosing,ErrorConnected)select_shape(ErrorConnected,FinalErrors,'area','and',300,1000000)count_obj(FinalErrors,NumErrors)dev_set_color('red')dev_display(FinalErrors)if (NumErrors > 0)disp_message (WindowHandle, 'Mesh not OK', 'window', 12, 12, 'red', 'true')elsedisp_message (WindowHandle, 'Mesh OK', 'window', 12, 12, 'forest green', 'true')endifif (J < 14)disp_continue_message (WindowHandle, 'black', 'true')endifstop ()
endfor

琐碎时间阅读基础知识,详情关注微信公众号“知识代码AI”。

在这里插入图片描述


http://www.ppmy.cn/news/1531039.html

相关文章

Creo百度云下载:附安装包+图文安装教程资源

Creo 11作为PTC公司推出的计算机辅助设计&#xff08;CAD&#xff09;软件的最新版本&#xff0c;在多个方面提供了显著的新功能和增强。今天与大家一起来看看Creo11新功能的详细归纳&#xff1a; 1. 核心建模与生产力增强 多体概念支持&#xff1a;Creo 11在核心建模环境方面…

Xcode16 iOS18 编译问题适配

问题1&#xff1a;ADClient编译报错问题 报错信息 Undefined symbols for architecture arm64:"_OBJC_CLASS_$_ADClient", referenced from:in ViewController.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit co…

Dash稳定版更新

大家好&#xff0c;今天要和大家聊聊一个开发Python网页应用的超级神器——Dash 2.18.1稳定版本正式发布啦&#xff01;此次更新&#xff0c;针对2.18.0版本的问题进行了修复和优化&#xff0c;为我们带来了更为稳定、强大的开发体验。 Dash是什么&#xff1f; Dash是一款基于P…

【2024】前端学习笔记9-内部样式表-外部导入样式表-类选择器

学习笔记 内部样式表外部导入样式表类选择器&#xff1a;class 内部样式表 内部样式表是将 CSS 样式规则写在 HTML 文档内部。通过<style>标签在 HTML 文件的<head>部分定义样式。 简单示例&#xff1a; <!DOCTYPE html><html><head><style…

react hooks--useCallback

概述 useCallback缓存的是一个函数&#xff0c;主要用于性能优化!!! 基本用法 如何进行性能的优化呢&#xff1f; useCallback会返回一个函数的 memoized&#xff08;记忆的&#xff09; 值&#xff1b;在依赖不变的情况下&#xff0c;多次定义的时候&#xff0c;返回的值是…

暴雨讲堂:算力高速互联催化超节点开启AI新篇章

在2024中国国际北京通信展期间&#xff0c;暴雨副总裁孙辉介绍了暴雨信息在超节点方案的最新突破&#xff0c;彰显了暴雨信息在算力和网络技术上的强大创新能力。 随着人工智能技术的飞速发展&#xff0c;AI大模型的参数规模正以超越摩尔定律的速度急剧扩张。在此背景下&#…

嵌入式开发中学习C++的用处?

这个问题一直有同学在问&#xff0c;其实从我的角度是一定是需要学的&#xff0c;最直接的就是你面试大厂的嵌入式岗位或者相关岗位&#xff0c;最后一定会问c&#xff0c;而很多人是不会的&#xff0c;这就是最大的用处&#xff0c;至于从技术角度考量倒是其次&#xff0c;因为…

828华为云征文|使用Flexus X实例安装宝塔面板教学

目录 一、Flexus X实例简介 1.1 概述 1.2 产品规格 二、切换操作系统 2.1 Huawei Cloud EulerOS 2.0 标准版 2.2 切换镜像 三、部署宝塔面板 3.1 安装宝塔面板 3.2 放通安全组规则 3.3 登录宝塔面板 四、使用感受 4.1 柔性算力随心配 4.2 一直加速一直快 4.3 越用…