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