创客100
当前位置: 主页 > 硬件 > >> 正文

OpenCV 4.7在华为昇腾架构下仅3.29ms完成ResNet50推理 提高DNN代码卷积性能

2023-01-18 21:54 来源:IT之家     

  1 月 18 日消息报道,英特尔开源计算机视觉库 OpenCV 4.7 于去年 12 月正式发布。新版本带来了全新的 ONNX 层,大大提高了 DNN 代码的卷积性能,还为 DNN 模块提供了华为昇腾 CANN 后端支持。

  根据 OpenCV 中国团队的最新测试,基于昇腾异构计算架构 CANN 的加速能力,用 OpenCV Zoo 中的 PP-ResNet50、MobileNet 和 YOLOX 对 CANN 后端进行了测试,发现三个模型在 CANN 后端下分别达到了 3.29ms,1.21ms,12.80ms 的优异结果。

  同时,CANN 后端的推理结果也与默认 CPU 后端的基本保持一致。使用 OpenCV,用户只需下面 7 行 Python 代码,无需学习 CANN 的 API,就可以简洁地调用起昇腾 AI 处理器,实现神经网络加速推理(核心为第三、四行代码,其余为常见模型推理逻辑代码):

  import cv2 as cv

  net = cv.dnn.readNet("/path/to/model.onnx")

  net.setPreferableBackend(cv.dnn.DNN_BACKEND_CANN)

  net.setPreferableTarget(cv.dnn.DNN_TARGET_NPU)

  input = cv.imread("/path/to/image.jpg")

  net.setInput(cv.dnn.blobFromImage(input))

  out = net.forward()

  ▲ 使用 CANN 后端推理的示例代码

  南方科技大学计算机系的于仕琪老师表示,即使 OpenCV 针对 ARM CPU 进行了 winograd conv 等优化,在苹果标杆 CPU M1 上完成 ResNet50 推理都要跑 20ms 以上,而华为昇腾仅用了 3.29ms。

  昇腾 CANN(Compute Architecture for Neural Networks)是华为针对 AI 场景推出的异构计算架构。昇腾 CANN 支持昇思 MindSpore,OpenCV DNN,飞桨 Paddle、PyTorch、TensorFlow 等神经网络推理和训练框架,并兼容多种底层硬件设备。

免责声明: 创客100遵守行业规则,本站所转载的稿件都标注作者和来源。 创客100原创文章,请转载时务必注明文章作者和来源“创客100”, 不尊重本站原创的行为将受到创客100的追责,转载稿件或作者投稿可能会经编辑修改或者补充, 如有异议可投诉至:admin@100tmt.com