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>、更换更好的显卡。

 

posted @   QuincyYi  阅读(7687)  评论(1编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示