国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

在英特爾AI開發(fā)板上用OpenVINO NNCF優(yōu)化YOLOv7,2.15倍性能提升

這篇具有很好參考價(jià)值的文章主要介紹了在英特爾AI開發(fā)板上用OpenVINO NNCF優(yōu)化YOLOv7,2.15倍性能提升。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

作者:康瑤明 英特爾邊緣計(jì)算創(chuàng)新大使

YOLO代表“You Only Look Once”,它是一種流行的實(shí)時(shí)物體檢測算法系列。最初的YOLO物體檢測器于2016年首次發(fā)布。從那時(shí)起,YOLO的不同版本和變體被提出,每個(gè)版本和變體都顯著提高了性能和效率。YOLO算法作為one-stage目標(biāo)檢測算法最典型的代表,其基于深度神經(jīng)網(wǎng)絡(luò)進(jìn)行對(duì)象的識(shí)別和定位,運(yùn)行速度很快,可以用于實(shí)時(shí)系統(tǒng)。YOLOv7 是 YOLO 模型系列的下一個(gè)演進(jìn)階段,在不增加推理成本的情況下,大大提高了實(shí)時(shí)目標(biāo)檢測精度。

yolov8綜合工具,開發(fā)者分享,OpenVINO,英特爾開發(fā)套件,人工智能,openvino,YOLO

項(xiàng)目使用的代碼在github開源,來源

github (GitHub - openvinotoolkit/openvino: OpenVINO? is an open-source toolkit for optimizing and deploying AI inference_notebooks/tree/main/notebooks/226-yolov7-optimization)[]

1. 準(zhǔn)備模型與環(huán)境

1.1安裝openvino以及nncf包,并且clone yolov7的倉庫

%pip install -q "openvino>=2023.2.0" "nncf>=2.5.0"

import sys

from pathlib import Path

sys.path.append("../utils")

from notebook_utils import download_file

# Clone YOLOv7 repo

if not Path('yolov7').exists():

? ? !git clone https://github.com/WongKinYiu/yolov7

%cd yolov7

下圖為代碼執(zhí)行后的輸出

yolov8綜合工具,開發(fā)者分享,OpenVINO,英特爾開發(fā)套件,人工智能,openvino,YOLO

1.2 下載預(yù)訓(xùn)練模型

# Download pre-trained model weights

MODEL_LINK = "https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-tiny.pt"

DATA_DIR = Path("data/")

MODEL_DIR = Path("model/")

MODEL_DIR.mkdir(exist_ok=True)

DATA_DIR.mkdir(exist_ok=True)



download_file(MODEL_LINK, directory=MODEL_DIR, show_progress=True)

下圖為代碼執(zhí)行后的輸出

yolov8綜合工具,開發(fā)者分享,OpenVINO,英特爾開發(fā)套件,人工智能,openvino,YOLO

2. 使用Pytorch原生推理檢查模型

調(diào)用推理腳本`ignore detect.py`,輸入模型相關(guān)信息和推理圖片執(zhí)行推理

!python -W ignore detect.py --weights model/yolov7-tiny.pt --conf 0.25 --img-size 640 --source inference/images/horses.jpg

下圖為代碼執(zhí)行后的輸出,執(zhí)行完成后可以看到輸出圖像尺寸信息以及torch版本,推理設(shè)備為CPU。推理結(jié)果可以看到識(shí)別到5匹馬,推理耗時(shí)、NMS耗時(shí),結(jié)果圖片保存路徑等信息。

yolov8綜合工具,開發(fā)者分享,OpenVINO,英特爾開發(fā)套件,人工智能,openvino,YOLO

打開圖片查看結(jié)果

yolov8綜合工具,開發(fā)者分享,OpenVINO,英特爾開發(fā)套件,人工智能,openvino,YOLO

3.導(dǎo)出模型為onnx格式

3.1 查看`export.py`腳本參數(shù)說明

yolov8綜合工具,開發(fā)者分享,OpenVINO,英特爾開發(fā)套件,人工智能,openvino,YOLO

3.2 輸入模型權(quán)重文件路徑和要導(dǎo)出Detect()層網(wǎng)格,執(zhí)行腳本生成onnx模型文件并保存

需要說明的是,將整個(gè)后處理包含到模型中有助于獲得更高性能的結(jié)果,但同時(shí)會(huì)降低模型的靈活性,并且不能保證完全準(zhǔn)確,這就是為什么我們只添加 --grid 參數(shù)來保留原始 pytorch 模型結(jié)果格式的原因。

