<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

英特爾開發套件在Java環境實現ADAS道路識別演示

英特爾物聯網 ? 來源:英特爾物聯網 ? 2024-04-20 10:32 ? 次閱讀

簡介

本文使用來自Open Model Zoo的預訓練的 road-segmentation-adas-0001模型。ADAS 代表高級駕駛輔助服務。該模型識別四個類別:背景、道路、路緣和標記。

硬件環境

此文使用了英特爾開發套件家族里的哪吒(Nezha)開發板,其為研揚科技針對邊緣 AI 行業開發者推出的開發板,雖只有信用卡大?。?5 x 56mm),但哪吒采用 Intel N97 處理器(Alder Lake-N),最大睿頻 3.6GHz,Intel UHD Graphics 內核GPU,可實現高分辨率顯示;板載 LPDDR5 內存、eMMC 存儲及 TPM 2.0,配備 GPIO 接口,支持 Windows 和 Linux 操作系統,這些功能和無風扇散熱方式相結合,為各種應用程序構建高效的解決方案,如您是樹莓派開發者又需要更好的AI算力, 強力推薦產品, 其適用于如自動化、物聯網網關、數字標牌和機器人等應用。售價 RMB 999起, 哪吒開發套件Nezha intel x86開發板板載Alder N97 可Win10/Ubuntu N97 4G+32G。

模型下載

首先進入

https://storage.openvinotoolkit.org/repositories/open_model_zoo/2023.0/models_bin/1/road-segmentation-adas-0001/FP32/

下載指定版本的segmentation 模型文件

571e07ce-fe39-11ee-a297-92fbcf53809c.png

搭建OpenVINO Java環境

由于之前文章都介紹過Java環境的搭建,而這篇文章主要講述代碼怎么寫的,所以對于環境的搭建不做過多的說明,大家可以進入

https://github.com/Hmm466/OpenVINO-Java-API/tree/main/docs/cn

查看各個系統的安裝文檔:

5742ccf8-fe39-11ee-a297-92fbcf53809c.png

編寫測試代碼

大致上分為四步:

加載OpenVINO Runtime

加載模型

加載圖片并推理

處理結果

加載OpenVINO Runtime

OpenVINO vino = OpenVINO.load();
//加載OpenCV Dll
vino.loadCvDll();
OvVersion version = vino.getVersion();
Console.println("---- OpenVINO INFO----");
Console.println("Description : %s", version.description);
Console.println("Build number: %s", version.buildNumber);

結果將輸出當前系統OpenVINO版本:

---- OpenVINO INFO----
Description : OpenVINO Runtime
Build number: 2023.2.0-13089-cfd42bd2cb0-HEAD

加載模型

String modelPath = "model/road-segmentation-adas-0001.xml";
Core core = new Core();
// -------- Step 2. Read a model --------
Console.println("[INFO] Loading model files: %s", modelPath);
Model model = core.readModel(modelPath);
CompiledModel compiledModel = core.compileModel(model, "AUTO");

加載圖片并處理

Input inputLayerIr = compiledModel.input(0);
Tensor inputTensor = inferRequest.getInputTensor();
Mat rgbImage = new Mat();
Imgproc.cvtColor(mat, rgbImage, Imgproc.COLOR_BGR2RGB);
int imageH = mat.height();
int imageW = mat.width();
int channels = mat.channels();
Shape shape = inputLayerIr.getShape();
long N = shape.getDims().get(0);
long C = shape.getDims().get(1);
long H = shape.getDims().get(2);
long W = shape.getDims().get(3);


Mat resizedImage = new Mat();
Imgproc.resize(mat,resizedImage, new Size(W, H));
int[] data = matToIntArray(resizedImage)
NDArray array = manager.create(data,new Shape(H,W,C));
NDArray inputImage = array.transpose(2,0,1).expandDims(0);
float[] floats = intToFloatArray(inputImage.toIntArray());

開始推理&處理結果

