yolov5模型转换使用问题

1. 我尝试转换最新的yolov5官方模型,先export成onnx再用地平线工具链转换,出现segmentation fault。我对比了1.1.17工具链中你们给出的yolov5模型,发现你们把hardswish激活函数全部替换成了leakyrelu。我也替换后重新训练模型后转换成功了。但是为什么hardswish转换会失败,因为在onnx中已经将hardswish拆解成add, clip, mul, div,而这几个运算你们都是支持的。当然从实际使用角度,我猜想可能换成leakyrelu会更快一些,因为conv+leakyrelu你们应该做了融合?

2. yolov5的训练推理都采用了letterbox的方式对图像进行预处理(保持宽高比resize,再将短边做padding)。而在你们给出的demo中,依然是直接resize。作为demo,确实可以正常运行,但如果实际使用,那就会对检测率和精度造成影响。

3. 1.1.17工具链中demo给出的yolov5模型,有optimized版本和原始版本,根据我的观察,好像只是把最后的输出形状做了调整,其他还有什么优化吗?

您好。-
1. 我们样例使用的是yolov5 v2.0模型,https://github.com/ultralytics/yolov5/releases/tag/v2.0,默认使用的是leakrelu,官方v3.0修改成了hardswish。

2. 参考我们sample的03_yolov5/mapper/data_transformer.py,默认采用的PadResizeTransformer,非直接resize的。

3. 对模型没有别的修改了,修改形状是为了后处理过程的一个加速。

没有c++的相关处理letterbox的代码?难道是直接用cpu的?BPU指定的模型输入是NV12格式的。

前后处理的代码都是有的,ddk\package\source code 里面有完整的源码,以及编译的脚本