yolov8綜合工具,開發(fā)者分享,OpenVINO,英特爾開發(fā)套件,人工智能,openvino,YOLO

4.轉(zhuǎn)換onnx格式為openvino支持的IR文件

雖然 OpenVINO Runtime直接支持 ONNX 模型,但將它們轉(zhuǎn)換為 IR 格式可以利用 OpenVINO 模型轉(zhuǎn)換的一些API特性。調(diào)用模型轉(zhuǎn)換的python API 的 `ov.convert_model`可以轉(zhuǎn)換模型。該API返回 OpenVINO 模型類的實(shí)例,該實(shí)例可在 Python 接口中使用。我們可以使用 `ov.save_model` API 接口以 OpenVINO IR 格式保存在設(shè)備上,以備使用。

import openvino as ov



model = ov.convert_model('model/yolov7-tiny.onnx')

# serialize model for saving IR

ov.save_model(model, 'model/yolov7-tiny.xml')

5. 驗(yàn)證模型推理

`detect.py` 推理腳本包括預(yù)處理步驟、OpenVINO模型的推理以及結(jié)果后處理以獲得邊界框等功能。

模型需要RGB通道格式的圖像,并在 [0, 1] 范圍內(nèi)歸一化。要調(diào)整圖像大小以適合模型大小,請(qǐng)使用`letterbox`方法調(diào)整,其中保留了寬度和高度的縱橫比。為了保持特定的形狀,預(yù)處理會(huì)自動(dòng)啟用填充。

5.1 預(yù)處理階段

對(duì)圖像進(jìn)行預(yù)處理,以 `np.array` 格式獲取圖像,使用`letterbox`方法將其調(diào)整為特定大小,將色彩空間從 BGR(OpenCV 中的默認(rèn)值)轉(zhuǎn)換為 RGB,并將數(shù)據(jù)布局從 HWC 更改為 CHW

def preprocess_image(img0: np.ndarray):

? ? # resize

? ? img = letterbox(img0, auto=False)[0]

? ?

? ? # Convert

? ? img = img.transpose(2, 0, 1)

? ? img = np.ascontiguousarray(img)

? ? return img, img0

將預(yù)處理后的圖像轉(zhuǎn)換為張量格式。以 np.array 格式獲取圖像,其中 unit8 數(shù)據(jù)在 [0, 255] 范圍內(nèi),并將其轉(zhuǎn)換為浮點(diǎn)數(shù)據(jù)在 [0, 1] 范圍內(nèi)的 torch.Tensor 對(duì)象

def prepare_input_tensor(image: np.ndarray):

? ? input_tensor = image.astype(np.float32) ?# uint8 to fp16/32

? ? input_tensor /= 255.0 ?# 0 - 255 to 0.0 - 1.0

? ?

? ? if input_tensor.ndim == 3:

? ? ? ? input_tensor = np.expand_dims(input_tensor, 0)

5.2 后處理階段

模型檢測功能核心代碼的介紹,使用 NMS 讀取圖像、對(duì)其進(jìn)行預(yù)處理、運(yùn)行模型推理和后處理結(jié)果。

? ?參數(shù): ? ?

? ? ? ? model(Model):OpenVINO編譯的模型。

? ? ? ? image_path (Path):輸入圖片路徑。

? ? ? ? conf_thres(浮點(diǎn)數(shù),*可選*,0.25):對(duì)象過濾的最小置信度

? ? ? ? iou_thres(float,*可選*,0.45):在 NMS 中重新復(fù)制對(duì)象的最小重疊分?jǐn)?shù)

? ? ? ? classes (List[int], *optional*, None):用于預(yù)測過濾的標(biāo)簽,如果未提供,則將使用所有預(yù)測標(biāo)簽

? ? ? ? agnostic_nms (bool, *optiona*, False):是否應(yīng)用與類無關(guān)的 NMS 方法

? ? 返回:

? ? ? ?pred (List):具有 (n,6) 形狀的檢測列表,其中 n - 格式為 [x1, y1, x2, y2, score, label] 的檢測框數(shù)

? ? ? ?orig_img (np.ndarray):預(yù)處理前的圖像,可用于結(jié)果可視化

? ? ? ?input_shape (Tuple[int]):模型輸入tensor的形狀,可用于輸出分辨率

def detect(model: ov.Model, image_path: Path, conf_thres: float = 0.25, iou_thres: float = 0.45, classes: List[int] = None, agnostic_nms: bool = False):

? ? output_blob = model.output(0)

? ? img = np.array(Image.open(image_path))