inputTensor.setData(floats);
inferRequest.infer();
Tensor outputTensor = inferRequest.getOutputTensor(0);
int outputLength = (int) outputTensor.getSize();
float[] outputData = outputTensor.getData(float[].class, outputLength);
NDArray ndArray = manager.create(outputData,new Shape(1,4,H,W));
ndArray = ndArray.argMax(1);
if (ndArray.getShape().get(0) == 1){
  ndArray = ndArray.squeeze(0);
}
ndArray = ndArray.toType(DataType.UINT8, true);
NDArray mask = manager.zeros(new Shape(ndArray.getShape().get(0),ndArray.getShape().get(1),3),DataType.UINT8);
Mat _mat = new Mat((int)ndArray.getShape().get(0),(int)ndArray.getShape().get(1), CvType.CV_8UC3);
byte[] b = mask.toByteArray();
_mat.put(0,0,b);
double[][] colors = new double[][]{{255, 44, 255}, {48, 255, 141}, {53, 255, 120}, {199, 216, 52}};
for (int i = 0 ; i < colors.length;i++) {
 ? ?NDArray labelIndexMap = ndArray.eq(i);
 ? ?labelIndexMap = labelIndexMap.toType(DataType.UINT8,true).mul(255);
 ? ?Mat mat1 = new Mat((int) labelIndexMap.getShape().get(0), (int) labelIndexMap.getShape().get(1),CvType.CV_8UC1);
 ? ?mat1.put(0,0,labelIndexMap.toByteArray());
 ? ?List contours = new ArrayList<>();
  Mat hierarchies = new Mat();
  Imgproc.findContours(mat1,contours,hierarchies,Imgproc.RETR_EXTERNAL,Imgproc.CHAIN_APPROX_SIMPLE);
  Imgproc.drawContours(_mat,contours,-1,new Scalar(colors[i][0], colors[i][1], colors[i][2]),Imgproc.FILLED);
}
Mat resized_mask = new Mat();
Imgproc.resize(_mat,resized_mask, new Size(imageW, imageH));
Core.addWeighted(resized_mask,0.2F,mat,0.8F,0,resized_mask);

結果展示

這里將背景、道路、路緣和標記都分別標記了出來,我們可以根據各個類別做自己想做的事情,比如分割出道路,將背景去除等等。

575c1db6-fe39-11ee-a297-92fbcf53809c.png

結語

整體步驟是這樣,在該項目中,基于N97的哪吒平臺通過Java API實現了基于segmentation 模型的分割代碼,并且成功處理圖片并展示。后續筆者將基于OpenVINO 實現OCR,背景扣除等模型實現。



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 英特爾
    +關注

    關注

    60

    文章

    9496

    瀏覽量

    169186
  • 物聯網
    +關注

    關注

    2873

    文章

    41853

    瀏覽量

    359410
  • JAVA
    +關注

    關注

    19

    文章

    2905

    瀏覽量

    103101
  • ADAS系統
    +關注

    關注

    4

    文章

    215

    瀏覽量

    25579
  • OpenVINO
    +關注

    關注

    0

    文章

    61

    瀏覽量

    96

原文標題:英特爾開發套件在Java環境實現ADAS道路識別演示 | 開發者實戰

