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 的优异结果

超越苹果 M1,OpenCV 4.7 在华为昇腾架构下仅 3.29ms 完成 ResNet50 推理-冯金伟博客园

同时,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

超越苹果 M1,OpenCV 4.7 在华为昇腾架构下仅 3.29ms 完成 ResNet50 推理-冯金伟博客园

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

超越苹果 M1,OpenCV 4.7 在华为昇腾架构下仅 3.29ms 完成 ResNet50 推理-冯金伟博客园