0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在英特爾開發(fā)者套件上用OpenVINO? 2023.0加速YOLOv8-Pose姿態(tài)估計(jì)模型

英特爾物聯(lián)網(wǎng) ? 來源:英特爾物聯(lián)網(wǎng) ? 2023-06-15 17:41 ? 次閱讀

01

簡介

《在英特爾開發(fā)者套件上用OpenVINO加速YOLOv8-seg實(shí)例分割模型》介紹了在英特爾者開發(fā)套件上使用 OpenVINO開發(fā)套件部署并測評(píng) YOLOv8-Seg 的實(shí)例分割模型,本文將介紹在英特爾開發(fā)者套件上使用 OpenVINO2023.0 加速 YOLOv8-Pose 姿態(tài)估計(jì)(Pose Estimation)模型。

abe16f90-0b5e-11ee-962d-dac502259ad0.png

請(qǐng)先下載本文的范例代碼倉,并搭建好 YOLOv8 的OpenVINO 推理程序開發(fā)環(huán)境:

git clone

https://gitee.com/ppovnuc/yolov8_openvino.git

02

導(dǎo)出 YOLOv8-Pose 姿態(tài)估計(jì) OpenVINO IR 模型

YOLOv8-Pose 的姿態(tài)估計(jì)模型有5種,在 COCOKeypoints 數(shù)據(jù)集完成訓(xùn)練,如下表所示。

COCOKeypoints 數(shù)據(jù)集請(qǐng)見:

http://cocodataset.org/

ac0375b8-0b5e-11ee-962d-dac502259ad0.png

首先使用命令:

 yolo export model=yolov8n-pose.pt format=onnx

向右滑動(dòng)查看完整代碼

完成 yolov8n-pose.onnx 模型導(dǎo)出,如下圖所示:

ac15fda0-0b5e-11ee-962d-dac502259ad0.png

然后使用命令:

mo -m yolov8n-pose.onnx --compress_to_fp16

向右滑動(dòng)查看完整代碼

優(yōu)化并導(dǎo)出 FP16 精度的 OpenVINO IR 格式模型,如下圖所示:

ac3a881e-0b5e-11ee-962d-dac502259ad0.png

03

用 benchmark_app 測試 yolov8 姿態(tài)估計(jì)模型的推理計(jì)算性能

benchmark_app 是 OpenVINO工具套件自帶的 AI 模型推理計(jì)算性能測試工具,可以指定在不同的計(jì)算設(shè)備上,在同步或異步模式下,測試出不帶前后處理的純 AI 模型推理計(jì)算性能。

使用命令:

benchmark_app -m yolov8n-pose.xml -d GPU

向右滑動(dòng)查看完整代碼

獲得 yolov8n-pose.xml 模型在英特爾開發(fā)者套件的集成顯卡上的異步推理計(jì)算性能,如下圖所示:

ac571092-0b5e-11ee-962d-dac502259ad0.png

04

使用 OpenVINO Python API編寫 YOLOv8-Pose 姿態(tài)估計(jì)模型推理程序

用 Netron 打開 yolov8n-seg.onnx 可以看到模型的輸入和輸出:

輸入節(jié)點(diǎn)名字:“images”;數(shù)據(jù):float32[1,3,640,640]

輸出節(jié)點(diǎn)1的名字:“output0”;數(shù)據(jù):float32 [1,56,8400],其中“8400”是指 YOLOv8 的3個(gè)檢測頭在 imgsz=640 時(shí),有640/8=80,640/16=40,640/32=20,80x80+40x40+20x20=8400個(gè)輸出單元格;“56”指 “Person” 類的中心坐標(biāo) cx,cy,w,h+“Person” 類的置信分?jǐn)?shù)+“Person” 類的17個(gè)關(guān)鍵點(diǎn)([17,3]) = 56。

ac710b50-0b5e-11ee-962d-dac502259ad0.png

