Toybrick

Retinanet模型转换时segmentation fault

nickliu973

新手上路

积分
27
发表于 2023-3-17 13:50:56    查看: 1172|回复: 3 | [复制链接]    打印 | 显示全部楼层
本帖最后由 nickliu973 于 2023-3-17 23:55 编辑

我们在做retinanet模型时遇到了segmentation fault,
模型的backbone是resent18, framework是pytrorch,先是通过下面的代码倒出pt文件。
  1. net_path = 'kitti_retinanet_78.pt'
  2. retinanet = torch.load(net_path, map_location=torch.device('cpu'))
  3. data = torch.rand(1, 3, 320, 1056)
  4. retinanet.eval()
  5. traced_script_module = torch.jit.trace(retinanet, example)
  6. torch.jit.save(traced_script_module, 'rknn_retinanet.pt')
  7. print(traced_script_module)
复制代码
接着通过如下的代码转换模型,
  1. import numpy as np
  2. import cv2
  3. from rknn.api import RKNN
  4. import torchvision.models as models
  5. import torch
  6. import os

  7. model = './rknn_retinanet.pt'
  8. input_size_list = [[1, 3, 320, 1056]]

  9. # Create RKNN object
  10. rknn = RKNN(verbose=True)

  11. # Pre-process config
  12. print('--> Config model')
  13. rknn.config(mean_values=[0, 0, 0], std_values=[58.395, 58.395, 58.395])
  14. print('done')

  15. # Load model
  16. print('--> Loading model')
  17. ret = rknn.load_pytorch(model=model, input_size_list=input_size_list)
  18. if ret != 0:
  19.         print('Load model failed!')
  20.         exit(ret)
  21. print('done')

  22.     # Build model
  23.     print('--> Building model')
  24.     ret = rknn.build(do_quantization=False, dataset='./dataset.txt')
复制代码
在执行rknn.build这个函数的时候报了segmetation fault的错误:
  1. W __init__: rknn-toolkit2 version: 1.4.0-22dcfef4
  2. --> Config model
  3. W config: 'target_platform' is None, use rk3566 as default, Please set according to the actual platform!
  4. done
  5. --> Loading model
  6. PtParse: ███████████████████████████████████████████████▌  | 1214/1277 PtParse: 100%|█████████████████████████████████████████████████| 1277/1277 [00:09<00:00, 133.85it/s]
  7. done
  8. --> Building model
  9. I base_optimize ...
  10. Segmentation fault (core dumped)
复制代码
想请教一下会不会是模型太大了导致了这种错误?
以及应该如何debug?
谢谢!
回复

使用道具 举报

jefferyzhang

版主

积分
12768
发表于 2023-3-17 17:18:48 | 显示全部楼层
debug的话可以自己用gdb跟下看下堆栈,这样发给npu部门查看的时候会更快定位问题。
然后你可以先把这个pt文件传百度网盘发给我一下,我好发给npu部门看下
回复

使用道具 举报

nickliu973

新手上路

积分
27
 楼主| 发表于 2023-3-17 23:40:16 | 显示全部楼层
本帖最后由 nickliu973 于 2023-4-7 16:12 编辑
jefferyzhang 发表于 2023-3-17 17:18
debug的话可以自己用gdb跟下看下堆栈,这样发给npu部门查看的时候会更快定位问题。
然后你可以先把这个pt文 ...

Thanks, Jeffery!
Sorry I don't have baidu wangpan and Mandarin input in this desktop.
I upload the pt file and python model

Meanwhile, would you mind giving some examples on using gdb to debug stack of rknn.debug?
I really appreciate your help!

Bests.
回复

使用道具 举报

jefferyzhang

版主

积分
12768
发表于 2023-3-21 10:18:24 | 显示全部楼层
1. 我运行你的代码遇到问题 ModuleNotFoundError: No module named 'retinanet.profile'.
2. GDB可以跟踪python3,然后r 你的转换脚本,段错误时候可以用bt看下堆栈
3. 我已经跟NPU部门上报了这个问题,但是他们还没回复我
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表