文章出處:【微信號:英特爾物聯網,微信公眾號:英特爾物聯網】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于英特爾哪吒開發套件平臺來快速部署OpenVINO Java實戰

    OpenVINO 工具套件基于OneAPI開發,可以加快高性能計算機視覺和深度學習應用開發速度的工具套件,適用于從邊緣到云的各種英特爾計算平
    的頭像 發表于 03-21 18:24 ?896次閱讀
    基于<b class='flag-5'>英特爾</b>哪吒<b class='flag-5'>開發</b>者<b class='flag-5'>套件</b>平臺來快速部署OpenVINO <b class='flag-5'>Java</b>實戰

    OpenVINO? Java API應用RT-DETR做目標檢測器實戰

    本文將從零開始詳細介紹環境搭建的完整步驟,我們基于英特爾開發套件AIxBoard為硬件基礎實現Java在Ubuntu 22.04系統上成功
    的頭像 發表于 03-18 15:04 ?277次閱讀
    OpenVINO? <b class='flag-5'>Java</b> API應用RT-DETR做目標檢測器實戰

    英特爾:2025年全球AIPC將超1億臺占比20%

    英特爾行業資訊
    北京中科同志科技股份有限公司
    發布于 :2024年02月29日 09:15:26

    英特爾1nm投產時間曝光!領先于臺積電

    英特爾行業芯事
    深圳市浮思特科技有限公司
    發布于 :2024年02月28日 16:28:32

    英特爾登頂2023年全球半導體榜單之首

    英特爾行業芯事
    深圳市浮思特科技有限公司
    發布于 :2024年02月01日 11:55:16

    基于英特爾? QuickAssist的?EP80579集成處理器開發套件

    采用英特爾? QuickAssist 技術的英特爾? EP80579 集成處理器的開發套件使客戶能夠為嵌入式、存儲和通信應用創建新一代解決方案。該處理器采用片上系統 (SOC) 處理器產品系列的突破性技術,可提供出色的每瓦效能比
    發表于 11-14 08:32 ?0次下載
    基于<b class='flag-5'>英特爾</b>? QuickAssist的?EP80579集成處理器<b class='flag-5'>開發套件</b>

    #高通 #英特爾 #Elite 高通X Elite芯片或終結蘋果、英特爾的芯片王朝

    高通英特爾蘋果
    深圳市浮思特科技有限公司
    發布于 :2023年10月27日 16:46:07

    基于英特爾開發套件的AI字幕生成器設計

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

    基于OpenVINO在英特爾開發套件實現眼部追蹤

    本文將以訓練一個眼部追蹤 AI 小模型為背景,介紹從 Pytorch 自定義網絡模型,到使用 OpenVINO NNCF 量化工具優化模型,并部署到英特爾開發套件愛克斯開發板 AIxBoard 的流程。
    的頭像 發表于 09-18 10:11 ?472次閱讀

    安裝OpenVINO工具套件英特爾Distribution時出現錯誤的原因?

    安裝OpenVINO?工具套件英特爾 Distribution時,出現錯誤: Python 3.10.0.ECHO is off. Unsupported Python version.
    發表于 08-15 08:14

    執行位置識別Python演示時報錯沒有名稱為image_capture的模塊的原因?

    使用英特爾預先訓練的模型執行 位置識別 Python 演示 :車輛檢測-0200。 收到錯誤: ModuleNotFoundError:沒有名稱為“image_capture”的模塊
    發表于 08-15 06:39

    STM32F7691開發套件能用openMV實現視覺識別嗎?

    請問選擇了AI方向,選用的是STM32F7691開發套件,能用openMV實現視覺識別嗎,還是必須在板子上用F769NI芯片實現視覺識別?
    發表于 08-07 06:26

    英特爾媒體加速器參考軟件Linux版用戶指南

    英特爾媒體加速器參考軟件是用于數字標志、交互式白板(IWBs)和亭位使用模型的參考媒體播放器應用軟件,它利用固定功能硬件加速來提高媒體流速、改進工作量平衡和資源利用,以及定制的圖形處理股(GPU)管道解決方案。該用戶指南將介紹和解釋如何為Linux* 使用英特爾媒體加速器
    發表于 08-04 06:34

    DA1468x 開發套件入門

    DA1468x 開發套件入門
    發表于 07-05 20:35 ?0次下載
    DA1468x <b class='flag-5'>開發套件</b>入門

    高級開發套件快速入門指南

    高級開發套件快速入門指南
    發表于 07-03 20:20 ?0次下載
    高級<b class='flag-5'>開發套件</b>快速入門指南
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>