基于 OpenVINO Python API 的 YOLOv8 實(shí)例分割模型范例程序 yolov8_pose_ov_sync_infer_demo.py 的核心源代碼,如下所示:

# 實(shí)例化Core對(duì)象
core = Core() 
# 載入并編譯模型
net = core.compile_model(f'{MODEL_NAME}.xml', device_name="GPU")
# 獲得模型輸出節(jié)點(diǎn)
output_node = net.outputs[0] 
ir = net.create_infer_request()
cap = cv2.VideoCapture("store-aisle-detection.mp4")
while True:
  start = time.time()
  ret, frame = cap.read()
  if not ret:
    break
  [height, width, _] = frame.shape
  length = max((height, width))
  image = np.zeros((length, length, 3), np.uint8)
  image[0:height, 0:width] = frame
  scale = length / 640
  blob = cv2.dnn.blobFromImage(image, scalefactor=1 / 255, size=(640, 640), swapRB=True)
  # 基于OpenVINO實(shí)現(xiàn)推理計(jì)算
  outputs = ir.infer(blob)[output_node]
  outputs = np.array([cv2.transpose(outputs[0])])
  rows = outputs.shape[1]
  # Postprocess
  boxes = []
  scores = []
  preds_kpts = []
  for i in range(rows):
    classes_scores = outputs[0][i][4]
    key_points = outputs[0][i][5:]
    if classes_scores >= 0.5:
      box = [
        outputs[0][i][0] - (0.5 * outputs[0][i][2]), outputs[0][i][1] - (0.5 * outputs[0][i][3]),
        outputs[0][i][2], outputs[0][i][3]]
      boxes.append(box)
      scores.append(classes_scores)
      preds_kpts.append(key_points)
  result_boxes = cv2.dnn.NMSBoxes(boxes, scores, 0.25, 0.45, 0.5)
  detections = []
  for i in range(len(result_boxes)):
    index = result_boxes[i]
    box = boxes[index]
    pred_kpts = preds_kpts[index]
    detection = {
      'class_id': 0,
      'class_name': 'person',
      'confidence': scores[index],
      'box': box,
      'scale': scale}
    detections.append(detection)
    print(box[0] * scale, box[1] * scale, scale)
    draw_bounding_box(frame, 0, scores[index], round(box[0] * scale), round(box[1] * scale),
             round((box[0] + box[2]) * scale), round((box[1] + box[3]) * scale))
    draw_key_points(frame, pred_kpts, 0.2, scale)

向右滑動(dòng)查看完整代碼

運(yùn)行結(jié)果,如下圖所示:

ac7d35c4-0b5e-11ee-962d-dac502259ad0.png

05

結(jié)論

英特爾開發(fā)者套件借助 N5105 處理器的集成顯卡(24個(gè)執(zhí)行單元)和 OpenVINO2023.0 ,可以在 YOLOv8-Pose 的姿態(tài)估計(jì)模型上獲得相當(dāng)不錯(cuò)的性能。通過異步處理和 AsyncInferQueue ,還能進(jìn)一步提升計(jì)算設(shè)備的利用率,提高 AI 推理程序的吞吐量。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 英特爾
    +關(guān)注

    關(guān)注

    60

    文章

    9749

    瀏覽量

    170665
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    28877

    瀏覽量

    266249

原文標(biāo)題:在英特爾開發(fā)者套件上用OpenVINO? 2023.0加速YOLOv8-Pose姿態(tài)估計(jì)模型 | 開發(fā)者實(shí)戰(zhàn)

