opencv/doc/tutorials/dnn
Myron Rodrigues 344f8c6400
Merge pull request #27363 from MRo47:openvino-npu-support
Feature: Add OpenVINO NPU support #27363

## Why
- OpenVINO now supports inference on integrated NPU devices in intel's Core Ultra series processors.
- Sometimes as fast as GPU, but should use considerably less power.

## How
- The NPU plugin is now available as "NPU" in openvino `ov::Core::get_available_devices()`.
- Removed the guards and checks for NPU in available targets for Inference Engine backend.

## Test example

### Pre-requisites
- Intel [Core Ultra series processor](https://www.intel.com/content/www/us/en/products/details/processors/core-ultra/edge.html#tab-blade-1-0)
- [Intel NPU driver](https://github.com/intel/linux-npu-driver/releases)
- OpenVINO 2023.3.0+ (Tested on 2025.1.0)

### Example
```cpp
#include <opencv2/dnn.hpp>
#include <iostream>

int main(){
    cv::dnn::Net net = cv::dnn::readNet("../yolov8s-openvino/yolov8s.xml", "../yolov8s-openvino/yolov8s.bin");
    cv::Size net_input_shape = cv::Size(640, 480);
    std::cout << "Setting backend to DNN_BACKEND_INFERENCE_ENGINE and target to DNN_TARGET_NPU" << std::endl;
    net.setPreferableBackend(cv::dnn::DNN_BACKEND_INFERENCE_ENGINE);
    net.setPreferableTarget(cv::dnn::DNN_TARGET_NPU);

    cv::Mat image(net_input_shape, CV_8UC3);
    cv::randu(image, cv::Scalar(0, 0, 0), cv::Scalar(255, 255, 255));
    cv::Mat blob = cv::dnn::blobFromImage(
        image, 1, net_input_shape, cv::Scalar(0, 0, 0), true, false, CV_32F);
    net.setInput(blob);
    std::cout << "Running forward" << std::endl;
    cv::Mat result = net.forward();
    std::cout << "Output shape: " << result.size << std::endl; // Output shape: 1 x 84 x 6300
}
```

model files [here](https://limewire.com/d/bPgiA#BhUeSTBnMc)

docker image used to build opencv: [ghcr.io/mro47/opencv-builder](https://github.com/MRo47/opencv-builder/blob/main/Dockerfile)

Closes #26240

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-05-27 14:13:49 +03:00
..
dnn_android Updated Android tutorial for MobileNet-SSD detector 2023-12-12 15:40:36 +03:00
dnn_custom_layers Merge remote-tracking branch 'origin/3.4' into merge-3.4 2023-04-21 10:55:04 +03:00
dnn_face Update documentation 2022-01-10 18:34:39 +03:00
dnn_googlenet Merge pull request #25042 from mshabunin:doc-upgrade 2024-03-05 16:19:45 +03:00
dnn_halide Added TOC to most of tutorials 2020-12-07 19:13:54 +03:00
dnn_halide_scheduling added opencv for openvino tutorial 2022-09-28 12:05:28 +02:00
dnn_javascript Added TOC to most of tutorials 2020-12-07 19:13:54 +03:00
dnn_OCR Merge pull request #25042 from mshabunin:doc-upgrade 2024-03-05 16:19:45 +03:00
dnn_openvino Merge pull request #27363 from MRo47:openvino-npu-support 2025-05-27 14:13:49 +03:00
dnn_pytorch_tf_classification fix 4.x links 2021-12-22 13:24:30 +00:00
dnn_pytorch_tf_detection fix 4.x links 2021-12-22 13:24:30 +00:00
dnn_pytorch_tf_segmentation fix 4.x links 2021-12-22 13:24:30 +00:00
dnn_text_spotting Merge pull request #25042 from mshabunin:doc-upgrade 2024-03-05 16:19:45 +03:00
dnn_yolo Merge pull request #27338 from omahs:patch-1 2025-05-21 12:13:50 +03:00
images Custom deep learning layers in Python 2018-04-26 09:25:18 +03:00
table_of_content_dnn.markdown Merge pull request #26441 from sturkmen72:upd_tutorials 2025-03-11 16:17:21 +03:00