《计算机视觉度量:从特征描述到深度学习》-- MLP对数据进行分割检测

文章讲述了如何利用机器学习,如MLP,解决工业检测中的对象分割问题,通过预先标注区域,训练模型来自动识别并区分不同对象,包括背景,从而简化阈值设置。训练过程包括读取图片、设置检测区域、创建MLP模型、添加样本数据和最终进行预测。
摘要由CSDN通过智能技术生成

检测分割是视觉检测长期的课题,在工业检测需求中,分割一般采用阈值的方式进行分割。为了设置稳定的阈值参数,现场调试会非常复杂。为了解决这个问题,工业采用机器学习进行对象分割。基础思路是采用分类的方式对标注的区域进行学习,检测过程对整幅图片的像素进行标识。获取分割区域,检测有效区域。

下面例子是采用MLP对颜色区域进行分割。目前学习方式进行分割的方法有很多,机器学习的分割方式,是不采用预训练的方式进行分割。主要针对特定场景和一致性好的场景区域进行分割,训练和预测都可以在普通CPU完成。

*读取第一种检测图片
read_image (Image, 'color/citrus_fruits_01')
*获取图片基础属性
get_image_pointer1 (Image, Pointer, Type, Width, Height)
*创建MLP模型
create_class_mlp (3, 3, 3, 'softmax', 'normalization', 10, 42, MLPHandle)
*设置第一种检测对象以的区域
gen_rectangle1 (OrangeRegion, 100, 130, 230, 200)
*设置检测的背景区域
gen_rectangle1 (BackgroundRegion, 30, 20, 50, 50)
*设置一个空的区域对象,主要是预留区域ID给其他一种检测对象
****************************************下面过程是添加一个检测数据组的方式***************
gen_empty_region (EmptyRegion)
*设置一个训练的容器对象
gen_empty_obj (TrainingRegions1)
*添加第一种检测对象区域到容器
concat_obj (TrainingRegions1, OrangeRegion, TrainingRegions1)
*添加第二种检测对象区域到容器
concat_obj (TrainingRegions1, EmptyRegion, TrainingRegions1)
*添加背景对象第三种检测对象到容器
concat_obj (TrainingRegions1, BackgroundRegion, TrainingRegions1)
*添加容器和图片到分类的指针对象里面
add_samples_image_class_mlp (Image, TrainingRegions1, MLPHandle)
**************************************************************************************

*读取第二种检测对象图片
read_image (Image, 'color/citrus_fruits_03')
*设置第二种检测对象区域
gen_rectangle1 (LemonRegion, 180, 130, 230, 240)
*设置检测的背景区域
gen_rectangle1 (BackgroundRegion, 400, 20, 430, 50)
****************************************下面过程是添加一个检测数据组的方式***************
*设置一个训练的容器对象
gen_empty_obj (TrainingRegions2)
*添加第一种检测对象区域到容器
concat_obj (TrainingRegions2, EmptyRegion, TrainingRegions2)
*添加第二种检测对象区域到容器
concat_obj (TrainingRegions2, LemonRegion, TrainingRegions2)
*添加背景对象第三种检测对象到容器
concat_obj (TrainingRegions2, BackgroundRegion, TrainingRegions2)
*添加容器和图片到分类的指针对象里面
add_samples_image_class_mlp (Image, TrainingRegions2, MLPHandle)
**************************************************************************************

*添加完数据进行训练
train_class_mlp (MLPHandle, 200, 1, 0.01, Error, ErrorLog)


**********************数据进行测试***************************************
I:=5
*读取图片
read_image (Image, 'color/citrus_fruits_' + I$'.2d')
*对图片数据进行预测,0.5代表执信度阈值
classify_image_class_mlp (Image, ClassRegions, MLPHandle, 0.5)
*获取结果,第一种检测对象的区域
select_obj (ClassRegions, ClassOranges, 1)
*获取结果,第二种检测对象的区域
select_obj (ClassRegions, ClassLemons, 2)
*获取结果,第三种检测对象的区域
select_obj (ClassRegions, ClassBackground, 3)

核心模块基本的思路是。准备好检测对象的图片,使用标注的方式获取要检测对象的区域,并提前要知道分类和检测的数量。作为创建模型create_class_mlp的输出目标值,图片的通道数作为输出值。

添加数据类型的时候,是根据gen_empty_obj,创建对象里面,添加顺序做的类型标识,如果图片上面没有要添加的类型区域,可以设置一个空区域进去。

获取分割结果的时候,也是通过select_obj,根据区域的ID获取不同对象的结果,ID对应的是添加的顺序,顺序从1开始。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值