You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HDevelop 22.11运行深度学习异常检测示例时程序异常终止求助

HALCON 22.11深度学习异常检测脚本报错排查方案

问题现象

在HDevelop 22.11 Progress中运行深度学习异常检测模板脚本时,反复触发两类致命错误:

  • Abnormal program termination: Received signal 11(段错误,通常指向非法内存访问)
  • Abnormal program termination: Received signal 4(非法指令或浮点运算异常)

初步怀疑是CUDA版本兼容问题:HALCON 22.11官方标注支持CUDA 11及以上,但当前环境使用的是CUDA 12。

排查与解决步骤

1. 验证CUDA版本兼容性

HALCON 22.11对CUDA 12的适配存在局限性,优先尝试:

  • 降级CUDA到11.7/11.8版本(HALCON官方测试过的稳定兼容版本)
  • 确保显卡驱动版本与CUDA版本匹配(例如CUDA 11.8对应驱动版本≥520.61.05)

2. 切换CPU运行排除GPU问题

修改脚本中设备配置部分,强制用CPU运行,确认是否为GPU/CUDA层问题:

* 替换原GPU设备查询代码,强制指定CPU
set_dl_model_param (DLModelHandle, 'device', 'cpu')

若CPU运行正常,可确认问题出在GPU相关环节。

3. 检查脚本中的数据与内存问题

  • 图像尺寸匹配:确认ImageWidth和ImageHeight符合initial_dl_anomaly_large.hdl的输入要求,避免设置过小或非标准尺寸
  • 预处理域裁剪校验:脚本中rectangle1_domain的参数顺序为Row1, Column1, Row2, Column2,需确保裁剪范围不超出图像实际尺寸,避免生成非法图像域:
    get_image_size(SampleImage, ImgWidth, ImgHeight)
    rectangle1_domain (SampleImage, SampleImageReduced, 0, 0, min(ImgHeight-1, ImageHeight), min(ImgWidth-1, ImageWidth))
    
  • 数据集完整性:检查ImageDir下的图像是否存在损坏、格式不兼容情况,确保所有图像均可通过read_image正常读取

4. 降低训练负载避免崩溃

若崩溃发生在训练阶段,尝试调整参数降低模型负载:

  • 降低Complexity值(例如从75调整至50)
  • 减小DomainRatio(例如从0.9调整至0.7)
  • 减少MaxNumEpochs(例如从75调整至50)
  • 关闭训练进度显示(EnableDisplay := false)

5. 启用HALCON调试日志定位问题

开启调试日志获取更详细的错误上下文:

set_system('debug', 'true')
set_system('debug_file', 'halcon_debug.log')

运行脚本后查看生成的halcon_debug.log,定位崩溃触发的具体函数或环节。

关键代码调整示例

强制CPU运行的完整修改片段

read_dl_model ('initial_dl_anomaly_large.hdl', DLModelHandle)
set_dl_model_param (DLModelHandle, 'image_width', ImageWidth)
set_dl_model_param (DLModelHandle, 'image_height', ImageHeight)
set_dl_model_param (DLModelHandle, 'complexity', Complexity)
* 替换原GPU查询逻辑,强制使用CPU
set_dl_model_param (DLModelHandle, 'device', 'cpu')

内容的提问来源于stack exchange,提问作者Lars Kakavandi-Nielsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:21:48