Microsoft 和 NVIDIA 合作為 NVIDIA Jetson 平臺構建、驗證和發布 ONNX 運行時 Python 包和 Docker 容器,現已在Jetson Zoo上提供。
今天發布的適用于 Jetson 的 ONNX Runtime 將 ONNX Runtime 的性能和可移植性優勢擴展到了 Jetson 邊緣 AI 系統,允許來自許多不同框架的模型以更少的功耗更快地運行。您可以轉換來自 PyTorch、TensorFlow、Scikit-Learn 和其他模型的模型,以在具有 ONNX 運行時的 Jetson 平臺上執行推理。
ONNX 運行時優化模型以利用設備上的加速器。此功能使用相同的 API 表面為應用程序代碼提供跨不同硬件配置的最佳推理吞吐量,以管理和控制推理會話。
ONNX Runtime 在數億臺設備上運行,每天提供超過 200 億個推理請求。
Jetson 上 ONNX 運行時的優勢
Jetson System-on-Modules (SOM) 的全系列產品以小巧的外形提供云原生支持,具有無與倫比的性能和能效,有效地將現代 AI、深度學習和推理的能力引入嵌入式系統邊緣。Jetson 為一系列應用提供支持,從人工智能驅動的網絡錄像機 (NVR) 和高精度制造中的自動光學檢測 (AOI) 到自主移動機器人 (AMR)。
完整的 Jetson 系列由相同的軟件堆棧提供支持,并由 NVIDIA JetPack SDK 提供支持,其中包括板級支持包 (BSP)、Linux 操作系統和用于端到端 AI 管道加速的用戶級庫:
CUDA
cudDNN
用于加速 AI 推理的 TensorRT
用于加速計算的 cuBlas、cuFFT 等
用于計算機視覺和圖像處理的 Visionworks、OpenCV 和 VPI
用于相機 ISP 處理、多媒體和傳感器處理的庫
此 ONNX 運行時包利用 Jetson 邊緣 AI 平臺中的集成 GPU,使用 CUDA 和 cuDNN 庫為 ONNX 模型提供加速推理。您還可以通過從源代碼構建 Python 包來將 ONNX 運行時與 TensorRT 庫一起使用。
專注于開發者
此版本為您在 Jetson 平臺上使用 ONNX 運行時提供了一條簡單的集成路徑。您可以在應用程序代碼中集成 ONNX 運行時,以便在邊緣設備上運行 AI 應用程序的推理。
ML 開發人員和 IoT 解決方案制造商可以使用預構建的 Docker 映像在邊緣部署 AI 應用程序或使用獨立的 Python 包。Jetson Zoo包含指向 ONNX 運行時包和示例的指針以供入門。
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
或者,要直接在您的應用程序中使用Python 包,請下載并將其安裝在您的 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 運行時的推理應用程序
圖 1. 邊緣的端到端 IoT 應用程序。
在NVIDIA Jetson 平臺(ARM64 設備)上集成 Azure 與機器學習執行教程向您展示了如何使用 TinyYOLO 模型、Azure IoT Edge 和 ONNX Runtime 在您的 Jetson 設備上開發對象檢測應用程序。
在 Jetson 平臺上運行的物聯網邊緣應用程序在 Azure 云中有一個數字孿生。推理應用程序代碼在由集成的 Jetson ONNX 運行時基礎映像構建的 Docker 容器中運行。應用程序從相機讀取幀,執行對象檢測,并將檢測到的對象結果發送到云存儲。從那里,它們可以被可視化和進一步處理。
樣本異議檢測代碼
您可以使用為 Jetson 預先構建的 ONNX Runtime Docker 映像開發自己的應用程序。
使用 Jetson ONNX 運行時 Docker 映像創建 Dockerfile 并添加應用程序依賴項:
來自 mcr.microsoft.com/azureml/onnxruntime:v.1.4.0-jetpack4.4-l4t-base-r32.4.3 工作目錄。 運行 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 構建一個新鏡像:
docker build -t jetson-onnxruntime-yolov4 。
從 ONNX 模型動物園下載 Yolov4 模型、對象檢測錨位置和類名:
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 對象檢測前后處理代碼:
wget https://raw.githubusercontent.com/natke/onnxruntime-jetson/master/preprocess_yolov4.py wget https://raw.githubusercontent.com/natke/onnxruntime-jetson/master/postprocess_yolov4.py
下載一個或多個測試圖像:
wget https://raw.githubusercontent.com/SoloSynth1/tensorflow-yolov4/master/data/kite.jpg
創建一個應用程序 main.py 來預處理圖像,運行對象檢測,并將原始圖像與檢測到的對象一起保存:
導入簡歷2 將 numpy 導入為 np 導入 preprocess_yolov4 作為 pre 導入 postprocess_yolov4 作為帖子 從 PIL 導入圖像 輸入大小 = 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("預處理后的圖像形狀:",image_data.shape) # 預處理輸入的形狀 將 onnxruntime 導入為 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,檢測) 圖像 = Image.fromarray(圖像) image.save("風箏與對象.jpg")
運行應用程序:
nvidia-docker run -it --rm -v $PWD:/workspace/ --workdir=/workspace/ jetson-onnxruntime-yolov4 python3 main.py
應用程序讀取風箏圖像并定位圖像中的所有對象。您可以嘗試使用不同的圖像并擴展應用程序以使用視頻流,如前面的 Azure IoT 邊緣應用程序所示。
ONNX 運行時 v1.4 更新
此軟件包基于 2020 年 7 月發布的最新ONNX Runtime v1.4 版本。此最新版本提供了許多針對流行的 Transformer 模型(GPT2、BERT)的更新,包括性能優化、新運算符的改進量化支持和優化技術。該版本還通過新硬件加速器的預覽版擴展了 ONNX 運行時硬件生態系統的兼容性,包括對 NVIDIA Jetpack 4.4 的 ARM-NN 和 Python 包的支持。
除了這些加速推理更新之外,1.4 版本繼續在加速訓練前沿的先前版本中引入的創新基礎上構建,包括通過使用 Huggingface GPT-2 模型的新樣本擴展操作員支持。
關于作者
Natalie Kershaw 是 Microsoft 人工智能框架團隊的項目經理,專門研究開發人員體驗。她在澳大利亞的阿德萊德大學和悉尼大學學習電氣和電子工程以及數學/創意寫作。在加入微軟之前,她曾在西雅圖的 RFID 芯片制造商 Impinj 工作。
Suhas Sheshadri 是 NVIDIA 的產品經理,專注于 Jetson 軟件。他之前曾在 NVIDIA 的自動駕駛團隊工作,為 NVIDIA Drive 平臺優化系統軟件。在空閑時間,Suhas 喜歡閱讀有關量子物理學和博弈論的書籍。
Dustin 是 NVIDIA Jetson 團隊的一名開發人員推廣員。Dustin 擁有機器人技術和嵌入式系統方面的背景,喜歡在社區中提供幫助并與 Jetson 合作開展項目。您可以在NVIDIA 開發者論壇或GitHub 上找到他。
審核編輯:郭婷
-
傳感器
+關注
關注
2552文章
51289瀏覽量
755164 -
AI
+關注
關注
87文章
31262瀏覽量
269632 -
python
+關注
關注
56文章
4801瀏覽量
84863
發布評論請先 登錄
相關推薦
評論