自由互联 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?cvnet?=?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 等神经网络推理和训练框架,并兼容多种底层硬件设备。