文章出處:【微信號(hào):英特爾物聯(lián)網(wǎng),微信公眾號(hào):英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于C#和OpenVINO?英特爾獨(dú)立顯卡上部署PP-TinyPose模型

    OpenVINO,將 PP-TinyPose 模型部署英特爾獨(dú)立顯卡。 1.1 PP-TinyPose
    的頭像 發(fā)表于 11-18 18:27 ?2317次閱讀

    SDK3.0中yolov8-poseonnx轉(zhuǎn)bmodel自動(dòng)killed如何解決?

    算豐SDK3.0轉(zhuǎn)yolov8-pose,先轉(zhuǎn)onnx再轉(zhuǎn)bmodel出現(xiàn)了點(diǎn)問題,大佬們有誰轉(zhuǎn)過不,是有算子不支持需要自己算子開發(fā)嗎?
    發(fā)表于 09-18 06:50

    英特爾推出了OpenVINO

    接受外媒ZDNet采訪的時(shí)候,英特爾高管Adam Burns表示:“構(gòu)建智能的不只是一種架構(gòu)?!?b class='flag-5'>OpenVINO提供了一組已經(jīng)優(yōu)化的能力和runtime引擎,能夠允許 開發(fā)
    的頭像 發(fā)表于 04-13 14:18 ?2877次閱讀

    AI愛克斯開發(fā)OpenVINO?加速YOLOv8分類模型

    本系列文章將在 AI 愛克斯開發(fā)使用 OpenVINO 開發(fā)套件依次部署并測評(píng) YOLOv8 的分類
    的頭像 發(fā)表于 05-05 11:47 ?910次閱讀
    <b class='flag-5'>在</b>AI愛克斯<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>上</b><b class='flag-5'>用</b><b class='flag-5'>OpenVINO</b>?<b class='flag-5'>加速</b><b class='flag-5'>YOLOv8</b>分類<b class='flag-5'>模型</b>

    AI愛克斯開發(fā)OpenVINO?加速YOLOv8目標(biāo)檢測模型

    AI 愛克斯開發(fā) OpenVINO 加速 YOL
    的頭像 發(fā)表于 05-12 09:08 ?1155次閱讀
    <b class='flag-5'>在</b>AI愛克斯<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>上</b><b class='flag-5'>用</b><b class='flag-5'>OpenVINO</b>?<b class='flag-5'>加速</b><b class='flag-5'>YOLOv8</b>目標(biāo)檢測<b class='flag-5'>模型</b>

    AI愛克斯開發(fā)使用OpenVINO加速YOLOv8目標(biāo)檢測模型

    AI愛克斯開發(fā)OpenVINO加速YOLOv8
    的頭像 發(fā)表于 05-26 11:03 ?1078次閱讀
    AI愛克斯<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>上</b>使用<b class='flag-5'>OpenVINO</b><b class='flag-5'>加速</b><b class='flag-5'>YOLOv8</b>目標(biāo)檢測<b class='flag-5'>模型</b>

    AI愛克斯開發(fā)OpenVINO?加速YOLOv8-seg實(shí)例分割模型

    AI 愛克斯開發(fā) OpenVINO 加速 YOL
    的頭像 發(fā)表于 06-05 11:52 ?857次閱讀
    <b class='flag-5'>在</b>AI愛克斯<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>上</b><b class='flag-5'>用</b><b class='flag-5'>OpenVINO</b>?<b class='flag-5'>加速</b><b class='flag-5'>YOLOv8</b>-seg實(shí)例分割<b class='flag-5'>模型</b>

    OpenVINO? C++ API編寫YOLOv8-Seg實(shí)例分割模型推理程序

    本文章將介紹使用 OpenVINO 2023.0 C++ API 開發(fā)YOLOv8-Seg 實(shí)例分割(Instance Segmentation)
    的頭像 發(fā)表于 06-25 16:09 ?1291次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>OpenVINO</b>? C++ API編寫<b class='flag-5'>YOLOv8</b>-Seg實(shí)例分割<b class='flag-5'>模型</b>推理程序

    AI愛克斯開發(fā)OpenVINO?加速YOLOv8-seg實(shí)例分割模型

    AI 愛克斯開發(fā) OpenVINO 加速 YOL
    的頭像 發(fā)表于 06-30 10:43 ?770次閱讀
    <b class='flag-5'>在</b>AI愛克斯<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>上</b><b class='flag-5'>用</b><b class='flag-5'>OpenVINO</b>?<b class='flag-5'>加速</b><b class='flag-5'>YOLOv8</b>-seg實(shí)例分割<b class='flag-5'>模型</b>

    使用英特爾開發(fā)者套件搭建RTMP流媒體服務(wù)器

    本文將會(huì)介紹如何使用英特爾 開發(fā)者套件——愛克斯開發(fā)板快速搭建 RTMP 流媒體服務(wù)器,并利用 FFmpeg* 實(shí)現(xiàn)視頻推流的功能。由于 FFmpeg 后端支持
    的頭像 發(fā)表于 07-18 15:58 ?646次閱讀
    使用<b class='flag-5'>英特爾</b><b class='flag-5'>開發(fā)者</b><b class='flag-5'>套件</b>搭建RTMP流媒體服務(wù)器

    使用OpenVINO優(yōu)化并部署訓(xùn)練好的YOLOv7模型

    英特爾銳炫 顯卡+ oneAPI 和 OpenVINO 實(shí)現(xiàn)英特爾 視頻 AI 計(jì)算盒訓(xùn)推一體-上篇》一文中,我們?cè)敿?xì)介紹基于英特爾 獨(dú)
    的頭像 發(fā)表于 08-25 11:08 ?1313次閱讀
    使用<b class='flag-5'>OpenVINO</b>優(yōu)化并部署訓(xùn)練好的<b class='flag-5'>YOLOv</b>7<b class='flag-5'>模型</b>

    基于OpenVINO英特爾開發(fā)套件實(shí)現(xiàn)眼部追蹤

    本文將以訓(xùn)練一個(gè)眼部追蹤 AI 小模型為背景,介紹從 Pytorch 自定義網(wǎng)絡(luò)模型,到使用 OpenVINO NNCF 量化工具優(yōu)化模型,并部署到
    的頭像 發(fā)表于 09-18 10:11 ?670次閱讀

    基于英特爾開發(fā)套件的AI字幕生成器設(shè)計(jì)

    市面上有很多自然語言處理模型,本文旨在幫助開發(fā)者快速將 OpenAI* 的熱門 NLP 模型 Whisper 部署至英特爾 開發(fā)套件愛克斯
    的頭像 發(fā)表于 09-27 16:59 ?780次閱讀
    基于<b class='flag-5'>英特爾</b><b class='flag-5'>開發(fā)套件</b>的AI字幕生成器設(shè)計(jì)

    基于英特爾哪吒開發(fā)者套件平臺(tái)來快速部署OpenVINO Java實(shí)戰(zhàn)

    OpenVINO 工具套件基于OneAPI開發(fā),可以加快高性能計(jì)算機(jī)視覺和深度學(xué)習(xí)應(yīng)用開發(fā)速度的工具套件,適用于從邊緣到云的各種
    的頭像 發(fā)表于 03-21 18:24 ?1285次閱讀
    基于<b class='flag-5'>英特爾</b>哪吒<b class='flag-5'>開發(fā)者</b><b class='flag-5'>套件</b>平臺(tái)來快速部署<b class='flag-5'>OpenVINO</b> Java實(shí)戰(zhàn)

    【轉(zhuǎn)載】英特爾開發(fā)套件“哪吒”快速部署YoloV8 on Java | 開發(fā)者實(shí)戰(zhàn)

    OpenVINO 工具套件基于OneAPI開發(fā),可以加快高性能計(jì)算機(jī)視覺和深度學(xué)習(xí)應(yīng)用開發(fā)速度的工具套件,適用于從邊緣到云的各種
    的頭像 發(fā)表于 03-23 08:05 ?279次閱讀
    【轉(zhuǎn)載】<b class='flag-5'>英特爾</b><b class='flag-5'>開發(fā)套件</b>“哪吒”快速部署<b class='flag-5'>YoloV8</b> on Java | <b class='flag-5'>開發(fā)者</b>實(shí)戰(zhàn)