? ? preprocessed_img, orig_img = preprocess_image(img)

? ? input_tensor = prepare_input_tensor(preprocessed_img)

? ? predictions = torch.from_numpy(model(input_tensor)[output_blob])

? ? pred = non_max_suppression(predictions, conf_thres, iou_thres, classes=classes, agnostic=agnostic_nms)

? ? return pred, orig_img, input_tensor.shape

圖像上繪制預(yù)測邊界框的核心代碼實(shí)現(xiàn),

?參數(shù):

? ? ? ? predictions (np.ndarray):形狀為 (n,6) 的檢測列表,其中 n - 檢測到的框數(shù),格式為 [x1, y1, x2, y2, score, label]

? ? ? ? image (np.ndarray):用于框可視化的圖像

? ? ? ? names (List[str]): 數(shù)據(jù)集中每個(gè)類的名稱列表

? ? ? ? colors (Dict[str, int]): 類名和繪圖顏色之間的映射

? ? 返回:

? ? ? ? image (np.ndarray):框可視化結(jié)果

def draw_boxes(predictions: np.ndarray, input_shape: Tuple[int], image: np.ndarray, names: List[str], colors: Dict[str, int]):

? ? if not len(predictions):

? ? ? ? return image

? ? # Rescale boxes from input size to original image size

? ? predictions[:, :4] = scale_coords(input_shape[2:], predictions[:, :4], image.shape).round()



? ? # Write results

? ? for *xyxy, conf, cls in reversed(predictions):

? ? ? ? label = f'{names[int(cls)]} {conf:.2f}'

? ? ? ? plot_one_box(xyxy, image, label=label, color=colors[names[int(cls)]], line_thickness=1)

6. 選擇設(shè)備并推理

compiled_model = core.compile_model(model, device.value)

boxes, image, input_shape = detect(compiled_model, 'inference/images/horses.jpg')

image_with_boxes = draw_boxes(boxes[0], input_shape, image, NAMES, COLORS)

# visualize results

Image.fromarray(image_with_boxes)

單圖片推理的可視化結(jié)果如下圖所示

yolov8綜合工具,開發(fā)者分享,OpenVINO,英特爾開發(fā)套件,人工智能,openvino,YOLO

7. 驗(yàn)證模型準(zhǔn)確性

為了評(píng)估模型的準(zhǔn)確性,需要下載coco數(shù)據(jù)集以及注釋。處理驗(yàn)證數(shù)據(jù)集并完成評(píng)估。評(píng)估完成后,下圖可以看到準(zhǔn)確度是符合要求的

yolov8綜合工具,開發(fā)者分享,OpenVINO,英特爾開發(fā)套件,人工智能,openvino,YOLO

8. 使用 NNCF 訓(xùn)練后量化 API 優(yōu)化模型

NNCF 是 OpenVINO 中的神經(jīng)網(wǎng)絡(luò)推理優(yōu)化提供了一套高級(jí)算法,精度下降最小。我們將在訓(xùn)練后模式下使用 8-bit量化來優(yōu)化 YOLOv7。優(yōu)化過程包含以下步驟:1)創(chuàng)建用于量化的數(shù)據(jù)集。2)運(yùn)行 nncf.quantize 以獲取優(yōu)化的模型。3)使用 openvino.runtime.serialize 函數(shù)序列化 OpenVINO IR 模型。

量化變換函數(shù),從數(shù)據(jù)加載器項(xiàng)中提取和預(yù)處理輸入數(shù)據(jù)以進(jìn)行量化。量化完成后可以驗(yàn)證量化模型推理和驗(yàn)證量化模型的準(zhǔn)確性,看是否符合要求。

import nncf



def transform_fn(data_item):

? ? img = data_item[0].numpy()

? ? input_tensor = prepare_input_tensor(img)

? ? return input_tensor



quantization_dataset = nncf.Dataset(dataloader, transform_fn)

nncf.quantize 函數(shù)提供模型量化的接口。它需要OpenVINO模型和量化數(shù)據(jù)集的實(shí)例。

quantized_model = nncf.quantize(model, quantization_dataset, preset=nncf.QuantizationPreset.MIXED)



ov.save_model(quantized_model, 'model/yolov7-tiny_int8.xml')

9. 比較原始模型和量化后模型的性能

量化完成后,我們希望使用 OpenVINO 基準(zhǔn)測試工具測量 FP32 和 INT8 模型的推理性能,從而清楚NNCF帶來的優(yōu)化提升。

