Microsoft 和 NVIDIA 合作為 NVIDIA Jetson 平臺(tái)構(gòu)建、驗(yàn)證和發(fā)布 ONNX 運(yùn)行時(shí) Python 包和 Docker 容器,現(xiàn)已在Jetson Zoo上提供。
今天發(fā)布的適用于 Jetson 的 ONNX Runtime 將 ONNX Runtime 的性能和可移植性優(yōu)勢(shì)擴(kuò)展到了 Jetson 邊緣 AI 系統(tǒng),允許來自許多不同框架的模型以更少的功耗更快地運(yùn)行。您可以轉(zhuǎn)換來自 PyTorch、TensorFlow、Scikit-Learn 和其他模型的模型,以在具有 ONNX 運(yùn)行時(shí)的 Jetson 平臺(tái)上執(zhí)行推理。
ONNX 運(yùn)行時(shí)優(yōu)化模型以利用設(shè)備上的加速器。此功能使用相同的 API 表面為應(yīng)用程序代碼提供跨不同硬件配置的最佳推理吞吐量,以管理和控制推理會(huì)話。
ONNX Runtime 在數(shù)億臺(tái)設(shè)備上運(yùn)行,每天提供超過 200 億個(gè)推理請(qǐng)求。
Jetson 上 ONNX 運(yùn)行時(shí)的優(yōu)勢(shì)
Jetson System-on-Modules (SOM) 的全系列產(chǎn)品以小巧的外形提供云原生支持,具有無與倫比的性能和能效,有效地將現(xiàn)代 AI、深度學(xué)習(xí)和推理的能力引入嵌入式系統(tǒng)邊緣。Jetson 為一系列應(yīng)用提供支持,從人工智能驅(qū)動(dòng)的網(wǎng)絡(luò)錄像機(jī) (NVR) 和高精度制造中的自動(dòng)光學(xué)檢測(cè) (AOI) 到自主移動(dòng)機(jī)器人 (AMR)。
完整的 Jetson 系列由相同的軟件堆棧提供支持,并由 NVIDIA JetPack SDK 提供支持,其中包括板級(jí)支持包 (BSP)、Linux 操作系統(tǒng)和用于端到端 AI 管道加速的用戶級(jí)庫:
CUDA
cudDNN
用于加速 AI 推理的 TensorRT
用于加速計(jì)算的 cuBlas、cuFFT 等
用于計(jì)算機(jī)視覺和圖像處理的 Visionworks、OpenCV 和 VPI
用于相機(jī) ISP 處理、多媒體和傳感器處理的庫
此 ONNX 運(yùn)行時(shí)包利用 Jetson 邊緣 AI 平臺(tái)中的集成 GPU,使用 CUDA 和 cuDNN 庫為 ONNX 模型提供加速推理。您還可以通過從源代碼構(gòu)建 Python 包來將 ONNX 運(yùn)行時(shí)與 TensorRT 庫一起使用。
專注于開發(fā)者
此版本為您在 Jetson 平臺(tái)上使用 ONNX 運(yùn)行時(shí)提供了一條簡(jiǎn)單的集成路徑。您可以在應(yīng)用程序代碼中集成 ONNX 運(yùn)行時(shí),以便在邊緣設(shè)備上運(yùn)行 AI 應(yīng)用程序的推理。
ML 開發(fā)人員和 IoT 解決方案制造商可以使用預(yù)構(gòu)建的 Docker 映像在邊緣部署 AI 應(yīng)用程序或使用獨(dú)立的 Python 包。Jetson Zoo包含指向 ONNX 運(yùn)行時(shí)包和示例的指針以供入門。
Microsoft Container Registry 中提供了 Jetpack4.4 上 ONNX Runtime 的 Docker 映像:
docker pull mcr.microsoft.com/azureml/onnxruntime:v.1.4.0-jetpack4.4-l4t-base-r32.4.3
或者,要直接在您的應(yīng)用程序中使用Python 包,請(qǐng)下載并將其安裝在您的 Jetson SOM 上:
wget https://nvidia.box.com/shared/static/8sc6j25orjcpl6vhq3a4ir8v219fglng.whl \ -O onnxruntime_gpu-1.4.0-cp36-cp36m-linux_aarch64.whl pip3 安裝 onnxruntime_gpu-1.4.0-cp36-cp36m-linux_aarch64.whl
在 Jetson 上使用 ONNX 運(yùn)行時(shí)的推理應(yīng)用程序
圖 1. 邊緣的端到端 IoT 應(yīng)用程序。
在NVIDIA Jetson 平臺(tái)(ARM64 設(shè)備)上集成 Azure 與機(jī)器學(xué)習(xí)執(zhí)行教程向您展示了如何使用 TinyYOLO 模型、Azure IoT Edge 和 ONNX Runtime 在您的 Jetson 設(shè)備上開發(fā)對(duì)象檢測(cè)應(yīng)用程序。
在 Jetson 平臺(tái)上運(yùn)行的物聯(lián)網(wǎng)邊緣應(yīng)用程序在 Azure 云中有一個(gè)數(shù)字孿生。推理應(yīng)用程序代碼在由集成的 Jetson ONNX 運(yùn)行時(shí)基礎(chǔ)映像構(gòu)建的 Docker 容器中運(yùn)行。應(yīng)用程序從相機(jī)讀取幀,執(zhí)行對(duì)象檢測(cè),并將檢測(cè)到的對(duì)象結(jié)果發(fā)送到云存儲(chǔ)。從那里,它們可以被可視化和進(jìn)一步處理。
樣本異議檢測(cè)代碼
您可以使用為 Jetson 預(yù)先構(gòu)建的 ONNX Runtime Docker 映像開發(fā)自己的應(yīng)用程序。
使用 Jetson ONNX 運(yùn)行時(shí) Docker 映像創(chuàng)建 Dockerfile 并添加應(yīng)用程序依賴項(xiàng):
來自 mcr.microsoft.com/azureml/onnxruntime:v.1.4.0-jetpack4.4-l4t-base-r32.4.3 工作目錄。 運(yùn)行 apt-get update && apt-get install -y python3-pip libprotobuf-dev protobuf-compiler python-scipy RUN python3 -m pip install onnx==1.6.0 easydict matplotlib CMD ["/bin/bash"]
從 Dockerfile 構(gòu)建一個(gè)新鏡像:
docker build -t jetson-onnxruntime-yolov4 。
從 ONNX 模型動(dòng)物園下載 Yolov4 模型、對(duì)象檢測(cè)錨位置和類名:
wget https://github.com/onnx/models/blob/master/vision/object_detection_segmentation/yolov4/model/yolov4.onnx?raw=true -O yolov4.onnx wget https://raw.githubusercontent.com/onnx/models/master/vision/object_detection_segmentation/yolov4/dependencies/yolov4_anchors.txt wget https://raw.githubusercontent.com/natke/onnxruntime-jetson/master/coco.names
下載 Yolov4 對(duì)象檢測(cè)前后處理代碼:
wget https://raw.githubusercontent.com/natke/onnxruntime-jetson/master/preprocess_yolov4.py wget https://raw.githubusercontent.com/natke/onnxruntime-jetson/master/postprocess_yolov4.py
下載一個(gè)或多個(gè)測(cè)試圖像:
wget https://raw.githubusercontent.com/SoloSynth1/tensorflow-yolov4/master/data/kite.jpg
創(chuàng)建一個(gè)應(yīng)用程序 main.py 來預(yù)處理圖像,運(yùn)行對(duì)象檢測(cè),并將原始圖像與檢測(cè)到的對(duì)象一起保存:
導(dǎo)入簡(jiǎn)歷2 將 numpy 導(dǎo)入為 np 導(dǎo)入 preprocess_yolov4 作為 pre 導(dǎo)入 postprocess_yolov4 作為帖子 從 PIL 導(dǎo)入圖像 輸入大小 = 416 original_image = cv2.imread("kite.jpg") original_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB) original_image_size = original_image.shape[:2] image_data = pre.image_preprocess(np.copy(original_image), [input_size, input_size]) image_data = image_data[np.newaxis, ...].astype(np.float32) print("預(yù)處理后的圖像形狀:",image_data.shape) # 預(yù)處理輸入的形狀 將 onnxruntime 導(dǎo)入為 rt sess = rt.InferenceSession("yolov4.onnx") output_name = sess.get_outputs()[0].name input_name = sess.get_inputs()[0].name detections = sess.run([output_name], {input_name: image_data})[0] print("輸出形狀:", detections.shape) image = post.image_postprocess(original_image,input_size,檢測(cè)) 圖像 = Image.fromarray(圖像) image.save("風(fēng)箏與對(duì)象.jpg")
運(yùn)行應(yīng)用程序:
nvidia-docker run -it --rm -v $PWD:/workspace/ --workdir=/workspace/ jetson-onnxruntime-yolov4 python3 main.py
應(yīng)用程序讀取風(fēng)箏圖像并定位圖像中的所有對(duì)象。您可以嘗試使用不同的圖像并擴(kuò)展應(yīng)用程序以使用視頻流,如前面的 Azure IoT 邊緣應(yīng)用程序所示。
ONNX 運(yùn)行時(shí) v1.4 更新
此軟件包基于 2020 年 7 月發(fā)布的最新ONNX Runtime v1.4 版本。此最新版本提供了許多針對(duì)流行的 Transformer 模型(GPT2、BERT)的更新,包括性能優(yōu)化、新運(yùn)算符的改進(jìn)量化支持和優(yōu)化技術(shù)。該版本還通過新硬件加速器的預(yù)覽版擴(kuò)展了 ONNX 運(yùn)行時(shí)硬件生態(tài)系統(tǒng)的兼容性,包括對(duì) NVIDIA Jetpack 4.4 的 ARM-NN 和 Python 包的支持。
除了這些加速推理更新之外,1.4 版本繼續(xù)在加速訓(xùn)練前沿的先前版本中引入的創(chuàng)新基礎(chǔ)上構(gòu)建,包括通過使用 Huggingface GPT-2 模型的新樣本擴(kuò)展操作員支持。
關(guān)于作者
Natalie Kershaw 是 Microsoft 人工智能框架團(tuán)隊(duì)的項(xiàng)目經(jīng)理,專門研究開發(fā)人員體驗(yàn)。她在澳大利亞的阿德萊德大學(xué)和悉尼大學(xué)學(xué)習(xí)電氣和電子工程以及數(shù)學(xué)/創(chuàng)意寫作。在加入微軟之前,她曾在西雅圖的 RFID 芯片制造商 Impinj 工作。
Suhas Sheshadri 是 NVIDIA 的產(chǎn)品經(jīng)理,專注于 Jetson 軟件。他之前曾在 NVIDIA 的自動(dòng)駕駛團(tuán)隊(duì)工作,為 NVIDIA Drive 平臺(tái)優(yōu)化系統(tǒng)軟件。在空閑時(shí)間,Suhas 喜歡閱讀有關(guān)量子物理學(xué)和博弈論的書籍。
Dustin 是 NVIDIA Jetson 團(tuán)隊(duì)的一名開發(fā)人員推廣員。Dustin 擁有機(jī)器人技術(shù)和嵌入式系統(tǒng)方面的背景,喜歡在社區(qū)中提供幫助并與 Jetson 合作開展項(xiàng)目。您可以在NVIDIA 開發(fā)者論壇或GitHub 上找到他。
審核編輯:郭婷
-
傳感器
+關(guān)注
關(guān)注
2561文章
52198瀏覽量
761707 -
AI
+關(guān)注
關(guān)注
87文章
33554瀏覽量
274195 -
python
+關(guān)注
關(guān)注
56文章
4822瀏覽量
85855
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
【幸狐Omni3576邊緣計(jì)算套件試用體驗(yàn)】RKNN 推理測(cè)試與圖像識(shí)別
英偉達(dá)GTC25亮點(diǎn):NVIDIA Dynamo開源庫加速并擴(kuò)展AI推理模型
Oracle 與 NVIDIA 合作助力企業(yè)加速代理式 AI 推理

探索NVIDIA Jetson與DeepSeek融合的無限可能

云驥智行借助NVIDIA Jetson打造“域腦”通用計(jì)算平臺(tái)
解鎖NVIDIA TensorRT-LLM的卓越性能
u-blox深化與NVIDIA Jetson和NVIDIA DRIVE Hyperion平臺(tái)合作
初創(chuàng)公司借助NVIDIA Metropolis和Jetson提高生產(chǎn)線效率
使用NVIDIA Jetson打造機(jī)器人導(dǎo)盲犬
澎峰科技高性能大模型推理引擎PerfXLM解析

英偉達(dá)推出全新NVIDIA AI Foundry服務(wù)和NVIDIA NIM推理微服務(wù)
超級(jí)電容器在高性能電源應(yīng)用中的優(yōu)勢(shì)

評(píng)論