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

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

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

英特爾開發(fā)套件『哪吒』在Java環(huán)境實(shí)現(xiàn)ADAS道路識別演示 | 開發(fā)者實(shí)戰(zhàn)

研揚(yáng)科技AAEON ? 2024-04-29 08:07 ? 次閱讀

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

簡介

本文使用來自O(shè)pen Model Zoo的預(yù)訓(xùn)練的 road-segmentation-adas-0001模型。ADAS 代表高級駕駛輔助服務(wù)。該模型識別四個類別:背景、道路、路緣和標(biāo)記。

硬件環(huán)境

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

模型下載

首先進(jìn)入

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

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

wKgZombZYRaAGSBsAACKnmU7En4992.png

搭建OpenVINO Java環(huán)境

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

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

查看各個系統(tǒng)的安裝文檔:

wKgZombZYTiABD0RAAC5vIfFQzs060.png

編寫測試代碼

大致上分為四步:

  1. 加載OpenVINO Runtime

2. 加載模型

3. 加載圖片并推理

4. 處理結(jié)果

加載OpenVINO Runtime

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

結(jié)果將輸出當(dāng)前系統(tǒng)OpenVINO版本:

1. ---- OpenVINO INFO----
2. Description : OpenVINO Runtime
3. Build number: 2023.2.0-13089-cfd42bd2cb0-HEAD

加載模型

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

加載圖片并處理

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

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

開始推理&處理結(jié)果

1. inputTensor.setData(floats);
2. inferRequest.infer();
3. Tensor outputTensor = inferRequest.getOutputTensor(0);
4. int outputLength = (int) outputTensor.getSize();
5. float[] outputData = outputTensor.getData(float[].class, outputLength);
6. NDArray ndArray = manager.create(outputData,new Shape(1,4,H,W));
7. ndArray = ndArray.argMax(1);
8. if (ndArray.getShape().get(0) == 1){
9. ndArray = ndArray.squeeze(0);
10. }
11. ndArray = ndArray.toType(DataType.UINT8, true);
12. NDArray mask = manager.zeros(new Shape(ndArray.getShape().get(0),ndArray.getShape().get(1),3),DataType.UINT8);
13. Mat _mat = new Mat((int)ndArray.getShape().get(0),(int)ndArray.getShape().get(1), CvType.CV_8UC3);
14. byte[] b = mask.toByteArray();
15. _mat.put(0,0,b);
16. double[][] colors = new double[][]{{255, 44, 255}, {48, 255, 141}, {53, 255, 120}, {199, 216, 52}};
17. for (int i = 0 ; i < colors.length;i++) {
18. NDArray labelIndexMap = ndArray.eq(i);
19. labelIndexMap = labelIndexMap.toType(DataType.UINT8,true).mul(255);
20. Mat mat1 = new Mat((int) labelIndexMap.getShape().get(0), (int) labelIndexMap.getShape().get(1),CvType.CV_8UC1);
21. mat1.put(0,0,labelIndexMap.toByteArray());
22. List contours = new ArrayList<>();
23. Mat hierarchies = new Mat();
24. Imgproc.findContours(mat1,contours,hierarchies,Imgproc.RETR_EXTERNAL,Imgproc.CHAIN_APPROX_SIMPLE);

25. Imgproc.drawContours(_mat,contours,-1,new Scalar(colors[i][0], colors[i][1], colors[i][2]),Imgproc.FILLED);
26. }
27. Mat resized_mask = new Mat();
28. Imgproc.resize(_mat,resized_mask, new Size(imageW, imageH));
29. Core.addWeighted(resized_mask,0.2F,mat,0.8F,0,resized_mask);

結(jié)果展示

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

wKgaombZadGAAbLLAAzhQeBHD7c712.png

結(jié)語

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

關(guān)于英特爾 OpenVINO 工具套件的詳細(xì)資料,包括三百多個經(jīng)驗(yàn)證并優(yōu)化的預(yù)訓(xùn)練模型的詳細(xì)資料,請您前往

https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/overview.html

除此之外,為了方便大家了解并快速掌握 OpenVINO 的使用,我們還提供了一系列開源的 Jupyter notebook demo。

運(yùn)行這些 notebook,就能快速了解在不同場景下如何利用 OpenVINO 實(shí)現(xiàn)一系列、包括計(jì)算機(jī)視覺、語音及自然語言處理任務(wù)。

OpenVINO notebooks 的資源可以在 GitHub 下載安裝:

https://github.com/openvinotoolkit/openvino_notebooks

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

    關(guān)注

    61

    文章

    9992

    瀏覽量

    172009
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5087

    瀏覽量

    97785
  • adas
    +關(guān)注

    關(guān)注

    309

    文章

    2187

    瀏覽量

    208737
  • OpenVINO
    +關(guān)注

    關(guān)注

    0

    文章

    94

    瀏覽量

    213
