Hi,
I have found that Pointwise convolution leads to "Fatal signal 11 (SIGSEGV), code 2 (SEGV_ACCERR)" when used without CPU. I believe that SNPE's implementation has a bug in the parallel implementation. To confirm, I used a simple DLC model with only Convolution(in_channels=1, out_channels=1, kernel_size=1) layer and input shape [1, 13, 13, 1]. SNPE ran fine on CPU, but crash if I run this model in GPU or DSP.
To add more details, I tried to use Picodet with SNPE. When exported to ONNX without an NMS layer, the model has two output layers for bounding boxes and scores. After a few modifications (replace HardSigmoid layer), the model could be converted to DLC format without errors. It run without error on CPU, GPU and DSP when use default setting i.e. bounding boxes is the only output. But the program starts to hit Fatal 11 if the outputs include scores branch and run in GPU/DSP.
I'm using SNPE 1.68 on an QCS605 running Android 10.
Dear developer,
Could you please help to share your conversion and quantization commands to us for deeply checking?
BR.
Wei
My conversion command:
For running with SNPE, I have to replace HardSigmoid layer in ONNX model with .Add.Clip.Div. This model has a PointWise convolution in scores brach.
When inference, I directly use the exported model above and depend on SNPE for automatically quantizing.