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

    文章

    19523

    浏览量

    231765
  • 英特尔
    +关注

    关注

    61

    文章

    10061

    浏览量

    172809
  • GPU芯片
    +关注

    关注

    1

    文章

    304

    浏览量

    5968
  • OpenVINO
    +关注

    关注

    0

    文章

    105

    浏览量

    281

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

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

收藏 人收藏

    评论

    相关推荐

    为什么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 268次阅读
    <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 244次阅读
    <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 372次阅读

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

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

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

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

    英特尔发布Ultra 200S系列台式机处理器

    近日,英特尔正式推出了Ultra 200S系列处理器家族,为台式机平台带来了全新的AI PC功能。此次发布的
    的头像 发表于 10-11 17:36 608次阅读

    选择英特尔® 处理器家族,开启智能计算新时代

    在数字化转型加速的时代,计算性能的提升已成为每个用户的核心诉求。无论是职场精英、游戏玩家、内容创作者,还是家庭娱乐爱好者, 英特尔® 处理器家族 凭借卓越的性能与智能
    发表于 09-18 10:39 8865次阅读
    选择<b class='flag-5'>英特尔</b>® <b class='flag-5'>酷</b><b class='flag-5'>睿</b>™ <b class='flag-5'>处理器</b>家族,开启智能计算新时代

    英特尔Ultra 200V系列处理器发布

    英特尔近日隆重推出了其革命性的Ultra 200V系列处理器,这一全新x86处理器家族以超高
    的头像 发表于 09-10 16:44 723次阅读

    如何将Llama3.1模型部署英特尔Ultra处理器

    本文从搭建环境开始,一步一步帮助读者实现只用五行代码便可将Llama3.1模型部署英特尔
    的头像 发表于 07-26 09:51 2668次阅读
    如何将Llama3.1<b class='flag-5'>模型</b><b class='flag-5'>部署</b><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><b class='flag-5'>处理器</b>

    英特尔Ultra处理器出货量预计飙升

    英特尔中国区董事长王锐近日透露,英特尔Ultra处理器自问世以来,已经
    的头像 发表于 06-20 09:23 869次阅读

    已有超过500款AI模型英特尔Ultra处理器上得以优化运行

    近日,英特尔宣布全新英特尔 Ultra处理器
    的头像 发表于 05-11 09:31 875次阅读

    英特尔Ultra处理器突破500个AI模型优化

    英特尔最新推出的英特尔® Ultra处理器
    的头像 发表于 05-09 11:18 878次阅读

    英特尔二季度对Ultra处理器供应受限

    英特尔首席执行官帕特·基辛格最新的财报电话会议透露,受晶圆级封装产能限制,二季度Ultra
    的头像 发表于 05-06 11:04 758次阅读

    英特尔推出面向边缘市场的 / Ultra 处理器PS系列

    其中,Ultra处理器PS系列即为Meteor Lake PS,提供45瓦 and 15瓦两个功率选项。主打款为英特尔
    的头像 发表于 04-09 16:45 1149次阅读