Halcon深度学习常见问题及解决方法

您所在的位置:网站首页 halcon1911破解 Halcon深度学习常见问题及解决方法

Halcon深度学习常见问题及解决方法

#Halcon深度学习常见问题及解决方法| 来源: 网络整理| 查看: 265

一、常见问题及解决办法 1、set_dl_model_param(DLModelHandle, ‘gpu’, GpuId)

GpuId=0 选中第一块显卡做深度学习训练。 GpuId=1 选中第二块显卡做深度学习训练。 类推 查询可用多显卡信息 query_available_compute_devices(DeviceIdentifier) //一块显卡输出[0],两块是[0,1],依次类推 get_compute_device_info(0,’name‘,info) //0代表第一块显卡,1代表第二块显卡 判断GPU是否可用 get_system (‘cuda_loaded’, CudaLoaded) get_system (‘cudnn_loaded’, CuDNNLoaded) get_system (‘cublas_loaded’, CuBlasLoaded) if (not (CudaLoaded == ‘true’ and CuDNNLoaded == ‘true’ and CuBlasLoaded == ‘true’)) UseGPU := false

多个深度学习库,可以同时设置多个库的深度学习的GPU,但是显卡需要足够大的内存,否则会报下面的异常。 在这里插入图片描述

如果内存不够,可以用完一个深度学习的库之后,用clear_dl_model清除掉一个,然后设置另外一个的Gpu序号。 同一个深度学习库设置多遍是不会报错的。

一台电脑可以装多张显卡,型号可以不一样。 深度学习库训练和推理不能跨gpu进行。 一个gpu可以同时支持多个深度学习库(前提是gpu硬件性能支持)。

2、 apply_dl_model (DLModelHandle, DLSampleBatch, [], DLResults) DLSampleBatch := gen_tuple_const(BatchSize,-1) set_dict_object (ImagePreprocessed, DLSample, ‘image’) DLSampleBatch[ImageIndex] := DLSample get_dict_object (SegImage, DLResults[ResultIndex], ‘segmentation_image’) get_dict_object (Confidence, DLResults[ResultIndex], ‘segmentation_confidence’) get_dict_object (ImagePreprocessed, DLSampleBatch[ResultIndex], ‘image’) 输入和输出都要用循环来实现、

3、 (halcon 18.11)要求输入的数量和BatchSize要相等,否则会报错规格不对 (halcon 19.11)没有这个要求,可以大于,也可以小于。 set_dl_model_param (DLModelHandle, ‘batch_size’, BatchSize) BatchSize这个越大(到了一定大小,速度基本不变,如果超过一定范围,就会报下面的错),处理速度越快,同时对GPU的内存要求越大。

推理的batch_size和训练的batch_size没有关联。

4、 halcon 18.11包含2个Dll(halcondotnetxl.dll,halconxl.dll) halcon 19.11包含3个Dll(halcondotnetxl.dll,halconxl.dll,halcondlxl.dll)

5、 多个线程可以同时调用同一个深度学习库进行语义分割。 清除clearHandle深度学习库句柄的时候,保证句柄没有被占用

6、 set_dl_model_param(DLHandle,‘runtime’,‘gpu’) set_dl_model_param(DLHandle,‘runtime_init’,‘immediately’) 立即生效,不需要等到才生效。

7、 彩色图像和灰度图像都可以用作深度学习,但是彩色图像效果会很好。 训练次数,主要看收敛情况。100次收敛了,就设置成100次。

8、 set_dl_model_param(DLHandle,‘runtime’,‘cpu’)设置深度学习 识别图像是 cpu, 语义分析:gpu的识别效果比cpu的识别效果要好,个人分析是CPU的推理做了一些简化计算了,分割效果差些。

9、 原图进行训练效果要比缩小的图像效果要好。

10、 支持的情况下:加载同一个深度学习库进行识别,set_dl_classifier_param(DLHandle,‘batch_sise’,1)和set_dl_classifier_param(DLHandle,‘batch_sise’,n) n>1 经测试,实际效果是一样的。

11、 read_dl_classifier和read_dl_model的深度学习库是通用的,高版本可以调用低版本训练的库。 halcon的深度学习不能支持后面出现的显卡。例如halcon19.11不能支持RTX 3090显卡,halcon20.11就可以。

12、深度学习提速方法: 、批量处理图像。、更换更好的显卡。 二、模型的特点及选用 A、 当前使用的halcon版本为19.12,可用于分类的模型有以下几种 ① pretrained_dl_classifier_alexnet.hdl ② pretrained_dl_classifier_compact.hdl ③ pretrained_dl_classifier_enhanced.hdl ④ pretrained_dl_classifier_resnet50.hdl B、 以上总共有四种模型,每一种模型对应不同的预训练网络。每一种模型都有各自的特点。根据经验第四种预训练模型的基础上训练出来的总体检测效果最佳。 C、 第二种模型为迷你型分类网络,该网络的特点是节省内存及运行效率高。网络没有全连接层。图像尺寸不能低于1515。 D、第三种模型为增强型网络模型,含有更多的隐含层。相比于迷你型网络需要更多的内存及其它资源,含有全连接层。图片大小不能小于4747。 E、 第四种模型,其网络比其它类型的预训练网络更加复杂,对于复杂类型的分类任务,其鲁棒性和稳定性要更好。图像不能小于32*32。 二、超参数及其设置 A、 超参数的分类:网络参数、优化参数、正则化参数 ① 网络参数:可指网络层与层之间的交互方式(相加、相乘或者串接等)、卷积核数量和卷积核尺寸、网络层数(也称深度)和激活函数等。 ② 优化参数:一般指学习率(learning rate)、批样本数量(batch size)、不同优化器的参数以及部分损失函数的可调参数。 ③ 正则化参数:权重衰减系数,丢弃法比率(dropout)。 B、 超参数的重要性顺序: ① 学习率及损失函数可调参数。 ② 批样本数量及动量参数的设置。 ③ Adam优化器的超参数、权重衰减系数、丢弃法比率(dropout)和网络参数。 C、 超参数详细分类

D、当前经测试得出的较优参数配置: ① 学习率为0.001 ② 批处理大小最大只能设置到18,当前显卡RTX2080。 ③ 动量参数设置为0.9 ④ NumEpochs 为100~128 三、图像大小与缩放 图像的缩放对最终模型的训练结果有较大影响,因图片最大的图片不超过400*400,因此图像缩放后有很多细节部分被丢弃,导致训练出来的模型整体稳定性较差,误报及漏报均较高。因此需要注意图像的缩放问题。 四、图像训练使用的NG图片数量与OK图片数量。 ① 图片的挑选必须按照一定的规则进行,OK图片与NG图片不能混杂,否则训练出来的模型会预测混乱。 ② OK图片与NG图片的数量根据当前的情况分析大约在5:1的情况下表现较好。(对于这个比例问题后续还需要做更多的验证)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3