Toybrick

标题: Retinanet模型转换时segmentation fault [打印本页]

作者: nickliu973    时间: 2023-3-17 13:50
标题: Retinanet模型转换时segmentation fault
本帖最后由 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    时间: 2023-3-17 17:18
debug的话可以自己用gdb跟下看下堆栈,这样发给npu部门查看的时候会更快定位问题。
然后你可以先把这个pt文件传百度网盘发给我一下,我好发给npu部门看下
作者: nickliu973    时间: 2023-3-17 23:40
本帖最后由 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    时间: 2023-3-21 10:18
1. 我运行你的代码遇到问题 ModuleNotFoundError: No module named 'retinanet.profile'.
2. GDB可以跟踪python3,然后r 你的转换脚本,段错误时候可以用bt看下堆栈
3. 我已经跟NPU部门上报了这个问题,但是他们还没回复我





欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3