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

一、常见问题及解决办法
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、深度学习提速方法:
<1>、批量处理图像。<2>、更换更好的显卡。
二、模型的特点及选用
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、第三种模型为增强型网络模型,含有更多的隐含层。相比于迷你型网络需要更多的内存及其它资源,含有全连接层。图片大小不能小于47
47。
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的情况下表现较好。(对于这个比例问题后续还需要做更多的验证)

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,halcon 是一款由德国公司 MVTec 开发的图像处理软件。它的深度学习功能可以帮助用户使用深度学习技术来分析图像和视频,从而实现自动化视觉检测、分类和识别等功能。深度学习是一种机器学习方法,可以通过对大量数据进行学习来模拟人类的学习过程,从而实现自动特征提取和分类。在 halcon 中,用户可以使用深度学习解决各种视觉检测和识别问题,如料件分类、目标检测、图像分割等。 ### 回答2: Halcon 深度学习是一种强大的视觉算法技术,主要应用于图像和视觉识别中。Halcon是一种广泛使用的机器视觉开发工具,它提供了多种深度学习工具和功能,使得用户可以轻松地在视觉应用中应用深度学习技术。 Halcon深度学习具备以下特点和优势。首先,它支持常用的深度学习框架,如TensorFlow和Caffe,用户可以通过集成这些框架来训练自己的深度学习模型。其次,Halcon具备强大的深度学习算法库,包括卷积神经网络(CNN)、循环神经网络(RNN)等,可以处理各种机器视觉任务。此外,Halcon还提供了用于数据预处理、模型训练、模型评估等功能,使得深度学习的建模和应用变得更加便捷。 Halcon深度学习广泛应用于图像分类、目标检测、目标识别等领域。例如,在生产线上,可以使用Halcon深度学习技术来检测产品的瑕疵或缺陷,并进行自动分类和分拣。在安防领域,Halcon深度学习可以用于人脸识别和行为分析,用于提高安全监控系统的准确性和效率。同时,Halcon深度学习还可应用于医学图像处理、智能交通系统等多个领域。 总的来说,Halcon深度学习是一种高效、灵活的机器视觉工具,为用户提供了丰富的深度学习功能和应用场景。它在加速视觉任务处理、提高精度和实时性方面具有巨大优势,有助于推动机器视觉技术的发展和应用。 ### 回答3: Halcon深度学习是一种基于Halcon软件平台开发的深度学习技术,用于图像处理和机器视觉领域。深度学习是一种模仿人类神经系统的机器学习技术,通过多层网络学习数据特征,从而实现图像识别、目标检测和语义分割等任务。 Halcon深度学习提供了丰富的工具和函数,方便用户在图像处理和机器视觉的应用中使用深度学习技术。其主要功能包括模型训练、模型部署和模型优化等。用户可以通过Halcon提供的图形化界面进行模型训练,也可以自定义网络结构和训练参数以满足特定的应用需求。训练完成后,用户可以将训练好的模型部署到Halcon的图像处理任务中,实现对图像的识别和分析。 Halcon深度学习还提供了模型优化的功能,即通过精简和压缩模型来提高运行速度和减少资源占用。这对于一些嵌入式设备和实时应用非常重要。用户可以通过Halcon提供的优化工具实现模型的优化,并在保持精度的同时提升运行效率。 总而言之,Halcon深度学习是一种强大的图像处理和机器视觉技术,它结合了Halcon软件平台的功能和深度学习的优势,为用户提供了方便易用的工具和函数,帮助用户实现图像识别、目标检测等任务,提升图像处理和机器视觉应用的准确性和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值