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>、更換更好的顯卡。