0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在英特尔酷睿Ultra处理器上优化和部署YOLOv8模型

英特尔物联网 来源:英特尔物联网 2024-05-30 17:16 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

英特尔 酷睿 Ultra处理器是英特尔公司推出的一个高端处理器品牌,其第一代产品基于Meteor Lake架构,使用Intel 4制程,单颗芯片封装CPUGPU(Intel Arc Graphics)和 NPU(Intel AI Boost),具有卓越的AI性能。

本文将详细介绍使用OpenVINO工具套件在英特尔 酷睿Ultra处理器上实现对YOLOv8模型的INT8量化和部署。

1

第一步:环境搭建

首先,请下载并安装最新版的NPU和显卡驱动:

NPU 驱动:https://www.intel.cn/content/www/cn/zh/download/794734/intel-npu-driver-windows.html

显卡驱动:

https://www.intel.cn/content/www/cn/zh/download/785597/intel-arc-iris-xe-graphics-windows.html

a46b2724-1e63-11ef-91d2-92fbcf53809c.png

然后,请下载并安装Anaconda,然后创建并激活名为npu的虚拟环境:(下载链接:https://www.anaconda.com/download)

conda create -n npu python=3.11    #创建虚拟环境
conda activate npu           #激活虚拟环境
python -m pip install --upgrade pip  #升级pip到最新版本

最后,请安装openvino、nncf、onnx和ultralytics:

pip install openvino nncf onnx ultralytics

a479fd62-1e63-11ef-91d2-92fbcf53809c.png

2

第二步:导出yolov8s模型并实现INT8量化

使用yolo命令导出yolov8s.onnx模型:

yolo export model=yolov8s.pt format=onnx

使用ovc命令导出OpenVINO格式,FP16精度的yolov8s模型

ovc yolov8s.onnx

a486298e-1e63-11ef-91d2-92fbcf53809c.png

使用benchmark_app程序依次测试FP16精度的yolov8s模型在CPU,GPU和NPU上的AI推理性能,结果如下图所示:

benchmark_app -m yolov8s.xml -d CPU  #此处依次换为GPU,NPU

a49247c8-1e63-11ef-91d2-92fbcf53809c.png

用NNCF实现yolov8s模型的INT8量化

NNCF全称Neural Network Compression Framework,是一个实现神经网络训练后量化(post-training quantization)和训练期间压缩(Training-Time Compression)的开源工具包,如下图所示,通过对神经网络权重的量化和压缩以最低精度损失的方式实现推理计算的优化和加速。

a49e1fa8-1e63-11ef-91d2-92fbcf53809c.png

NNCF提供的量化和压缩算法

在上述量化和压缩算法中,训练后INT8量化(Post-Training INT8 Quantization)是在工程实践中应用最广泛的,它无需重新训练或微调模型,就能实现模型权重的INT8量化,在获得显著的性能提升的同时,仅有极低的精度损失,而且使用简便。

用NNCF实现YOLOv8s模型INT8量化的范例代码yolov8_PTQ_INT8.py,如下所示:

import torch, nncf
import openvino as ov 
from torchvision import datasets, transforms
# Specify the path of model and dataset
model_dir = r"yolov8s.xml"
dataset = r"val_dataset"
# Instantiate your uncompressed model
model = ov.Core().read_model(model_dir)
# Provide validation part of the dataset to collect statistics needed for the compression algorithm
val_dataset = datasets.ImageFolder(dataset, transform=transforms.Compose([transforms.ToTensor(),transforms.Resize([640, 640])]))
dataset_loader = torch.utils.data.DataLoader(val_dataset, batch_size=1)
# Step 1: Initialize transformation function
def transform_fn(data_item):
  images, _ = data_item
  return images.numpy()
# Step 2: Initialize NNCF Dataset
calibration_dataset = nncf.Dataset(dataset_loader, transform_fn)
# Step 3: Run the quantization pipeline
quantized_model = nncf.quantize(model, calibration_dataset)
# Step 4: Save the INT8 quantized model
ov.save_model(quantized_model, "yolov8s_int8.xml")

运行yolov8_PTQ_INT8.py,执行结果如下所示:

a4aab6c8-1e63-11ef-91d2-92fbcf53809c.png

使用benchmark_app程序依次测试INT8精度的yolov8s模型在CPU,GPU和NPU上的AI推理性能,结果如下图所示:

benchmark_app -m yolov8s_int8.xml -d CPU  #此处依次换为GPU,NPU

a4b31c96-1e63-11ef-91d2-92fbcf53809c.png

从上图可以看出,yolov8s模型经过INT8量化后,相比FP16精度模型,无论在Latency还是Throughput上,都有明显提升。

3

第三步:编写YOLOv8推理程序

yolov8目标检测模型使用letterbox算法对输入图像进行保持原始宽高比的放缩,据此,yolov8目标检测模型的预处理函数实现,如下所示:

from ultralytics.data.augment import LetterBox
# 实例化LetterBox
letterbox = LetterBox()
# 预处理函数
def preprocess_image(image: np.ndarray, target_size=(640, 640))->np.ndarray:
  image = letterbox(image)  #YOLOv8用letterbox按保持图像原始宽高比方式放缩图像
  blob = cv2.dnn.blobFromImage(image, scalefactor=1 / 255, size=target_size, swapRB=True)
  return blob

yolov8目标检测模型的后处理函数首先用非极大值抑制non_max_suppression()算法去除冗余候选框,然后根据letterbox的放缩方式,用scale_boxes()函数将检测框的坐标点还原到原始图像上,如下所示:

# 后处理函数: 从推理结果[1,84,8400]的张量中拆解出:检测框,置信度和类别
def postprocess(pred_boxes, input_hw, orig_img, min_conf_threshold = 0.25, 
         nms_iou_threshold = 0.7, agnosting_nms = False, max_detections = 300):
  # 用非极大值抑制non_max_suppression()算法去除冗余候选框
  nms_kwargs = {"agnostic": agnosting_nms, "max_det":max_detections}
  pred = ops.non_max_suppression(
    torch.from_numpy(pred_boxes),
    min_conf_threshold,
    nms_iou_threshold,
    nc=80,
    **nms_kwargs
  )[0]
  # 用scale_boxes()函数将检测框的坐标点还原到原始图像上
  shape = orig_img.shape
  pred[:, :4] = ops.scale_boxes(input_hw, pred[:, :4], shape).round()
  
  return pred

完整代码详细参见:yolov8_infer_ov.py,其运行结果如下所示:

a4be35fe-1e63-11ef-91d2-92fbcf53809c.png

4

总结

英特尔 酷睿 Ultra处理器内置了CPU、GPU和NPU,相比之前,无论是能耗比、显卡性能还是AI性能,都有显著提升;通过OpenVINO和NNCF,可以方便快捷实现AI模型的优化和INT量化,以及本地化部署,获得非常不错的端侧AI推理性能。



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    20149

    浏览量

    247169
  • 英特尔
    +关注

    关注

    61

    文章

    10275

    浏览量

    179311
  • GPU芯片
    +关注

    关注

    1

    文章

    306

    浏览量

    6399
  • OpenVINO
    +关注

    关注

    0

    文章

    117

    浏览量

    716

原文标题:在英特尔® 酷睿™ Ultra处理器上优化和部署YOLOv8模型 | 开发者实战

文章出处:【微信号:英特尔物联网,微信公众号:英特尔物联网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用ROCm™优化部署YOLOv8模型

    ://github.com/ultralytics/ultralytics/tree/main YOLOv8模型的卓越性能使其多个领域具有广泛的应用前景,如自动驾
    的头像 发表于 09-24 18:32 512次阅读
    使用ROCm™<b class='flag-5'>优化</b>并<b class='flag-5'>部署</b><b class='flag-5'>YOLOv8</b><b class='flag-5'>模型</b>

    英特尔Ultra 200HX游戏本发布

    近日,英特尔举办了“英特尔 Ultra 200HX新品分享会”,来自10家OEM的20款高性能笔记本集中亮相,为广大游戏发烧友和高性能
    的头像 发表于 04-09 09:24 966次阅读

    RK3576 yolov8训练部署教程

    本章展示yolov8模型EASY EAI Orin nano的部署过程。
    的头像 发表于 04-02 16:04 1574次阅读
    RK3576 <b class='flag-5'>yolov8</b>训练<b class='flag-5'>部署</b>教程

    英特尔Ultra AI PC上部署多种图像生成模型

    全新英特尔Ultra 200V系列处理器对比上代Meteor Lake,升级了模块化结构、封装工艺,采用全新性能核与能效核、
    的头像 发表于 04-02 15:47 1138次阅读
    <b class='flag-5'>在</b><b class='flag-5'>英特尔</b><b class='flag-5'>酷</b><b class='flag-5'>睿</b><b class='flag-5'>Ultra</b> AI PC上<b class='flag-5'>部署</b>多种图像生成<b class='flag-5'>模型</b>

    英特尔Ultra处理器助力亦心AI闪绘本地功能上线

    英特尔Ultra处理器支持的AI实时绘画软件“亦心AI闪绘”本地功能已正式上线,能够基于本地大模型
    的头像 发表于 04-02 15:27 938次阅读

    微星携英特尔为玩家打造非凡游戏体验,两款泰坦家族新品均搭载全新英特尔Ultra HX处理器

    3月29日,英特尔Ultra 200HX新品分享会上,搭载该处理器的高性能笔记本齐聚一堂,
    的头像 发表于 04-02 09:37 820次阅读

    为什么Ubuntu20.04使用YOLOv3比Yocto操作系统的推理快?

    20.04 和 47.3 FPS 中 Yocto(IOTG Yocto BSP,标签:发行-74_tgl_u_mr3)中使用英特尔® ™ i7-1185G7E
    发表于 03-05 06:48

    英特尔Ultra AI PC用NPU部署YOLOv11与YOLOv12

    最新的英特尔 Ultra 处理器(第二代)让我们能够在台式机、移动设备和边缘中实现大多数 AI 体验,将 AI 加速提升到新水平,
    的头像 发表于 03-03 15:32 2576次阅读
    <b class='flag-5'>在</b><b class='flag-5'>英特尔</b><b class='flag-5'>酷</b><b class='flag-5'>睿</b><b class='flag-5'>Ultra</b> AI PC<b class='flag-5'>上</b>用NPU<b class='flag-5'>部署</b><b class='flag-5'>YOLOv</b>11与<b class='flag-5'>YOLOv</b>12

    英特尔 Ultra 9 275HX 成为 PassMark 最快的笔记本处理器

    能最强的笔记本处理器。 IT之家通过 PassMark 官网了解到,英特尔 Ultra 9 275HX 的跑分为 61010,超越了 A
    的头像 发表于 02-12 17:04 1953次阅读
    <b class='flag-5'>英特尔</b><b class='flag-5'>酷</b><b class='flag-5'>睿</b> <b class='flag-5'>Ultra</b> 9 275HX 成为 PassMark <b class='flag-5'>上</b>最快的笔记本<b class='flag-5'>处理器</b>

    英特尔Ultra 200V系列移动处理器亮相CES 2025

    基于英特尔 vPro 平台的全新英特尔 Ultra 200V系列移动处理器,为企业提供 A
    的头像 发表于 01-20 09:21 1697次阅读

    英特尔CES 2025发布全新Ultra处理器

    近日,万众瞩目的国际消费电子展(CES 2025)英特尔再次展现了其科技领域的领导地位,发布了全新的英特尔®
    的头像 发表于 01-10 13:57 1873次阅读

    英特尔Ultra 7处理器助力联想YOGA Air 15 Aura AI元启版树立轻薄本新标杆

    作为第二代英特尔Ultra 7处理器首发护航产品,年货送礼的难题或许能在这台旗舰级AI PC
    的头像 发表于 12-31 16:05 1926次阅读

    智谱发布清言英特尔Ultra专享版

    近日,国内知名大模型厂商智谱在其官方网站——智谱清言,正式推出了针对英特尔Ultra
    的头像 发表于 12-24 10:49 1123次阅读

    智谱发布智谱清言英特尔Ultra专享版

    近日,国内顶尖的大模型厂商智谱在官方网站智谱清言,正式推出了智谱清言英特尔Ultra专享版
    的头像 发表于 12-19 11:37 987次阅读

    智谱清言英特尔Ultra专享版发布,离线模型玩转AIPC

    近日,国内领先的大模型厂商智谱在智谱清言的官网发布了智谱清言英特尔Ultra专享版,这个版本可以利用
    的头像 发表于 12-18 11:52 924次阅读