halcon案例create_dl_model_classification

隶属于:
C:\Users\Public\Documents\MVTec\HALCON-23.05-Progress\examples\hdevelop\Deep-Learning\Framework

  • 使用 HALCON 深度学习框架创建一个分类模型。
  • 本示例向您展示了如何:
  • 1: 创建一个深度学习分类模型,
  • 2: 设置模型参数并通过其摘要检查模型,
  • 3: 检索和修改层参数,
  • 4: 添加元数据(可选)。为了创建一个网络,需要将不同的层连接成一个图。
  • 这意味着,我们从(至少)一个输入层开始。
  • 所有后续层都通过指定之前定义的层作为输入来添加。
    1
    2
    1

2

* 
dev_update_off ()
dev_close_window ()
* 

* 使用 HALCON 深度学习框架创建一个分类模型。
* 本示例向您展示了如何:
* 1: 创建一个深度学习分类模型,
* 2: 设置模型参数并通过其摘要检查模型,
* 3: 检索和修改层参数,
* 4: 添加元数据(可选)。
* 本示例中构建的网络架构类似于 LeNet。
* 此外,为了训练,我们添加了以下层:
* softmax
* 输入(图像标签)
* 输入(权重)
* 交叉熵损失
* 关于特定层的更多信息,请参考参考手册。
* 为了创建一个网络,需要将不同的层连接成一个图。
* 这意味着,我们从(至少)一个输入层开始。
* 所有后续层都通过指定之前定义的层作为输入来添加。
* 按运行(F5)开始示例。
* 第一部分:创建网络。
stop ()
* 
* 显式设置一些配置参数,例如输入尺寸。
InputWidth := 64
InputHeight := 64
InputDepth := 3
* 
* 创建输入层。
create_dl_layer_input ('input', [InputWidth,InputHeight,InputDepth], [], [], DLLayerInput)
* 
* 创建网络的核心。
create_dl_layer_convolution (DLLayerInput, 'convolution1', 5, 1, 1, 20, 1, 'none', 'relu', 'bias_filler_variance_norm', 'norm_out', DLLayerConvolution1)
create_dl_layer_batch_normalization (DLLayerConvolution1, 'batchnorm1', 0.9, 0.0001, 'none', [], [], DLLayerBatchNorm)
create_dl_layer_pooling (DLLayerBatchNorm, 'pooling1', [2, 2], [2, 2], 'implicit', 'maximum', [], [], DLLayerPooling1)
create_dl_layer_convolution (DLLayerPooling1, 'convolution2', 5, 1, 1, 50, 1, 'none', 'relu', 'bias_filler_variance_norm', 'norm_out', DLLayerConvolution2)
create_dl_layer_batch_normalization (DLLayerConvolution2, 'batchnorm2', 0.9, 0.0001, 'none', [], [], DLLayerBatchNorm1)
create_dl_layer_pooling (DLLayerBatchNorm1, 'pooling2', [2, 2], [2, 2], 'implicit', 'maximum', [], [], DLLayerPooling2)
create_dl_layer_dense (DLLayerPooling2, 'dense1', 500, 'bias_filler_variance_norm', 'norm_out', DLLayerDense1)
create_dl_layer_dense (DLLayerDense1, 'dense2', 10, 'bias_filler_variance_norm', 'norm_out', DLLayerDense2)
* 
* 添加用于训练的必要层。
create_dl_layer_softmax (DLLayerDense2, 'softmax', [], [], DLLayerSoftMax)
create_dl_layer_input ('image_label_id', [1, 1, 1], [], [], DLLayerTarget)
create_dl_layer_input ('weights', [1, 1, 1], [], [], DLLayerWeights)
create_dl_layer_loss_cross_entropy (DLLayerSoftMax, DLLayerTarget, DLLayerWeights, 'loss_cross_entropy', 1, [], [], DLLayerLossCrossEntropy)
* 
*通过传递输出层列表来创建模型。
* 创建的模型包含直接或间接输入到这些输出层的所有层。
create_dl_model (DLLayerLossCrossEntropy, DLModelHandle)
* 默认情况下,新创建的模型完全可用,并且是 HALCON 特定的“通用”类型,
* 这意味着它没有被标记为用于哪种类型的应用程序。
* 然而,HALCON 中的许多深度学习程序依赖于特定于应用程序的类型。
* 如果你想要使用这些程序,请设置模型类型,对于这个模型,模型类型是“分类”。
* 请参考 create_dl_model 的操作符参考,了解设置模型类型如何改变底层网络的更多细节。
set_dl_model_param (DLModelHandle, 'type', 'classification')
* 按运行(F5)继续。
stop ()
* 
*第二部分:设置模型参数并通过其摘要检查模型。
set_dl_model_param (DLModelHandle, 'image_width', InputWidth)
set_dl_model_param (DLModelHandle, 'image_height', InputHeight)
get_dl_model_param (DLModelHandle, 'summary', NetworkSummary)
dev_inspect_ctrl (NetworkSummary)
* 
*第三部分:检索和修改层参数。
*按运行(F5)继续。
stop ()
dev_close_inspect_ctrl (NetworkSummary)
* 
* 可以从模型中检索层的信息,也可以直接从层句柄中检索。
get_dl_model_layer_param (DLModelHandle, 'convolution2', 'activation_mode', ActivationModeConvolution2)
get_dl_layer_param (DLLayerConvolution2, 'input_layer', InputLayerConvolution2)
* 
set_dl_model_layer_param (DLModelHandle, 'convolution1', 'name', 'convolution1_with_relu')
set_dl_model_layer_param (DLModelHandle, 'convolution2', 'name', 'convolution2_with_relu')
* 
* 第四部分(可选):添加元数据以便后续更好地指定模型。
* 按运行 F5(运行)继续。
stop ()
MetaData := dict{}
MetaData.model_creator := 'MVTec Software GmbH'
MetaData.model_info := 'Classification model with two BatchNorm layer'
set_dl_model_param (DLModelHandle, 'meta_data', MetaData)
* 

* 将模型写入文件以便在后续步骤中使用。
* 参考我们的其他示例了解如何做到这一点,例如 dl_classification_workflow.hdev。
* 按运行 F5(运行)写入模型并完成示例。
stop ()
write_dl_model (DLModelHandle, 'dl_model_classification_small.hdl')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值