收藏 人收藏

    評論

    相關(guān)推薦

    基于英特爾開發(fā)開發(fā)ROS應(yīng)用

    隨著智能機(jī)器人技術(shù)的快速發(fā)展,越來越多的研究開發(fā)者開始涉足這一充滿挑戰(zhàn)和機(jī)遇的領(lǐng)域。哪吒開發(fā)板,作為一款高性能的機(jī)器人開發(fā)平臺,憑借其強(qiáng)
    的頭像 發(fā)表于 12-20 10:54 ?1204次閱讀
    基于<b class='flag-5'>英特爾</b><b class='flag-5'>開發(fā)</b>板<b class='flag-5'>開發(fā)</b>ROS應(yīng)用

    NVIDIA發(fā)布小巧高性價比的Jetson Orin Nano Super開發(fā)者套件

    為2070元人民幣。 與上一代產(chǎn)品相比,Jetson Orin Nano Super開發(fā)者套件性能上有了顯著提升。
    的頭像 發(fā)表于 12-19 11:28 ?467次閱讀

    使用英特爾哪吒開發(fā)套件部署YOLOv5完成透明物體目標(biāo)檢測

    英特爾哪吒(Nezha)開發(fā)套件是一款專為邊緣AI和物聯(lián)網(wǎng)應(yīng)用設(shè)計(jì)的高性能計(jì)算平臺,搭載了英特爾 N97處理器、內(nèi)置英特爾 UHD Gra
    的頭像 發(fā)表于 11-25 17:15 ?262次閱讀
    使用<b class='flag-5'>英特爾</b><b class='flag-5'>哪吒</b><b class='flag-5'>開發(fā)套件</b>部署YOLOv5完成透明物體目標(biāo)檢測

    基于哪吒開發(fā)板部署YOLOv8模型

    2024英特爾 “走近開發(fā)者”互動活動-哪吒開發(fā)套件免費(fèi)試 用 AI 創(chuàng)新計(jì)劃:哪吒開發(fā)板是專為
    的頭像 發(fā)表于 11-15 14:13 ?324次閱讀
    基于<b class='flag-5'>哪吒</b><b class='flag-5'>開發(fā)</b>板部署YOLOv8模型

    OpenVINO? C++ 在哪吒開發(fā)板上推理 Transformer 模型|開發(fā)者實(shí)戰(zhàn)

    使用OpenVINO定制你的AI助手丨開發(fā)者實(shí)戰(zhàn)作者:王國強(qiáng)蘇州嘉樹醫(yī)療科技有限公司算法工程師指導(dǎo):顏國進(jìn)英特爾邊緣計(jì)算創(chuàng)新大使研揚(yáng)科技針對邊緣AI行業(yè)開發(fā)者推出的『
    的頭像 發(fā)表于 09-28 08:01 ?386次閱讀
    OpenVINO? C++ 在<b class='flag-5'>哪吒</b><b class='flag-5'>開發(fā)</b>板上推理 Transformer 模型|<b class='flag-5'>開發(fā)者</b><b class='flag-5'>實(shí)戰(zhàn)</b>

    從運(yùn)動員到開發(fā)者: 英特爾以開放式AI系統(tǒng)應(yīng)對多重挑戰(zhàn)

    打造的生成式AI(GenAI)檢索增強(qiáng)生成(RAG)解決方案。該成果深度展示了英特爾如何通過基于英特爾?至強(qiáng)?處理器和英特爾??Gaudi AI加速器的開放式AI系統(tǒng)及平臺,幫助開發(fā)者
    的頭像 發(fā)表于 07-25 09:28 ?305次閱讀
    從運(yùn)動員到<b class='flag-5'>開發(fā)者</b>: <b class='flag-5'>英特爾</b>以開放式AI系統(tǒng)應(yīng)對多重挑戰(zhàn)

    英特爾開發(fā)板『哪吒』智慧交通演示——應(yīng)急車道識別&amp;amp;違規(guī)提取 | 開發(fā)者實(shí)戰(zhàn)

    之前寫了很多關(guān)于JavaOpenVINO中的引用,有目標(biāo)檢測、道路分割、模型加速等,但雖然寫了這么多,也似乎沒有過多提及到一些實(shí)際生活上的案例。都說創(chuàng)新源于生活,于是乎就想做一些有意思的東西,想了
    的頭像 發(fā)表于 05-25 08:06 ?380次閱讀
    <b class='flag-5'>英特爾</b><b class='flag-5'>開發(fā)</b>板『<b class='flag-5'>哪吒</b>』智慧交通<b class='flag-5'>演示</b>——應(yīng)急車道<b class='flag-5'>識別</b>&amp;amp;違規(guī)提取 | <b class='flag-5'>開發(fā)者</b><b class='flag-5'>實(shí)戰(zhàn)</b>

    英特爾開發(fā)套件Java環(huán)境實(shí)現(xiàn)ADAS道路識別演示

    本文使用來自O(shè)pen Model Zoo的預(yù)訓(xùn)練的 road-segmentation-adas-0001模型。ADAS 代表高級駕駛輔助服務(wù)。該模型識別四個類別:背景、道路、路緣和標(biāo)
    的頭像 發(fā)表于 04-20 10:32 ?606次閱讀
    <b class='flag-5'>英特爾</b><b class='flag-5'>開發(fā)套件</b><b class='flag-5'>在</b><b class='flag-5'>Java</b><b class='flag-5'>環(huán)境</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>ADAS</b><b class='flag-5'>道路</b><b class='flag-5'>識別</b><b class='flag-5'>演示</b>

    英特爾面向AI PC軟件開發(fā)者與硬件供應(yīng)商新增助力計(jì)劃

    英特爾公司近日宣布“AI PC加速計(jì)劃”再添兩項(xiàng)人工智能(AI)新舉措,即新增“AI PC開發(fā)者計(jì)劃”,并吸納獨(dú)立硬件供應(yīng)商(IHV)加入“AI PC加速計(jì)劃”。
    的頭像 發(fā)表于 04-02 10:09 ?344次閱讀

    英特爾宣布AI PC加速計(jì)劃新增兩項(xiàng)AI舉措

    首先,“AI PC 開發(fā)者計(jì)劃”面向軟件研發(fā)人員和獨(dú)立軟件開發(fā)商,為他們提供便捷的開發(fā)環(huán)境,助力加速大規(guī)模運(yùn)用新型 AI技術(shù)。此計(jì)劃包含一系列全面的工具、優(yōu)化工作流方案、AI 部署框架
    的頭像 發(fā)表于 03-27 16:03 ?405次閱讀

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

    部署到生產(chǎn)系統(tǒng)中。通過簡化的開發(fā)工作流程,OpenVINO可賦能開發(fā)者現(xiàn)實(shí)世界中部署高性能應(yīng)用程序和算法。 今天我們將基于哪吒開發(fā)者
    的頭像 發(fā)表于 03-23 08:05 ?601次閱讀
    【轉(zhuǎn)載】<b class='flag-5'>英特爾</b><b class='flag-5'>開發(fā)套件</b>“<b class='flag-5'>哪吒</b>”快速部署YoloV8 on <b class='flag-5'>Java</b> | <b class='flag-5'>開發(fā)者</b><b class='flag-5'>實(shí)戰(zhàn)</b>

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

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

    玩轉(zhuǎn)PSoC 6 RTT積木式開發(fā)套件,實(shí)現(xiàn)毫米波雷達(dá)等實(shí)用功能

    Jenson一起玩轉(zhuǎn)這款靈活易用、玩法多樣的MCU套件吧!PSoC6RTT開發(fā)板是一款供廣大開發(fā)者評估和測試階段使用的開發(fā)套件,一經(jīng)推出就
    的頭像 發(fā)表于 03-20 08:35 ?1032次閱讀
    玩轉(zhuǎn)PSoC 6 RTT積木式<b class='flag-5'>開發(fā)套件</b>,<b class='flag-5'>實(shí)現(xiàn)</b>毫米波雷達(dá)等實(shí)用功能

    OpenVINO? Java API應(yīng)用RT-DETR做目標(biāo)檢測器實(shí)戰(zhàn)

    本文將從零開始詳細(xì)介紹環(huán)境搭建的完整步驟,我們基于英特爾開發(fā)套件AIxBoard為硬件基礎(chǔ)實(shí)現(xiàn)Java
    的頭像 發(fā)表于 03-18 15:04 ?843次閱讀
    OpenVINO? <b class='flag-5'>Java</b> API應(yīng)用RT-DETR做目標(biāo)檢測器<b class='flag-5'>實(shí)戰(zhàn)</b>

    英飛凌推出CYUSBS236 USB轉(zhuǎn)串行通信(雙通道)開發(fā)套件

    英飛凌科技(Infineon Technologies)近日宣布推出全新的CYUSBS236 USB 轉(zhuǎn)串行通信(雙通道)開發(fā)套件。該開發(fā)套件基于英飛凌的CY7C65215 USB 串行橋控制器,為開發(fā)者提供了快速、簡便地
    的頭像 發(fā)表于 01-24 17:12 ?928次閱讀