• [技术干货] 运行RTRC 4S小车的智能驾驶车道保持程序,调参界面怎么用?
    解决方案: 1. binary_value作用:控制二值化处理的阈值,二值化会把灰度图中大于该值的像素设为 0,小于等于的设为 255(因为用了THRESH_BINARY_INV),用于区分前景(车道线)和背景。调节逻辑:数值太大:会把部分浅色车道线也当成背景过滤掉,导致车道线缺失; 数值太小:背景噪声会被保留,干扰后续检测。 2.canny_low_threshold作用:控制Canny 边缘检测的低阈值(高阈值是它的 3 倍)。Canny 算法通过两个阈值筛选边缘:梯度值大于高阈值的是强边缘,介于高低阈值之间且与强边缘连通的是弱边缘,其余被丢弃。调节逻辑:数值太大:边缘会被过度过滤,车道线边缘不完整;数值太小:会保留大量噪声边缘,干扰后续直线检测。 3.hof_threshold作用:控制霍夫直线检测的 “累加阈值”。霍夫变换中,只有累加器数值(代表该直线被多少像素支持)超过此阈值的直线才会被检测出来。调节逻辑:数值太大:只有长且明显的直线会被检测,可能漏掉短车道线;数值太小:会检测出大量干扰直线(比如噪声、背景纹理)。 4. hof_min_line_len作用:控制霍夫检测出的直线的最小长度。长度小于该值的直线会被直接丢弃。调节逻辑:数值太大:会过滤掉短的车道线段(比如车道线断裂处);数值太小:会保留很多短的干扰线段。 5. hof_max_line_gap作用:控制霍夫检测中,两条直线被合并为一条的直线最大间隔阈值。若两条直线的间隔小于该值,会被视为同一条直线并合并。调节逻辑:数值太大:会把不相关的直线(比如左右车道线)错误合并;数值太小:原本连续的车道线会被拆分成多条短直线,不利于后续拟合。   
  • [官方文档样例] 有没有版本更新的日志呀,
    当前mdc610版本:1.99.102-0000000.B034过往版本:1.1.029-0000000T1
  • [技术干货] 运行RTRC蜂鸟底盘控制代码时出现报错,提示无串口访问权限。
    解决方案: step1:按下快捷键 Ctrl+Alt+T 打开新的终端窗口;step2:输入命令 ls -l /dev/ttyTHS1,回车执行,检查底盘串口 /dev/ttyTHS1 的连接状态是否正常;step3:输入命令 sudo chmod 777 /dev/ttyTHS1,回车执行(若需验证权限,可再次执行 step2 查看权限字段),授予串口最高访问权限; step4:重新运行底盘控制代码,输入命令 python3 Python_4S_chassis_control_20251104V1.py(注:实际执行时,代码文件名及版本号请以软件包内的实际文件为准)。  
  • [应用开发] 加载om模型的ACL代码设置动态维度出错
     华为MDC510pro上编写ACL代码加载om模型,设置动态维度时报错设置输入与动态维度的代码Result ModelProcess::CreateInput(std::map<std::string, void*> inputDataBuffer, std::map<std::string, size_t> bufferSize, aclmdlIODims& inputDims) { input_ = aclmdlCreateDataset(); if (input_ == nullptr) { ERROR_LOG("can't create dataset, create input failed"); return FAILED; } aclError ret = ACL_SUCCESS; size_t inputSize = aclmdlGetNumInputs(modelDesc_); for (size_t i = 0; i < inputSize; ++i) { // aclmdlGetInputIndexByName;aclmdlGetInputSizeByIndex const char* pName = aclmdlGetInputNameByIndex(modelDesc_, i); std::string inName(pName); std::cout << "[DEBUG] " << "input_ " << i << " : " << inName << " : " << bufferSize[inName] << std::endl; void* inputDeviceData = nullptr; size_t inputBufferSize = aclmdlGetInputSizeByIndex(modelDesc_, i); ret = aclrtMalloc(&inputDeviceData, inputBufferSize, ACL_MEM_MALLOC_NORMAL_ONLY); if (ret != ACL_SUCCESS) { ERROR_LOG("can't malloc buffer, size is %zu, create input failed", bufferSize[inName]); return FAILED; } if (i != inputSize - 1) { ret = aclrtMemcpy(inputDeviceData, inputBufferSize, inputDataBuffer[inName], bufferSize[inName], ACL_MEMCPY_HOST_TO_DEVICE); if (ret != ACL_SUCCESS) { ERROR_LOG("can't memcpy buffer, size is %zu, create input failed", bufferSize[inName]); return FAILED; } } aclDataBuffer* inputData = aclCreateDataBuffer(inputDeviceData, bufferSize[inName]); if (inputData == nullptr) { ERROR_LOG("can't create data buffer, create input failed"); return FAILED; } ret = aclmdlAddDatasetBuffer(input_, inputData); if (ret != SUCCESS) { ERROR_LOG( "add dataset buffer failed, i: %ld, error code: %d, input name: %s", i, ret, pName); } if (inputData == nullptr) { ERROR_LOG("can't add data buffer, create input failed"); aclDestroyDataBuffer(inputData); inputData = nullptr; return FAILED; } } // 设置动态维度 // inputDims.dims[26] += 1; std::stringstream ss; for (int i = 0; i < inputDims.dimCount; ++i) { ss << inputDims.dims[i] << " "; } INFO_LOG("set dynamic shape for input %s, count : %ld :\n%s", inputDims.name, inputDims.dimCount, ss.str().c_str()); size_t idx = -1; ret = aclmdlGetInputIndexByName(modelDesc_, ACL_DYNAMIC_TENSOR_NAME, &idx); if (ret != ACL_SUCCESS) { ERROR_LOG("get dynamic input failed: %d", ret); } ret = aclmdlSetInputDynamicDims(modelId_, input_, idx, &inputDims); if (ret != ACL_SUCCESS) { ERROR_LOG("set dynamic shape for inputs %ld failed, error code: %d", idx, ret); } // 查询动态档位信息 size_t gearCount; ret = aclmdlGetInputDynamicGearCount(modelDesc_, -1, &gearCount); if (ret != ACL_SUCCESS) { ERROR_LOG("get dynamic dim failed: %d", ret); return FAILED; } printf("模型支持的动态档位数量:%ld\n", gearCount); vector<aclmdlIODims> dimsList(gearCount); ret = aclmdlGetInputDynamicDims(modelDesc_, -1, dimsList.data(), gearCount); if (ret != ACL_SUCCESS) { ERROR_LOG("get dynamic dims failed: %d", ret); } for (size_t i = 0; i < gearCount; ++i) { aclmdlIODims dims = dimsList[i]; for (size_t j = 0; j < dims.dimCount; ++j) { printf("%ld ", dims.dims[j]); } printf("\n"); } return SUCCESS;}从下方程序运行日志可见,设置的动态维度为”742 35 3 35 35 3 742 1 742 742 35 35 35 35 30 30 10 4 300 300 4 350 300 3 300 300 3“,且模型支持此动态维度。可是为什么 aclmdlSetInputDynamicDims 时会出错?[IAM][WARN][ClientSystemFops.cpp:136] Cannot find libc.so.[INFO] src/sample_process.cpp:356 acl init success[INFO] src/sample_process.cpp:364 open device 0 success[INFO] src/sample_process.cpp:372 create context success[INFO] src/sample_process.cpp:380 create stream success[INFO] src/main.cpp:42 data_path: data.pb, encoder_model_path: encoder_tmp.om, decoder_model_path: ./decoder.om# 模型输入数据格式如下:[INFO] src/deserialize.cpp:104 r_pt2pl: 742 35 3[INFO] src/deserialize.cpp:106 r_pl2pl: 35 35 3[INFO] src/deserialize.cpp:107 x_pt: 742 1[INFO] src/deserialize.cpp:108 type_pt: 742[INFO] src/deserialize.cpp:109 side_pt: 742[INFO] src/deserialize.cpp:110 type_pl: 35[INFO] src/deserialize.cpp:111 is_intersect_pl: 35[INFO] src/deserialize.cpp:113 type_pl2pl: 35 35[INFO] src/deserialize.cpp:114 agent_type: 30[INFO] src/deserialize.cpp:116 x_a: 30 10 4[INFO] src/deserialize.cpp:118 r_t: 300 300 4[INFO] src/deserialize.cpp:120 r_pl2a: 350 300 3[INFO] src/deserialize.cpp:122 r_a2a: 300 300 3[INFO] src/deserialize.cpp:127 r_t2m: 30 6 10 4[INFO] src/deserialize.cpp:129 mask_t2m: 30 6 10[INFO] src/deserialize.cpp:131 r_pl2m: 180 35 3[INFO] src/deserialize.cpp:132 mask_pl2m: 180 35[INFO] src/deserialize.cpp:134 r_a2m: 180 30 3[INFO] src/deserialize.cpp:135 mask_a2m: 180 30[INFO] src/deserialize.cpp:137 x_t: 30 10 128[INFO] src/deserialize.cpp:138 x_pl: 35[INFO] src/deserialize.cpp:139 x_a: 30 128[INFO] src/model_process.cpp:53 load model encoder_tmp.om success[INFO] src/model_process.cpp:70 create model description success[INFO] src/model_process.cpp:243 create model output success# 输入的字节数如下[DEBUG] input_ 0 : r_pt2pl : 311640[DEBUG] input_ 1 : r_pl2pl : 14700[DEBUG] input_ 2 : x_pt : 2968[DEBUG] input_ 3 : type_pt : 5936[DEBUG] input_ 4 : side_pt : 5936[DEBUG] input_ 5 : type_pl : 280[DEBUG] input_ 6 : is_intersect_pl : 280[DEBUG] input_ 7 : type_pl2pl : 1225[DEBUG] input_ 8 : agent_type : 30[DEBUG] input_ 9 : x_a : 4800[DEBUG] input_ 10 : r_t : 1440000[DEBUG] input_ 11 : r_pl2a : 1260000[DEBUG] input_ 12 : r_a2a : 1080000[DEBUG] input_ 13 : ascend_mbatch_shape_data : 0# 设置动态维度[INFO] src/model_process.cpp:151 set dynamic shape for input ascend_mbatch_shape_data, count : 27 :742 35 3 35 35 3 742 1 742 742 35 35 35 35 30 30 10 4 300 300 4 350 300 3 300 300 3[ERROR] src/model_process.cpp:160 set dynamic shape for inputs 13 failed, error code: 145012 # 无效的动态分档输入长度。模型支持的动态档位数量:2742 35 3 35 35 3 742 1 742 742 35 35 35 35 30 30 10 4 300 300 4 350 300 3 300 300 3742 20 3 20 20 3 742 1 742 742 20 20 20 20 30 30 10 4 300 300 4 200 300 3 300 300 3[INFO] src/model_process.cpp:271 model execute success[INFO] src/sample_process.cpp:497 model output 0 size is 17920 = 4 × 128 × 35[INFO] src/sample_process.cpp:501 model output 0 data type is float[INFO] src/sample_process.cpp:497 model output 1 size is 153600 = 4 × 128 × 300[INFO] src/sample_process.cpp:501 model output 1 data type is float[INFO] src/model_process.cpp:292 unload model success, modelId is 1[INFO] src/main.cpp:61 execute sample success[INFO] src/sample_process.cpp:395 end to destroy stream[INFO] src/sample_process.cpp:404 end to destroy context[INFO] src/sample_process.cpp:410 end to reset device is 0[INFO] src/sample_process.cpp:416 end to finalize acl更多附件:链接: https://pan.baidu.com/s/1q78Dk6rKbe_W2KMiRL8OZA?pwd=kvnm 提取码: kvnm 复制这段内容后打开百度网盘手机App,操作更方便哦 
  • [工具链] 关于算子精度掉点问题
    平台:MDC610板端的模型只进行atc转换的float模型,conv是fp16进行运算的当前现象:pointpillars模型中PFN层 conv后精度掉点,reducemax后精度掉点1.现在要做那些操作可以提升conv和reducemax的精度2.对这两算子进行PTQ,发现没有明显提升,只能和掉点精度保持(通过增加模型输出节点,在conv输出增加模型节点,和onnx模型进行cos值比对)
  • [问题求助] 华为MDC510pro加载om模型 提示架构错误
    之前的帖子:华为MDC510pro加载om格式模型报错_MDC辅助驾驶计算平台_华为云论坛已修改模型代码,消除了所有的警告。部分算子的输入数据的格式为int64,插入cast算子消除了warning。但生成的模型具有 _ubuntu_x86_64 后缀,在MDC510pro上加载会报架构不匹配的错误,无法加载。使用参数指定arm架构后,转换过程会报错,提示缺少so文件。我和同事多次尝试重新安装环境依旧如此。默认可以成功生成x86架构的om模型root@fb38d748af76:/data/EQCNet# atc --log=debug --model=./batch_map_encoder-cast.onnx --framework=5 --output=./batch_map_encoder_static --soc_version=Ascend310M1 --input_shape="input_data_map_polygon_position:86,3;input_data_map_polygon_orientation:86;input_data_map_polygon_type:86;input_data_map_polygon_is_intersection:86;input_data_map_point_position:1669,3;input_data_map_point_orientation:1669;input_data_map_point_magnitude:1669;input_data_map_point_type:1669;input_data_map_point_side:1669;input_data_map_point_to_map_polygon_edge_index:2,1669;input_data_map_polygon_to_map_polygon_edge_index:2,208;input_data_map_polygon_to_map_polygon_type:208"ATC start working now, please wait for a moment....ATC run success, welcome to the next use.root@fb38d748af76:/data/EQCNet# ls *.om -Ahtl-rwxrwxrwx 1 root root  54M Dec  8 17:35 batch_map_encoder_static_ubuntu_x86_64.om-rwxrwxrwx 1 root root 6.0M Dec  5 15:40 batch_map_encoder_old_dyn.om-rwxrwxrwx 1 root root 3.7M Dec  5 14:10 batch_map_encoder_static.om-rwxrwxrwx 1 root root 6.1M Dec  2 16:07 batch_map_encoder-cast.om-rwxrwxrwx 1 root root 6.0M Dec  2 14:55 batch_map_encoder.om 指定 aarch64 架构,提示缺少so文件root@fb38d748af76:/data/EQCNet# atc --log=debug --model=./batch_map_encoder-cast.onnx --framework=5 --output=./batch_map_encoder_static --soc_version=Ascend310M1 --input_shape="input_data_map_polygon_position:86,3;input_data_map_polygon_orientation:86;input_data_map_polygon_type:86;input_data_map_polygon_is_intersection:86;input_data_map_point_position:1669,3;input_data_map_point_orientation:1669;input_data_map_point_magnitude:1669;input_data_map_point_type:1669;input_data_map_point_side:1669;input_data_map_point_to_map_polygon_edge_index:2,1669;input_data_map_polygon_to_map_polygon_edge_index:2,208;input_data_map_polygon_to_map_polygon_type:208"  --host_env_cpu=aarch64ATC start working now, please wait for a moment....ATC run failed, Please check the detail log, Try 'atc --help' for more informationE19999: Inner Error!E19999  Load and store op proto so failed, path:/usr/local/Ascend/ascend-toolkit/mdc/opp/built-in/op_proto/lib/ubuntu/aarch64[FUNC:GetSoBinData][FILE:model_helper.cc][LINE:375]        TraceBack (most recent call last):        Assert ((GetSoBinData(host_env_cpu, host_env_os)) == ge::SUCCESS) failed[FUNC:SaveSoStoreModelPartitionInfo][FILE:model_helper.cc][LINE:427]        [SaveSoStoreModelPartitionInfo]Failed[FUNC:SaveToOmRootModel][FILE:model_helper.cc][LINE:615]        SaveToOmRootModel failed, ret:1343225857, model id:4294967295, om_format:0[FUNC:SaveRootModel][FILE:ge_generator.cc][LINE:1463]root@fb38d748af76:/data/EQCNet# 在华为MDC510pro上加载 x86 格式的模型,报错[mdc@AOS_A zhh]$ ./load_model batch_map_encoder_static_ubuntu_x86_64.om[IAM][WARN][ClientSystemFops.cpp:136] Cannot find libc.so.[INFO] Acl Init Success[INFO] Acl Set Device Success,Current DeviceID:0[INFO] Acl Create Context Success[INFO] Acl Create Stream Success file: load_model.cpp line: 85[ERROR] id: 500002 error_msg: E19999: Inner Error!E19999  The os/cpu type of the model does not match the current system,Model is[ubuntu][x86_64], system is[linux][aarch64], please use the matching platform[FUNC:CheckOsCpuInfoAndOppVersion][FILE:model_helper.cc][LINE:899]        TraceBack (most recent call last):        [Model][FromData]load model from data failed, ge result[4294967295][FUNC:ReportCallError][FILE:log_inner.cpp][LINE:161][mdc@AOS_A zhh]$ x86目录下存在对应so文件,但arm架构目录下缺少so文件root@fb38d748af76:/usr/local/Ascend/ascend-toolkit/mdc# ls /usr/local/Ascend/ascend-toolkit/mdc/opp/built-in/op_proto/lib -Rl/usr/local/Ascend/ascend-toolkit/mdc/opp/built-in/op_proto/lib:total 4dr-xr-xr-x 4 root root 4096 Sep 29 17:32 ubuntu/usr/local/Ascend/ascend-toolkit/mdc/opp/built-in/op_proto/lib/ubuntu:total 8dr-xr-xr-x 2 root root 4096 Sep 29 17:32 aarch64dr-xr-xr-x 2 root root 4096 Sep 29 17:32 x86_64/usr/local/Ascend/ascend-toolkit/mdc/opp/built-in/op_proto/lib/ubuntu/aarch64:total 0/usr/local/Ascend/ascend-toolkit/mdc/opp/built-in/op_proto/lib/ubuntu/x86_64:total 54968-r-xr-xr-x 1 root root 24452760 Sep 29 17:32 libopsproto_rt2.0.so-r-xr-xr-x 1 root root 31832920 Sep 29 17:32 libopsproto.soroot@fb38d748af76:/usr/local/Ascend/ascend-toolkit/mdc#
  • [热门活动] 【MDC论坛开发者活动】这是一条开发者声音倾听贴,留下您宝贵的问题与建议,给我们一次面对面交流的机会!!!
    亲爱的开发者,您好不知不觉,MDC论坛已陪伴各位开发者走过了5个年头在这5年里,我们持续运营论坛,不仅帮助开发者解决问题求助更发布了行业动态、技术博客和FAQ在内的上百条帖子帮助开发者快速上手那么作为开发者的你对论坛的使用体验如何,又有什么诉求呢现诚邀您填写问卷,参与调研您的使用体验和建议是我们运营的强大动力~戳下方问卷填写(耗时大约1-3分钟)cid:link_0活动时间:2025.12.9-2025.12.31
  • [其他问题] 华为mdc610Sample示例
    本机的mdc610版本为MDC 610 1.1.027-T000 产品文档 01.chm请问一下下载的Sample中没有分割的Sample,请问一下您这边是否有如MobileSam等语义分割的代码Sample
  • [软件平台] 华为MDC510pro加载om格式模型报错
    onnx模型成功转为om格式:atc --log=debug --model=./batch_map_encoder.onnx --framework=5 --output=./batch_map_encoder_dyn --soc_version=Ascend310M1 --input_shape="input_data_map_polygon_position:-1,3;input_data_map_polygon_orientation:-1;input_data_map_polygon_type:-1;input_data_map_polygon_is_intersection:-1;input_data_map_point_position:1669,3;input_data_map_point_orientation:1669;input_data_map_point_magnitude:1669;input_data_map_point_type:1669;input_data_map_point_side:1669;input_data_map_point_to_map_polygon_edge_index:2,1669;input_data_map_polygon_to_map_polygon_edge_index:2,208;input_data_map_polygon_to_map_polygon_type:208" --input_format=ND  --dynamic_dims="86,86,86,86;90,90,90,90;"在华为MDC510pro上加载报错:[mdc@AOS_A zhh]$ ./load_model batch_map_encoder_dyn.om [IAM][WARN][ClientSystemFops.cpp:136] Cannot find libc.so. [INFO] Acl Init Success [INFO] Acl Set Device Success,Current DeviceID:0 [INFO] Acl Create Context Success [INFO] Acl Create Stream Success file: load_model.cpp line: 85[ERROR] id: 500002 error_msg: EE1001: The argument is invalid.Reason: rtKernelLaunchFwk execute failed, reason=[feature not support] Solution: 1.Check the input parameter range of the function. 2.Check the function invocation relationship. TraceBack (most recent call last): not support aicpu task![FUNC:AiCpuTaskSupportCheck][FILE:api_impl.cc][LINE:5742] The argument is invalid.Reason: rtKernelLaunchFwk execute failed, reason=[feature not support] Call rtKernelLaunchEx(device_base, op_kernel_size, 0U, stream) fail, ret: 0x32898[FUNC:KernelLaunchEx][FILE:model_manager.cc][LINE:167] Failed to init task index 216, related node /pt2pl_layers.0/Mod_ascend_mbatch_batch_0[FUNC:InitTaskInfoV2][FILE:model_args_manager.cc][LINE:215] [Model][FromData]load model from data failed, ge result[1343225857][FUNC:ReportCallError][FILE:log_inner.cpp][LINE:161] [mdc@AOS_A zhh]$加载模型的 load_model 能够成功加载文档中给出的resnet示例模型,加载om模型的源码:#include <algorithm> #include <iostream> #include <vector> #include "acl/acl.h" #define INFO_LOG(fmt, args...) fprintf(stdout, "[INFO] " fmt "\n", ##args) #define WARN_LOG(fmt, args...) fprintf(stdout, "[WARN] " fmt "\n", ##args) #define ERROR_LOG(fmt, args...) fprintf(stdout, "[ERROR] " fmt "\n", ##args) #define CHECK_ERROR(ret) \ if (ret != ACL_ERROR_NONE) { \ std::cout << " file: " << __FILE__ << " line: " << __LINE__ \ << "[ERROR] id: " << ret \ << " error_msg: " << aclGetRecentErrMsg() << std::endl; \ return 1; \ } using namespace std; int main(int argc, char* argv[]) { uint32_t deviceId = 0; aclrtContext context = nullptr; aclrtStream stream = nullptr; const char* aclConfigPath = nullptr; aclError ret = aclInit(aclConfigPath); if (ret != ACL_ERROR_NONE) { ERROR_LOG("Acl Init Failed"); return 1; } INFO_LOG("Acl Init Success"); ret = aclrtSetDevice(deviceId); if (ret != ACL_ERROR_NONE) { ERROR_LOG("Acl Set Device Failed"); return 1; } INFO_LOG("Acl Set Device Success,Current DeviceID:%d", deviceId); ret = aclrtCreateContext(&context, deviceId); if (ret != ACL_ERROR_NONE) { fprintf(stderr, "%d", ret); ERROR_LOG("Acl Create Context Failed"); return 1; } INFO_LOG("Acl Create Context Success"); ret = aclrtCreateStream(&stream); if (ret != ACL_ERROR_NONE) { ERROR_LOG("Acl Create Stream Failed"); return 1; } INFO_LOG("Acl Create Stream Success"); /* * 业务执行 */ char omModelPath[100]; if (argc != 2) { std::cout << "input model's name in command!!!" << std::endl; } strcpy(omModelPath, argv[1]); size_t modelMemSize_; size_t modelWeightSize_; void* modelMemPtr_; void* modelWeightPtr_; uint32_t modelId_; ret = aclmdlLoadFromFile(omModelPath, &modelId_); CHECK_ERROR(ret); aclmdlDesc* modelDesc_ = aclmdlCreateDesc(); ret = aclmdlGetDesc(modelDesc_, modelId_); CHECK_ERROR(ret); size_t inputNum = aclmdlGetNumInputs(modelDesc_); aclmdlDataset* datasetInput_ = aclmdlCreateDataset(); std::vector<void*> inputBuffers(inputNum); std::vector<size_t> inputSizes(inputNum); for (int i = 0; i < inputNum; i++) { aclmdlIODims dims; aclmdlGetInputDims(modelDesc_, i, &dims); aclDataType dataType = aclmdlGetInputDataType(modelDesc_, i); inputSizes[i] = aclmdlGetInputSizeByIndex(modelDesc_, i); printf("Input %d: dims=[", i); for (size_t j = 0; j < dims.dimCount; ++j) { printf("%ld ", dims.dims[j]); } printf("], dtype=%d, size=%zu\n", dataType, inputSizes[i]); ret = aclrtMalloc(&inputBuffers[i], inputSizes[i], ACL_MEM_MALLOC_NORMAL_ONLY); aclDataBuffer* inputData = aclCreateDataBuffer(inputBuffers[i], inputSizes[i]); CHECK_ERROR(ret); ret = aclmdlAddDatasetBuffer(datasetInput_, inputData); CHECK_ERROR(ret); } size_t numOutputs = aclmdlGetNumOutputs(modelDesc_); aclmdlDataset* datasetOutput_ = aclmdlCreateDataset(); size_t modelOutputSize; void* modelOutputBuffer = nullptr; for (int i = 0; i < numOutputs; i++) { modelOutputSize = aclmdlGetOutputSizeByIndex(modelDesc_, i); ret = aclrtMalloc(&modelOutputBuffer, modelOutputSize, ACL_MEM_MALLOC_NORMAL_ONLY); CHECK_ERROR(ret); aclDataBuffer* outputData = aclCreateDataBuffer(modelOutputBuffer, modelOutputSize); ret = aclmdlAddDatasetBuffer(datasetOutput_, outputData); CHECK_ERROR(ret); } // ========================================================== ret = aclrtDestroyStream(stream); if (ret != ACL_ERROR_NONE) { ERROR_LOG("Acl Destroy Stream Failed"); return 1; } INFO_LOG("Acl Destroy Stream Success"); ret = aclrtDestroyContext(context); if (ret != ACL_ERROR_NONE) { ERROR_LOG("Acl Destroy Context Failed"); return 1; } INFO_LOG("Acl Destroy Context success"); ret = aclrtResetDevice(deviceId); if (ret != ACL_ERROR_NONE) { ERROR_LOG("Acl Reset Device Failed"); return 1; } INFO_LOG("Acl Reset Device Success"); ret = aclFinalize(); if (ret != ACL_ERROR_NONE) { ERROR_LOG("Acl Finalize Failed"); return 1; } INFO_LOG("Acl Finalize Success"); return 0; }
  • [工具链] MDC 610 调用aclInit () 获取算子的dump文件 ,板端运行报错507017
    问题描述:使用aclInit () 调用,板端运行报错507017,可以确定的是要dump的算子scatternd不是cpu算子;看log aicpu运行有问题 使用pmupload 获取log如下:代码调用:acl.json:工具链版本:
  • [工具链] MDC610 某些case onnx和om对不齐;
    工具链版本:现状描述:onnx模型进行aoe后,om模型对于小目标的低矮障碍物;有高度上的map值掉点,其他目标没有精度掉点;但是一些case对不齐,高分框车等目标完全没有检出提问:1. MDC610当前得到板端om模型dump文件的接口是支持的么?2. 关于异常case的对齐问题,要怎么去解决呢?可视化现状:
  • [软件平台] MDC510 转换格式时维度错误 & 如何升级 CANN 版本
    当前设备为MDC510pro,对应CANN为 7.10.t0.0.b370,soc version为 Ascend310M1。使用atc工具将onnx转om时会报各种关于Tensor维度的错误。转换格式时指定固定维度或者动态维度都会出现不同的维度错误。例如:[INFO] RUNTIME(41,atc.bin):2025-10-27-17:47:56.232.275 [stream.cc:195] 41 DeAllocStreamSqCq: [SqCqManage]end to release sq, sq is also reuse, sq_id=0, cq_id=0, stream_id=66, is_sq_need_release=0, drv_flag=0x1.[DEBUG] RUNTIME(41,atc.bin):2025-10-27-17:47:56.232.276 [stream.cc:449] 41 DelStreamIdToStream: streamId=66.[DEBUG] RUNTIME(41,atc.bin):2025-10-27-17:47:56.232.288 [callback.cc:38] 41 Notify: stub device is no need callback.[INFO] RUNTIME(41,atc.bin):2025-10-27-17:47:56.232.291 [stream.cc:618] 41 FreeStreamId: free stream_id=64,[DEBUG] RUNTIME(41,atc.bin):2025-10-27-17:47:56.232.293 [stream.cc:157] 41 DeAllocStreamSqCq: streamIdToSqIdMap remove:stream_id=64, sq_id=0, cq_id=0.[INFO] RUNTIME(41,atc.bin):2025-10-27-17:47:56.232.294 [stream.cc:192] 41 DeAllocStreamSqCq: [SqCqManage]success to release sq, sq_id=0, cq_id=0, stream_id=64, is_sq_need_release=1, drvFlag=0.[DEBUG] RUNTIME(41,atc.bin):2025-10-27-17:47:56.232.296 [stream.cc:449] 41 DelStreamIdToStream: streamId=64.[INFO] RUNTIME(41,atc.bin):2025-10-27-17:47:56.232.303 [device.cc:94] 41 ~Device: deconstruct device[ERROR] GE(41,atc.bin):2025-10-27-17:47:56.232.307 [graph_manager.cc:1227]41 StartForRunGraph: ErrorNo: 1343242270(Prepare Graph infershape failed) [COMP][PRE_OPT][Call][PreRun] Failed, graph_id:0, session_id:0.[ERROR] GE(41,atc.bin):2025-10-27-17:47:56.232.309 [graph_manager.cc:1668]41 BuildGraph: ErrorNo: 1343242270(Prepare Graph infershape failed) [COMP][PRE_OPT][Call][StartForRunGraph] failed! graph_id:0.[INFO] GE(41,atc.bin):2025-10-27-17:47:56.232.316 [error_manager.cc:254]41 ReportInterErrMessage:report error_message, error_code:E19999, work_stream_id:4100041[ERROR] GE(41,atc.bin):2025-10-27-17:47:56.232.333 [ge_generator.cc:1506]41 BuildModel: ErrorNo: 1343266819(Graph manager build graph failed.) [COMP][DEFAULT][Build][Graph] fail, graph id: 0[INFO] GE(41,atc.bin):2025-10-27-17:47:56.232.342 [graph_var_manager.cc:757]41 Destory:VarManager::Destory, session id = 0.[ERROR] GE(41,atc.bin):2025-10-27-17:47:56.232.493 [ge_generator.cc:677]41 GenerateModel: ErrorNo: 1343242270(Prepare Graph infershape failed) [COMP][DEFAULT][Build][Model] failed, ret:1343242270.[WARNING] GE(41,atc.bin):2025-10-27-17:47:56.232.616 [analyzer.cc:143]41 DestroyGraphJsonObject:can not find the stored object by session_id[0].Do nothing[ERROR] GE(41,atc.bin):2025-10-27-17:47:56.232.773 [main_impl.cc:1238]41 GenerateModel: ErrorNo: 4294967295(failed) [COMP][DEFAULT]GE GenerateOfflineModel execute failed[ERROR] GE(41,atc.bin):2025-10-27-17:47:56.232.779 [main_impl.cc:1239]41 GenerateModel: ErrorNo: 4294967295(failed) [COMP][DEFAULT]ATC Generate execute failed[WARNING] GE(41,atc.bin):2025-10-27-17:47:56.232.782 [graph_manager.cc:439]41 Finalize:GraphManager has not been initialized.[INFO] GE(41,atc.bin):2025-10-27-17:47:56.232.785 [gelib.cc:473]41 Finalize:finalization start[INFO] GE(41,atc.bin):2025-10-27-17:47:56.232.787 [gelib.cc:484]41 Finalize:engineManager finalization.[INFO] GE(41,atc.bin):2025-10-27-17:47:56.232.789 [dnnengine_manager.cc:180]41 Finalize:DNNEngine name: AIcoreEngine.[INFO] GE(41,atc.bin):2025-10-27-17:47:56.232.790 [dnnengine_manager.cc:180]41 Finalize:DNNEngine name: DNN_HCCL.[INFO] GE(41,atc.bin):2025-10-27-17:47:56.232.792 [dnnengine_manager.cc:180]41 Finalize:DNNEngine name: DNN_VM_AICPU.[INFO] GE(41,atc.bin):2025-10-27-17:47:56.232.793 [dnnengine_manager.cc:180]41 Finalize:DNNEngine name: DNN_VM_AICPU_ASCEND.和[INFO] GE(41,atc.bin):2025-10-27-17:47:56.936.942 [process_node_engine_manager.cc:87]41 Finalize:ProcessNodeEngine id:UDF.[DEBUG] GE(41,atc.bin):2025-10-27-17:47:56.937.254 [node_compile_cache_module.cc:443]41 Finalize:Finalize ccm.[INFO] GE(41,atc.bin):2025-10-27-17:47:56.937.267 [gelib.cc:548]41 Finalize:finalization success.[WARNING] GE(41,atc.bin):2025-10-27-17:47:56.937.433 [graph_manager.cc:439]41 Finalize:GraphManager has not been initialized....[WARNING] GE(41,atc.bin):2025-10-27-17:47:56.945.576 [main_impl.cc:1566]41 CheckRet:ATC generate offline model failed.ATC run failed, Please check the detail log, Try 'atc --help' for more information[INFO] GE(41,atc.bin):2025-10-27-17:47:56.945.586 [error_manager.cc:376]41 GetErrorMessage:current work_stream_id:4100041E89999: Inner Error!E89999  op[/Concat_19], the input shape dims should be equal except merge axis,shapes:[[0, 1, ], [1, 1, ], ]axis:-1[FUNC:ConcatInferShapeCommon][FILE:split_combination_ops.cc][LINE:892]        TraceBack (most recent call last):        Call InferShapeAndType for node:/Concat_19(ConcatD) failed[FUNC:Infer][FILE:infershape_pass.cc][LINE:119]        process pass InferShapePass on node:/Concat_19 failed, ret:4294967295[FUNC:RunPassesOnNode][FILE:base_pass.cc][LINE:571]        build graph failed, graph id:0, ret:1343242270[FUNC:BuildModel][FILE:ge_generator.cc][LINE:1505][INFO] GE(41,atc.bin):2025-10-27-17:47:56.946.172 [main_impl.cc:1637]41 GetMemInfo:Find mem [MemAvailable] info line [MemAvailable:   12196748 kB][INFO] GE(41,atc.bin):2025-10-27-17:47:56.946.186 [main_impl.cc:1645]41 GetMemInfo:Find mem [MemAvailable] info [12196748 kB]. 但原有的python代码运行正常且不存在维度错误。使用 onnx-runtime 加载 onnx 模型也可以正常运行。尝试通过升级CANN软件版本解决问题。从官网下载社区版 CANN8.1,其不支持当前 soc_version。当指定 soc_version 参数为 Ascend310P3或Ascend610 时,可以成功将当前onnx转为om格式。现有疑问:MDC510pro 的 atc 工具在格式转换时的维度错误该如何解决?能否通过升级软件版本解决问题?如何获取支持当前 soc_version(Ascend310M1) 的 CANN toolkit?
  • [应用开发] MDC610是否支持uniAD等端到端算法的部署?
    1、目前手上的MDC610板载版本是1.99.220,是否有部署过uniAD等端到端模型的案例?有相关链接参考吗?2、部署测试的range范围是多大的,整体耗时怎么样?
  • [硬件整机] [mdc510] mdc300F程序迁移到mdc510,软件需要做的适配有哪些?
    想请问下把mdc300F上的程序迁移到mdc510上,软件上需要做哪些适配,除了重新适配arxml文件,重新交叉编译程序用到的三方库以及自身程序,还有其他需要适配的嘛?激光雷达传感器和组合定位需要重新适配嘛?
  • [软件平台] 【MDC610】MDC610 如果想要使用 sshfs 工具是不是只能通过交叉编译的方式部署?
    环境:mdc610(风冷)系统版本:1.1.027-0000000T1问题: 我们现在想使用 sshfs 去挂载目录,不使用NFS,想问下是否只能通过交叉编译的方式部署,想问下有MDC610 专用的SSHFS 包可以直接安装嘛?