在英特爾? 酷睿? Ultra AI PC上用NPU部署YOLOv11與YOLOv12
最新的英特爾? 酷睿? Ultra 處理器(第二代)讓我們能夠在臺(tái)式機(jī)、移動(dòng)設(shè)備和邊緣中實(shí)現(xiàn)大多數(shù) AI 體驗(yàn),將 AI 加速提升到新水平,在 AI 時(shí)代為邊緣計(jì)算提供動(dòng)力。英特爾? 酷睿? Ultra 處理器提供了一套全面的專為 AI 定制的集成計(jì)算引擎,包括 CPU、GPU 和 NPU,提供高達(dá) 99 總平臺(tái) TOPS。近期,YOLO系列模型發(fā)布了YOLOv12, 對(duì) YOLO 框架進(jìn)行了全面增強(qiáng),特別注重集成注意力機(jī)制,同時(shí)又不犧牲 YOLO 模型所期望的實(shí)時(shí)處理能力,是 YOLO 系列的一次進(jìn)化,突破了人工視覺的極限。
本文引用地址:http://2s4d.com/article/202503/468646.htm本文中,我們將使用英特爾? 酷睿? Ultra 處理器AI PC設(shè)備,結(jié)合OpenVINO? C# API 使用最新發(fā)布的OpenVINO? 2025.0 部署YOLOv11 和 YOLOv12 目標(biāo)檢測(cè)模型,并在AIPC設(shè)備上,進(jìn)行速度測(cè)試:
OpenVINO? C# API項(xiàng)目鏈接:
https://github.com/guojin-yan/OpenVINO-CSharp-API.git
本文使用的項(xiàng)目源碼鏈接為:
https://github.com/guojin-yan/YoloDeployCsharp/blob/yolov1/demo/yolo_openvino_demo/
1 前言
1.1 英特爾? 酷睿? Ultra 處理器(第二代)
全新英特爾? 酷睿? Ultra 200V系列處理器對(duì)比上代 Ultra 100,升級(jí)了模塊化結(jié)構(gòu)、封裝工藝,采用全新性能核與能效核、英特爾硬件線程調(diào)度器、Xe2微架構(gòu)銳炫GPU、第四代NPU…由此也帶來(lái)了CPU性能提升18%,GPU性能提升30%,整體功耗降低50%,以及120TOPS平臺(tái)AI算力。
酷睿Ultra 200V系列處理器共有9款SKU,包括1款酷睿Ultra 9、4款酷睿Ultra 7以及4款酷睿Ultra 5,全系8核心8線程(4個(gè)性能核與4個(gè)能效核),具體規(guī)格如下:
作為新一代旗艦,酷睿Ultra 9 288V性能核頻率最高5.1GHz、能效核頻率最高3.7GHz,擁有12MB三級(jí)緩存。GPU方面,集成銳炫140V顯卡,擁有8個(gè)全新Xe2核心、8個(gè)光線追蹤單元,頻率最高2.05GHz,可以實(shí)現(xiàn)67TOPSAI算力。而NPU集成6個(gè)第四代神經(jīng)計(jì)算引擎,AI算力提升至48TOPS。
在當(dāng)前項(xiàng)目測(cè)試,使用的是英特爾? 酷睿? Ultra 9 288V設(shè)備,處理器信息如下表所示:
1.2 OpenVINO? C# API
英特爾發(fā)行版 OpenVINO? 工具套件基于 oneAPI 而開發(fā),可以加快高性能計(jì)算機(jī)視覺和深度學(xué)習(xí)視覺應(yīng)用開發(fā)速度工具套件,適用于從邊緣到云的各種英特爾平臺(tái)上,幫助用戶更快地將更準(zhǔn)確的真實(shí)世界結(jié)果部署到生產(chǎn)系統(tǒng)中。通過簡(jiǎn)化的開發(fā)工作流程,OpenVINO? 可賦能開發(fā)者在現(xiàn)實(shí)世界中部署高性能應(yīng)用程序和算法。
OpenVINO? 2025.0版本在生成式AI和硬件支持方面實(shí)現(xiàn)了多項(xiàng)重大突破。生成式AI推理速度大幅提升,特別是Whisper語(yǔ)音模型和圖像修復(fù)技術(shù)的加速,讓AI應(yīng)用的實(shí)時(shí)性和效率得到顯著改善。同時(shí),新增支持Qwen 2.5和DeepSeek-R1等中文大模型,優(yōu)化了長(zhǎng)文本處理和7B模型的推理吞吐量。在硬件方面,新一代酷睿Ultra和Xeon處理器帶來(lái)了更強(qiáng)的FP16推理能力,同時(shí)OpenVINO還推出了全球首個(gè)支持torch.compile的NPU后端,提升了異構(gòu)計(jì)算能力。GPU優(yōu)化和Windows Server原生支持也讓硬件性能得到更大釋放,邊緣計(jì)算領(lǐng)域的優(yōu)化使IoT設(shè)備能效大幅提高。
OpenVINO? C# API 是一個(gè) OpenVINO? 的 .Net wrapper,應(yīng)用最新的 OpenVINO? 庫(kù)開發(fā),通過 OpenVINO? C API 實(shí)現(xiàn) .Net 對(duì) OpenVINO? Runtime 調(diào)用,使用習(xí)慣與 OpenVINO? C++ API 一致。OpenVINO? C# API 由于是基于 OpenVINO? 開發(fā),所支持的平臺(tái)與 OpenVINO? 完全一致,具體信息可以參考 OpenVINO?。通過使用 OpenVINO? C# API,可以在 .NET、.NET Framework等框架下使用 C# 語(yǔ)言實(shí)現(xiàn)深度學(xué)習(xí)模型在指定平臺(tái)推理加速。
下表為當(dāng)前發(fā)布的 OpenVINO? C# API NuGet Package,支持多個(gè)目標(biāo)平臺(tái),可以通過NuGet一鍵安裝所有依賴。
1.3 YOLOv11與YOLOv12
YOLO系列目標(biāo)檢測(cè)模型自2016年提出以來(lái),始終以"實(shí)時(shí)檢測(cè)"為核心優(yōu)勢(shì),通過端到端架構(gòu)和網(wǎng)格化預(yù)測(cè)思想,在目標(biāo)檢測(cè)領(lǐng)域持續(xù)引領(lǐng)技術(shù)革新。從YOLOv1的7x7網(wǎng)格基礎(chǔ)框架,到Y(jié)OLOv8的骨干網(wǎng)絡(luò)優(yōu)化,再到Y(jié)OLOv10的C3K2模塊創(chuàng)新,該系列通過特征提取增強(qiáng)、后處理優(yōu)化和計(jì)算效率提升,不斷突破速度與精度的平衡極限。
YOLOv11特色由Ultralytics公司開發(fā),通過改進(jìn)CSPNet主干網(wǎng)絡(luò)和頸部架構(gòu),實(shí)現(xiàn)參數(shù)精簡(jiǎn)與精度提升的雙重突破。其核心創(chuàng)新在于:
◆ 增強(qiáng)型特征提取:采用跨階段特征融合技術(shù),在復(fù)雜場(chǎng)景中捕捉細(xì)微目標(biāo)特征
◆ 動(dòng)態(tài)計(jì)算優(yōu)化:通過自適應(yīng)計(jì)算分配策略,在保持45ms推理速度的同時(shí),mAP提升3.2%
◆ 輕量化設(shè)計(jì):相比YOLOv8減少18%參數(shù)量,更適合邊緣設(shè)備部署
YOLOv12的開發(fā)人員通過其最新模型在開創(chuàng)性版本中樹立了計(jì)算機(jī)視覺領(lǐng)域的新標(biāo)準(zhǔn)。YOLOv12 以其無(wú)與倫比的速度、準(zhǔn)確性和多功能性而聞名,是 YOLO 系列的一次進(jìn)化,突破了人工視覺的極限。YOLOv12 對(duì) YOLO 框架進(jìn)行了全面增強(qiáng),特別注重集成注意力機(jī)制,同時(shí)又不犧牲 YOLO 模型所期望的實(shí)時(shí)處理能力。
◆ 以注意力為中心的設(shè)計(jì):YOLOv12 具有區(qū)域注意力模塊,該模塊通過分割特征圖來(lái)保持效率,將計(jì)算復(fù)雜度降低一半,同時(shí)使用 FlashAttention 來(lái)緩解實(shí)時(shí)檢測(cè)的內(nèi)存帶寬限制。
◆ 分層結(jié)構(gòu):該模型采用殘差高效層聚合網(wǎng)絡(luò)(R-ELAN)來(lái)優(yōu)化特征集成并減少梯度阻塞,并簡(jiǎn)化了最后階段以實(shí)現(xiàn)更輕、更快的架構(gòu)。
◆ 架構(gòu)增強(qiáng):通過用 7x7 可分離卷積取代傳統(tǒng)位置編碼,YOLOv12 有效地保留了位置信息。自適應(yīng) MLP 比率可以更好地分配計(jì)算資源,在實(shí)時(shí)約束下支持多樣化數(shù)據(jù)集。
◆ 訓(xùn)練和優(yōu)化:該模型使用 SGD 和自定義學(xué)習(xí)計(jì)劃訓(xùn)練了 600 多個(gè)時(shí)期,實(shí)現(xiàn)了高精度。它采用 Mosaic 和 Mixup 等數(shù)據(jù)增強(qiáng)技術(shù)來(lái)提高泛化能力,從而提升了 YOLOv12 快速、準(zhǔn)確檢測(cè)物體的能力。
兩代模型分別代表了YOLO系列在傳統(tǒng)架構(gòu)優(yōu)化與新型注意力機(jī)制融合兩個(gè)方向的最新突破,其中YOLOv12更開創(chuàng)性地將Transformer優(yōu)勢(shì)融入實(shí)時(shí)檢測(cè)框架,標(biāo)志著該系列進(jìn)入"注意力增強(qiáng)"新階段。
2 模型獲取
2.1 配置環(huán)境
安裝模型下載以及轉(zhuǎn)換環(huán)境,此處使用Anaconda進(jìn)行程序集管理,輸入以下指令創(chuàng)建一個(gè)yolo環(huán)境:
conda create -n yolo python=3.10 conda activate yolo pip install ultralytics
2.2 下載并轉(zhuǎn)換ONNX模型
首先導(dǎo)出目標(biāo)識(shí)別模型,此處以官方預(yù)訓(xùn)練模型為例,目前ultralytics已經(jīng)集成了,依次輸入以下指令即可:
yolo export model=yolo11s.pt format=onnx
目前OpenVINO?支持直接調(diào)用ONNX模型,因此此處只導(dǎo)出ONNX模型即可,如需要導(dǎo)出OpenVINO?格式的模型,可以參考OpenVINO?官方文檔。
3 Yolo 項(xiàng)目配置
3.1 項(xiàng)目創(chuàng)建與環(huán)境配置
在Windows平臺(tái)開發(fā)者可以使用Visual Studio平臺(tái)開發(fā)程序,但無(wú)法跨平臺(tái)實(shí)現(xiàn),為了實(shí)現(xiàn)跨平臺(tái),此處采用dotnet指令進(jìn)行項(xiàng)目的創(chuàng)建和配置。
首先使用dotnet創(chuàng)建一個(gè)測(cè)試項(xiàng)目,在終端中輸入一下指令:
dotnet new console --framework net8.0 --use-program-main -o yolo_sample
此處以Windows平臺(tái)為例安裝項(xiàng)目依賴,首先是安裝OpenVINO? C# API項(xiàng)目依賴,在命令行中輸入以下指令即可:
dotnet add package OpenVINO.CSharp.API dotnet add package OpenVINO.runtime.win dotnet add package OpenVINO.CSharp.API.Extensions dotnet add package OpenVINO.CSharp.API.Extensions.OpenCvSharp
關(guān)于在不同平臺(tái)上搭建 OpenVINO? C# API 開發(fā)環(huán)境請(qǐng)參考以下文章:
◆ 在Windows上搭建OpenVINO?C#開發(fā)環(huán)境
https://github.com/guojin-yan/OpenVINO-CSharp-API/blob/csharp3.1/docs/inatall/Install_OpenVINO_CSharp_Windows_cn.md
◆ 在Linux上搭建OpenVINO?C#開發(fā)環(huán)境
https://github.com/guojin-yan/OpenVINO-CSharp-API/blob/csharp3.1/docs/inatall/Install_OpenVINO_CSharp_Linux_cn.md
◆ 在MacOS上搭建OpenVINO?C#開發(fā)環(huán)境
https://github.com/guojin-yan/OpenVINO-CSharp-API/blob/csharp3.1/docs/inatall/Install_OpenVINO_CSharp_MacOS_cn.md
接下來(lái)安裝使用到的圖像處理庫(kù) OpenCvSharp,在命令行中輸入以下指令即可:
dotnet add package OpenCvSharp4 dotnet add package OpenCvSharp4.Extensions dotnet add package OpenCvSharp4.runtime.win
關(guān)于在其他平臺(tái)上搭建 OpenCvSharp 開發(fā)環(huán)境請(qǐng)參考以下文章:
◆ 【OpenCV】在Linux上使用OpenCvSharp
https://mp.weixin.qq.com/s/z6ahGWlkaQs3pUtN15Lzpg
◆ 【OpenCV】在MacOS上使用OpenCvSharp
https://mp.weixin.qq.com/s/8njRodtg7lRMggBfpZDHgw
添加完成項(xiàng)目依賴后,項(xiàng)目的配置文件如下所示:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> <PackageReference Include="OpenCvSharp4" Version="4.10.0.20241108" /> <PackageReference Include="OpenCvSharp4.Extensions" Version="4.10.0.20241108" /> <PackageReference Include="OpenCvSharp4.runtime.win" Version="4.10.0.20241108" /> <PackageReference Include="OpenVINO.CSharp.API" Version="2025.0.0.1" /> <PackageReference Include="OpenVINO.runtime.win" Version="2025.0.0.1" /> </ItemGroup> </Project>
3.2 定義模型預(yù)測(cè)方法
使用 OpenVINO? C# API 部署模型主要包括以下幾個(gè)步驟:
◆ 初始化 OpenVINO Runtime Core
◆ 讀取本地模型(將圖片數(shù)據(jù)預(yù)處理方式編譯到模型)
◆ 將模型編譯到指定設(shè)備
◆ 創(chuàng)建推理通道
◆ 處理圖像輸入數(shù)據(jù)
◆ 設(shè)置推理輸入數(shù)據(jù)
◆ 模獲取推理結(jié)果
◆ 處理結(jié)果數(shù)據(jù)
按照 OpenVINO? C# API 部署深度學(xué)習(xí)模型的步驟,編寫YOLOv10模型部署流程,在之前的項(xiàng)目里,我們已經(jīng)部署了YOLOv5~9等一系列模型,其部署流程是基本一致的,YOLOv10模型部署代碼如下所示:
internal class YoloDet { public static void predict(string model_path, string image_path, string device) { DateTime start = DateTime.Now; // -------- Step 1. Initialize OpenVINO Runtime Core -------- Core core = new Core(); DateTime end = DateTime.Now; Console.WriteLine("1. Initialize OpenVINO Runtime Core success, time spend: " + (end - start).TotalMilliseconds + "ms."); // -------- Step 2. Read inference model -------- start = DateTime.Now; Model model = core.read_model(model_path); end = DateTime.Now; Console.WriteLine("2. Read inference model success, time spend: " + (end - start).TotalMilliseconds + "ms."); // -------- Step 3. Loading a model to the device -------- start = DateTime.Now; CompiledModel compiled_model = core.compile_model(model, device); end = DateTime.Now; Console.WriteLine("3. Loading a model to the device success, time spend:" + (end - start).TotalMilliseconds + "ms."); // -------- Step 4. Create an infer request -------- start = DateTime.Now; InferRequest infer_request = compiled_model.create_infer_request(); end = DateTime.Now; Console.WriteLine("4. Create an infer request success, time spend:" + (end - start).TotalMilliseconds + "ms."); // -------- Step 5. Process input images -------- start = DateTime.Now; Mat image = new Mat(image_path); // Read image by opencvsharp int max_image_length = image.Cols > image.Rows ? image.Cols : image.Rows; Mat max_image = Mat.Zeros(new OpenCvSharp.Size(max_image_length, max_image_length), MatType.CV_8UC3); Rect roi = new Rect(0, 0, image.Cols, image.Rows); image.CopyTo(new Mat(max_image, roi)); float factor = (float)(max_image_length / 640.0); end = DateTime.Now; Console.WriteLine("5. Process input images success, time spend:" + (end - start).TotalMilliseconds + "ms."); // -------- Step 6. Set up input data -------- start = DateTime.Now; Tensor input_tensor = infer_request.get_input_tensor(); Shape input_shape = input_tensor.get_shape(); Mat input_mat = CvDnn.BlobFromImage(max_image, 1.0 / 255.0, new OpenCvSharp.Size(input_shape[2], input_shape[3]), new Scalar(), true, false); float[] input_data = new float[input_shape[1] * input_shape[2] * input_shape[3]]; Marshal.Copy(input_mat.Ptr(0), input_data, 0, input_data.Length); input_tensor.set_data<float>(input_data); end = DateTime.Now; Console.WriteLine("6. Set up input data success, time spend:" + (end - start).TotalMilliseconds + "ms."); // -------- Step 7. Do inference synchronously -------- infer_request.infer(); start = DateTime.Now; infer_request.infer(); end = DateTime.Now; Console.WriteLine("7. Do inference synchronously success, time spend:" + (end - start).TotalMilliseconds + "ms."); // -------- Step 8. Get infer result data -------- start = DateTime.Now; Tensor output_tensor = infer_request.get_output_tensor(); int output_length = (int)output_tensor.get_size(); float[] output_data = output_tensor.get_data<float>(output_length); end = DateTime.Now; Console.WriteLine("8. Get infer result data success, time spend:" + (end - start).TotalMilliseconds + "ms."); // -------- Step 9. Process reault -------- start = DateTime.Now; // Storage results list List<Rect> position_boxes = new List<Rect>(); List<int> class_ids = new List<int>(); List<float> confidences = new List<float>(); // Preprocessing output results for (int i = 0; i < 8400; i++) { for (int j = 4; j < 84; j++) { float conf = output_data[8400 * j + i]; int label = j - 4; if (conf > 0.2) { float cx = output_data[8400 * 0 + i]; float cy = output_data[8400 * 1 + i]; float ow = output_data[8400 * 2 + i]; float oh = output_data[8400 * 3 + i]; int x = (int)((cx - 0.5 * ow) * factor); int y = (int)((cy - 0.5 * oh) * factor); int width = (int)(ow * factor); int height = (int)(oh * factor); Rect box = new Rect(x, y, width, height); position_boxes.Add(box); class_ids.Add(label); confidences.Add(conf); } } } // NMS non maximum suppression int[] indexes = new int[position_boxes.Count]; CvDnn.NMSBoxes(position_boxes, confidences, 0.5f, 0.5f, out indexes); end = DateTime.Now; Console.WriteLine("9. Process reault success, time spend:" + (end - start).TotalMilliseconds + "ms."); for (int i = 0; i < indexes.Length; i++) { int index = indexes[i]; Cv2.Rectangle(image, position_boxes[index], new Scalar(0, 0, 255), 2, LineTypes.Link8); Cv2.Rectangle(image, new OpenCvSharp.Point(position_boxes[index].TopLeft.X, position_boxes[index].TopLeft.Y + 30), new OpenCvSharp.Point(position_boxes[index].BottomRight.X, position_boxes[index].TopLeft.Y), new Scalar(0, 255, 255), -1); Cv2.PutText(image, class_ids[index] + "-" + confidences[index].ToString("0.00"), new OpenCvSharp.Point(position_boxes[index].X, position_boxes[index].Y + 25), HersheyFonts.HersheySimplex, 0.8, new Scalar(0, 0, 0), 2); } string output_path = Path.Combine(Path.GetDirectoryName(Path.GetFullPath(image_path)), Path.GetFileNameWithoutExtension(image_path) + "_result.jpg"); Cv2.ImWrite(output_path, image); Console.WriteLine("The result save to " + output_path); Cv2.ImShow("Result", image); Cv2.WaitKey(0); } }
接下來(lái)就是在C#static void Main(string[] args)方法里調(diào)用該方法,調(diào)用代碼如下所示:
YoloDet.predict("E:/Model/Yolo/yolo11x.onnx", "./demo_2.jpg", "NPU"); YoloDet.predict("E:/Model/Yolo/yolo12x.onnx", "./demo_2.jpg", "CPU");
4 項(xiàng)目編譯和運(yùn)行
4.1 項(xiàng)目編譯和運(yùn)行
接下來(lái)輸入項(xiàng)目編譯指令進(jìn)行項(xiàng)目編譯,輸入以下指令即可:
dotnet build
接下來(lái)運(yùn)行編譯后的程序文件,在CMD中輸入以下指令,運(yùn)行編譯后的項(xiàng)目文件:
dotnet run --no-build
4.2 模型推理效果
下面分別使用x格式的模型演示YOLOv11和YOLOv12模型運(yùn)行結(jié)果:
首先是YOLOv11x模型推理效果,如下圖所示
下面是YOLOv12x模型推理效果,如下圖所示:
5 YOLO系列模型推理性能表現(xiàn)
下面四個(gè)表格通過對(duì)YOLOv8、YOLOv11和YOLOv12系列模型在英特爾? 酷睿? Ultra 9 288V處理器上推理速度的對(duì)比分析,我們可以看到它們?cè)贑PU、NPU和GPU平臺(tái)上的表現(xiàn)差異。下面將詳細(xì)描述每個(gè)系列在不同硬件平臺(tái)上的推理速度,并對(duì)比其性能。
表 1 YOLOv8全系模型在英特爾? 酷睿? Ultra 9 288V 處理器上推理速度
表1列出了YOLOv8全系模型的推理時(shí)間,在YOLOv8系列中,隨著模型復(fù)雜度的增加,推理時(shí)間也隨之增長(zhǎng)。在CPU上,YOLOv8n(最小模型)需要24.78ms,YOLOv8x(最大模型)則達(dá)到629.35ms,推理時(shí)間大幅增加。在NPU上,YOLOv8n的推理時(shí)間為3.60ms,YOLOv8x則為33.72ms。GPU上,YOLOv8n的推理時(shí)間最短,僅為2.64ms,而YOLOv8x則為23.86ms。可以看出,YOLOv8系列在NPU和GPU加速下的表現(xiàn)非常優(yōu)越,特別是YOLOv8n和YOLOv8s,它們?cè)贕PU上的推理時(shí)間僅為2.64ms和4.62ms,顯示了YOLOv8系列在加速硬件上的高效性。
表 2 YOLOv11全系模型在英特爾? 酷睿? Ultra 9 288V 處理器上推理速度
表2介紹了YOLOv11系列,YOLOv11系列的推理時(shí)間相較于YOLOv8系列較長(zhǎng),尤其是在CPU上。YOLOv11n在CPU上的推理時(shí)間為19.90ms,相比YOLOv8n的24.78ms稍快;但隨著模型復(fù)雜度增加,YOLOv11x的CPU推理時(shí)間為499.18ms,依然長(zhǎng)于YOLOv8x的629.35ms。NPU加速方面,YOLOv11n的推理時(shí)間為3.97ms,YOLOv11x為38.50ms,雖然NPU加速顯著提升了推理速度,但整體表現(xiàn)遜色于YOLOv8系列。GPU方面,YOLOv11n在GPU上為2.55ms,YOLOv11x為20.40ms,也表現(xiàn)得相對(duì)較慢。
表 3 YOLOv12全系模型在英特爾? 酷睿? Ultra 9 288V 處理器上推理速度
YOLOv12系列的推理時(shí)間在所有系列中表現(xiàn)較慢,尤其是在CPU上。YOLOv12n的推理時(shí)間為23.31ms,相比YOLOv8n和YOLOv11n都略長(zhǎng),而YOLOv12x的推理時(shí)間為559.51ms,明顯比其他系列的最大模型更慢。在NPU上,YOLOv12n的推理時(shí)間為6.55ms,YOLOv12x為82.29ms,雖然在NPU加速下,推理速度有所提升,但相對(duì)其他系列仍然較慢。YOLOv12系列在推理速度方面的表現(xiàn)整體較為遜色,特別是在沒有GPU加速的情況下。
從推理速度的整體表現(xiàn)來(lái)看,YOLOv8系列無(wú)疑是表現(xiàn)最好的。YOLOv8在NPU和GPU加速下的推理速度非常高效,尤其是在YOLOv8n和YOLOv8s這兩個(gè)小型模型上,其推理時(shí)間明顯優(yōu)于YOLOv11和YOLOv12系列,且在GPU和NPU加速下依然保持較短的推理時(shí)間。相比之下,YOLOv11系列的表現(xiàn)略遜,雖然NPU加速有助于提升推理速度,但整體推理時(shí)間仍然較長(zhǎng)。
YOLOv12系列則在推理時(shí)間上表現(xiàn)最差,尤其是在沒有GPU加速的情況下,其推理時(shí)間遠(yuǎn)高于YOLOv8和YOLOv11系列。
6 總結(jié)
英特爾? 酷睿? Ultra 處理器憑借其出色的性能和高效的能耗管理,內(nèi)置的高算力顯卡及神經(jīng)計(jì)算單元(功耗約2W),是深度學(xué)習(xí)和計(jì)算機(jī)視覺應(yīng)用的理想選擇。通過結(jié)合OpenVINO? 工具套件和YOLOv11、YOLOv12等先進(jìn)模型,我們可以顯著提升推理性能,并確保在不同計(jì)算單元上高效運(yùn)行。
本文介紹了如何配置開發(fā)環(huán)境、使用C# API進(jìn)行模型部署,以及如何利用處理器的優(yōu)勢(shì)優(yōu)化應(yīng)用程序性能。隨著AI技術(shù)的不斷發(fā)展,英特爾的硬件和軟件工具將繼續(xù)為開發(fā)者提供更強(qiáng)大的支持,推動(dòng)人工智能在各個(gè)領(lǐng)域的應(yīng)用與創(chuàng)新。希望通過本文的學(xué)習(xí),讀者能夠在實(shí)際項(xiàng)目中靈活運(yùn)用這些技術(shù),實(shí)現(xiàn)更高效、更智能的解決方案。
評(píng)論