下圖為在AI愛克斯開發(fā)板上FP32格式的模型推理,cpu型號(hào)為n5105,可以看到吞吐為2.27fps.

yolov8綜合工具,開發(fā)者分享,OpenVINO,英特爾開發(fā)套件,人工智能,openvino,YOLO

下圖為量化后 INT8 格式的模型推理,可以看到吞吐為4.89fps.

yolov8綜合工具,開發(fā)者分享,OpenVINO,英特爾開發(fā)套件,人工智能,openvino,YOLO

總結(jié):

FP32格式的模型推理AI愛克斯開發(fā)板上CPU吞吐為2.27fps,量化后 INT8 格式為4.89fps,由此說明了量化的后性能提升很明顯,提升至2.15倍,在工程和學(xué)習(xí)中推薦使用NNCF等OpenVINO工具來優(yōu)化模型,從而在不損失精度的前提下提高推理性能,更好的服務(wù)于場景使用。文章來源地址http://www.zghlxwxcb.cn/news/detail-820512.html

到了這里,關(guān)于在英特爾AI開發(fā)板上用OpenVINO NNCF優(yōu)化YOLOv7,2.15倍性能提升的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于英特爾? Gaudi? 2 AI 加速器的文本生成流水線

    隨著生成式人工智能 (Generative AI,GenAI) 革命的全面推進(jìn),使用 Llama 2 等開源 transformer 模型生成文本已成為新風(fēng)尚。人工智能愛好者及開發(fā)人員正在尋求利用此類模型的生成能力來賦能不同的場景及應(yīng)用。本文展示了如何基于 Optimum Habana 以及我們實(shí)現(xiàn)的流水線類輕松使用 Ll

    2024年03月14日
    瀏覽(21)
  • 英特爾和 ARM 將合作開發(fā)移動(dòng)芯片技術(shù),如何看待雙方合作?

    英特爾和 ARM 將合作開發(fā)移動(dòng)芯片技術(shù),如何看待雙方合作?

    最近市場傳出Arm要自產(chǎn)芯片,供智能手機(jī)與筆電等使用后,外媒指Arm自產(chǎn)芯片將由英特爾晶圓代工部門打造,變成英特爾晶圓代工客戶。將采用英特爾18A工藝,可以對(duì)標(biāo)臺(tái)積電的2納米。 最近很多小伙伴找我,說想要一些ARM的資料,然后我根據(jù)自己從業(yè)十年經(jīng)驗(yàn),熬夜搞了幾

    2024年01月17日
    瀏覽(23)
  • 使用FastDeploy在英特爾CPU和獨(dú)立顯卡上端到端高效部署AI模型

    使用FastDeploy在英特爾CPU和獨(dú)立顯卡上端到端高效部署AI模型

    目錄 1.1?產(chǎn)業(yè)實(shí)踐中部署AI模型的痛點(diǎn) 1.1.1??部署模型的典型流程 1.1.2 端到端的AI性能 1.1.3 部署模型的難點(diǎn)和痛點(diǎn) 1.2 FastDeploy簡介 1.3 英特爾獨(dú)立顯卡簡介 1.4 使用FastDeploy在英特爾CPU和獨(dú)立顯卡上部署模型的步驟 1.4.1 搭建FastDeploy開發(fā)環(huán)境 1.4.2 下載模型和測試圖處 1.4.3 三行代

    2024年02月01日
    瀏覽(32)
  • Ubuntu Linux 22.04 快速安裝英特爾顯卡驅(qū)動(dòng)(含Edge AI 包)

    Ubuntu Linux 22.04 快速安裝英特爾顯卡驅(qū)動(dòng)(含Edge AI 包)

    英特爾 EIV (Edge insight Vision)具有一組預(yù)集成組件,專為邊緣應(yīng)用的計(jì)算機(jī)視覺和深度學(xué)習(xí)推理而設(shè)計(jì),并針對(duì)英特爾?架構(gòu)進(jìn)行了優(yōu)化。它作為容器化架構(gòu)或獨(dú)立運(yùn)行時(shí)實(shí)現(xiàn)。 此軟件包包含用于在英特爾處理器和英特爾顯卡設(shè)備上安裝英特爾?顯卡驅(qū)動(dòng)程序和為 OpenVINO? 推理

    2024年02月08日
    瀏覽(53)
  • 英特爾集成顯卡+ChatGLM3大語言模型的企業(yè)本地AI知識(shí)庫部署

    英特爾集成顯卡+ChatGLM3大語言模型的企業(yè)本地AI知識(shí)庫部署

    作者: 英特爾創(chuàng)新大使 劉力 英特爾開發(fā)者技術(shù)推廣經(jīng)理 李翊瑋 ? ??在當(dāng)今的企業(yè)環(huán)境中,信息的快速獲取和處理對(duì)于企業(yè)的成功至關(guān)重要。為了滿足這一需求,我們可以將RAG技術(shù)與企業(yè)本地知識(shí)庫相結(jié)合,以提供實(shí)時(shí)的、自動(dòng)生成的信息處理和決策支持。這將有助于企業(yè)

    2024年04月26日
    瀏覽(34)
  • 【文末附gpt升級(jí)4.0方案】英特爾AI PC的局限性是什么

    【文末附gpt升級(jí)4.0方案】英特爾AI PC的局限性是什么

    英特爾AI PC的推出無疑為AIGC(生成式人工智能)的未來發(fā)展開啟了一扇新的大門。這種新型的計(jì)算機(jī)平臺(tái),通過集成先進(jìn)的硬件技術(shù)和優(yōu)化的軟件算法,為AIGC提供了更為強(qiáng)大和高效的支持,進(jìn)一步推動(dòng)了人工智能的落地和應(yīng)用。 首先,英特爾AI PC的出色性能為AIGC提供了堅(jiān)實(shí)

    2024年04月15日
    瀏覽(45)
  • 如何在Linux系統(tǒng)下安裝英特爾 Arc系列獨(dú)立顯卡驅(qū)動(dòng)以及進(jìn)行AI推理性能測試

    如何在Linux系統(tǒng)下安裝英特爾 Arc系列獨(dú)立顯卡驅(qū)動(dòng)以及進(jìn)行AI推理性能測試

    作者:??周兆靖 ????????目前,英特爾?推出了包括了Arc?家族A770,A750在內(nèi)的多個(gè)桌面版本的獨(dú)立顯卡(discrete Graphic Processing Unit,簡稱dGPU)供玩家與開發(fā)者進(jìn)行選擇。鑒于很多消費(fèi)者都是初次體驗(yàn)Intel?的獨(dú)立顯卡,在Linux * 系統(tǒng)下對(duì)于顯卡驅(qū)動(dòng)的下載與安裝并不熟悉,

    2024年02月05日
    瀏覽(57)
  • 微軟首批AI電腦來了!一鍵Copilot帶飛,英特爾酷睿Ultra加持,零售店買不到

    微軟首批AI電腦來了!一鍵Copilot帶飛,英特爾酷睿Ultra加持,零售店買不到

    Surface Pro 10商用版和Surface Laptop 6商用版均起售1199美元。前者配酷睿Ultra U系列芯片,新增AI增強(qiáng)型攝像頭,PC攝像頭首次具有114度超寬視野,改進(jìn)后13英寸LCD顯示屏亮度提高33%;后者攝像頭無超廣角,但搭載的H系列芯片比U系列更強(qiáng)大,大尺寸15英寸版有兩個(gè)USB-C接口。 微軟首次

    2024年04月11日
    瀏覽(18)
  • 越小越好: Q8-Chat,在英特爾至強(qiáng) CPU 上體驗(yàn)高效的生成式 AI

    大語言模型 (LLM) 正在席卷整個(gè)機(jī)器學(xué)習(xí)世界。得益于其 transformer 架構(gòu),LLM 擁有從大量非結(jié)構(gòu)化數(shù)據(jù) (如文本、圖像、視頻或音頻) 中學(xué)習(xí)的不可思議的能力。它們?cè)?多種任務(wù)類型 上表現(xiàn)非常出色,無論是文本分類之類的抽取任務(wù) (extractive task) 還是文本摘要和文生圖像之類的

    2024年02月06日
    瀏覽(20)
  • MCR內(nèi)存(Multiplexer Combined Ranks)是一種新型內(nèi)存技術(shù),由英特爾、瑞薩電子和SK海力士聯(lián)合開發(fā)

    概括 MCR內(nèi)存(Multiplexer Combined Ranks)是一種新型內(nèi)存技術(shù),由英特爾、瑞薩電子和SK海力士聯(lián)合開發(fā)。它在DDR5內(nèi)存的基礎(chǔ)上,將內(nèi)存?zhèn)鬏斔俣仍俅翁岣咭槐叮壳耙堰_(dá)8000MT/s(未超頻)。 MCR內(nèi)存的核心技術(shù)是將多個(gè)DRAM內(nèi)存模塊組合在一起,并使用專門的控制器來管理它們之間

    2024年02月10日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包