<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天內不再提示

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

英特爾物聯網 ? 來源:英特爾物聯網 ? 2024-03-18 15:04 ? 次閱讀

本文將從零開始詳細介紹環境搭建的完整步驟,我們基于英特爾開發套件AIxBoard為硬件基礎實現了Java在Ubuntu 22.04系統上成功使用OpenVINO Java API,并且成功運行了RT-DETR實現實時端到端目標檢測器AI任務。

項目中所使用的代碼已上傳至OpenVINO Java API倉庫中,GitHub網址為:

https://github.com/Hmm466/OpenVINO-Java-API

RT-DETR是第一個實時端到端目標檢測器。具體而言,我們設計了一個高效的混合編碼器,通過解耦尺度內交互和跨尺度融合來高效處理多尺度特征,并提出了IoU感知的查詢選擇機制,以優化解碼器查詢的初始化。此外,RT-DETR支持通過使用不同的解碼器層來靈活調整推理速度,而不需要重新訓練,這有助于實時目標檢測器的實際應用。

RT-DETR-L在COCO val2017上實現了53.0%的AP,在T4 GPU上實現了114FPS,RT-DETR-X實現了54.8%的AP和74FPS,RT-DETR-H實現了56.3%的AP和40FPS,在速度和精度方面都優于相同規模的所有YOLO檢測器。RT-DETR-R50實現了53.1%的AP和108FPS,RT-DETR-R101實現了54.3%的AP和74FPS,在精度上超過了全部使用相同骨干網絡的DETR檢測器。

23110be0-d6eb-11ee-a297-92fbcf53809c.png

基礎模型

Model Epoch Backbone Input shape APvcal AP50val Params(M) FLOPs(G) T4 TensorRT FP16(FPS) Pretrained Model config
RT-DETR-R18 6x ResNet-18 640 46.5 63.8 20 60 217 https://bj.bcebos.com/v1/paddledet/models/rtdetr_r18vd_dec3_6x_coco.pdparams https://file+.vscode-resource.vscode-cdn.net/Users/ming/MyWorkspace/IdeaWorkspace/OpenVINO-Java-API/docs/rt_detr/rtdetr_r18vd_6x_coco.yml
RT-DETR-R34 6x ResNet-34 640 48.9 66.8 31 92 161 https://bj.bcebos.com/v1/paddledet/models/rtdetr_r34vd_dec4_6x_coco.pdparams https://file+.vscode-resource.vscode-cdn.net/Users/ming/MyWorkspace/IdeaWorkspace/OpenVINO-Java-API/docs/rt_detr/rtdetr_r34vd_6x_coco.yml
RT-DETR-R50-m 6x ResNet-50 640 51.3 69.6 36 100 145 https://bj.bcebos.com/v1/paddledet/models/rtdetr_r50vd_m_6x_coco.pdparams https://file+.vscode-resource.vscode-cdn.net/Users/ming/MyWorkspace/IdeaWorkspace/OpenVINO-Java-API/docs/rt_detr/rtdetr_r50vd_m_6x_coco.yml
RT-DETR-R50 6x ResNet-50 640 53.1 71.3 42 136 108 https://bj.bcebos.com/v1/paddledet/models/rtdetr_r50vd_6x_coco.pdparams https://file+.vscode-resource.vscode-cdn.net/Users/ming/MyWorkspace/IdeaWorkspace/OpenVINO-Java-API/docs/rt_detr/rtdetr_r50vd_6x_coco.yml
RT-DETR-R101 6x ResNet-101 640 54.3 72.7 76 259 74 https://bj.bcebos.com/v1/paddledet/models/rtdetr_r101vd_6x_coco.pdparams https://file+.vscode-resource.vscode-cdn.net/Users/ming/MyWorkspace/IdeaWorkspace/OpenVINO-Java-API/docs/rt_detr/rtdetr_r101vd_6x_coco.yml
RT-DETR-L 6x HGNetv2 640 53.0 71.6 32 110 114 https://bj.bcebos.com/v1/paddledet/models/rtdetr_hgnetv2_l_6x_coco.pdparams https://file+.vscode-resource.vscode-cdn.net/Users/ming/MyWorkspace/IdeaWorkspace/OpenVINO-Java-API/docs/rt_detr/rtdetr_hgnetv2_l_6x_coco.yml
RT-DETR-X 6x HGNetv2 640 54.8 73.1 67 234 74 https://bj.bcebos.com/v1/paddledet/models/rtdetr_hgnetv2_x_6x_coco.pdparams https://file+.vscode-resource.vscode-cdn.net/Users/ming/MyWorkspace/IdeaWorkspace/OpenVINO-Java-API/docs/rt_detr/rtdetr_hgnetv2_x_6x_coco.yml
RT-DETR-H 6x HGNetv2 640 56.3 74.8 123 490 40 https://bj.bcebos.com/v1/paddledet/models/rtdetr_hgnetv2_h_6x_coco.pdparams https://file+.vscode-resource.vscode-cdn.net/Users/ming/MyWorkspace/IdeaWorkspace/OpenVINO-Java-API/docs/rt_detr/rtdetr_hgnetv2_h_6x_coco.yml

More

高精度模型

Model Epoch Backbone Input shape APvcal AP50val Pretrained Model config
RT-DETR-Swin 3x Swin_L_384 640 56.2 73.5 https://bj.bcebos.com/v1/paddledet/models/rtdetr_swin_L_384_3x_coco.pdparams https://file+.vscode-resource.vscode-cdn.net/Users/ming/MyWorkspace/IdeaWorkspace/OpenVINO-Java-API/docs/rt_detr/rtdetr_swin_L_384_3x_coco.yml
RT-DETR-FocalNet 3x FocalNet_L_384 640 56.9 74.3 https://bj.bcebos.com/v1/paddledet/models/rtdetr_focalnet_L_384_3x_coco.pdparams https://file+.vscode-resource.vscode-cdn.net/Users/ming/MyWorkspace/IdeaWorkspace/OpenVINO-Java-API/docs/rt_detr/rtdetr_focalnet_L_384_3x_coco.yml

More

Objects365預訓練模型

Model Epoch Dataset Input shape APvcal AP50val T4 TensorRT FP16(FPS) Weight Logs
RT-DETR-R18 1x Objects365 640 22.9 31.2 - https://bj.bcebos.com/v1/paddledet/models/rtdetr_r18vd_1x_objects365.pdparams https://github.com/lyuwenyu/RT-DETR/issues/8
RT-DETR-R18 5x COCO + Objects365 640 49.2 66.6 217 https://bj.bcebos.com/v1/paddledet/models/rtdetr_r18vd_5x_coco_objects365.pdparams https://github.com/lyuwenyu/RT-DETR/issues/8
RT-DETR-R50 1x Objects365 640 35.1 46.2 - https://bj.bcebos.com/v1/paddledet/models/rtdetr_r50vd_1x_objects365.pdparams https://github.com/lyuwenyu/RT-DETR/issues/8
RT-DETR-R50 2x COCO + Objects365 640 55.3 73.4 108 https://bj.bcebos.com/v1/paddledet/models/rtdetr_r50vd_2x_coco_objects365.pdparams https://github.com/lyuwenyu/RT-DETR/issues/8
RT-DETR-R101 1x Objects365 640 36.8 48.3 - https://bj.bcebos.com/v1/paddledet/models/rtdetr_r101vd_1x_objects365.pdparams https://github.com/lyuwenyu/RT-DETR/issues/8
RT-DETR-R101 2x COCO + Objects365 640 56.2 74.5 74 https://bj.bcebos.com/v1/paddledet/models/rtdetr_r101vd_2x_coco_objects365.pdparams https://github.com/lyuwenyu/RT-DETR/issues/8

More

數據出自:

https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rtdetr

1

英特爾開發套件AIxBoard介紹

2480a95e-d6eb-11ee-a297-92fbcf53809c.png

1.1

產品定位

英特爾開發套件AIxBoard是英特爾開發套件官方序列中的一員,專為入門級人工智能應用和邊緣智能設備而設計。英特爾開發套件AIxBoard能完美勝人工智能學習、開發、實訓、應用等不同應用場景。該套件預裝了英特爾OpenVINO 工具套件、模型倉庫和演示。

套件主要接口與Jetson Nano載板兼容,GPIO與樹莓派兼容,能夠最大限度地復用成熟的生態資源。這使得套件能夠作為邊緣計算引擎,為人工智能產品驗證和開發提供強大支持;同時,也可以作為域控核心,為機器人產品開發提供技術支撐。

使用英特爾開發套件AIxBoard,您將能夠在短時間內構建出一個出色的人工智能應用應用程序。無論是用于科研、教育還是商業領域,英特爾開發套件AIxBoard都能為您提供良好的支持。借助OpenVINO 工具套件,CPU、iGPU都具備強勁的AI推理能力,支持在圖像分類、目標檢測、分割和語音處理等應用中并行運行多個神經網絡。

1.2

產品參數

24a86caa-d6eb-11ee-a297-92fbcf53809c.png

1.3

AI推理單元

借助OpenVINO 工具,能夠實現CPU+iGPU異構計算推理,IGPU算力約為0.6TOPS

24d01e6c-d6eb-11ee-a297-92fbcf53809c.png

2

準備工作

2.1

配置java環境

下載并配置JDK:

JDK(Java Development Kit)稱為Java開發包或Java開發工具,是一個編寫Java的Applet小程序和應用程序的程序開發環境。JDK是整個Java的核心,包括了Java運行環境(Java Runtime Environment),一些Java工具和Java的核心類庫(Java API)。不論什么Java應用服務器實質都是內置了某個版本的JDK。主流的JDK是Sun公司發布的JDK,除了Sun之外,還有很多公司和組織都開發了自己的JDK.

2.1.1添加api到本地maven

添加OpenVINO Java API至Maven(目前沒有在meven中央倉庫發布,所以需要手動安裝)

2.1.2 clone OpenVINO Java API項目到本地

git clone https://github.com/Hmm466/OpenVINO-Java-API

2.1.3 通過IDEA或Eclipse打開

通過maven install到本地maven庫中

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 14.647 s
[INFO] Finished at: 2023-11-02T21:34:49+08:00
[INFO] ------------------------------------------------------------------------

jar包會放置在

/{userHome}/.m2/repository/org/openvino/java-api/1.0-SNAPSHOT/java-api-1.0-SNAPSHOT.pom

2.2

安裝OpenVINO Runtime

OpenVINO 有兩種安裝方式: OpenVINO Runtime和OpenVINO Development Tools。OpenVINO Runtime包含用于在處理器設備上運行模型部署推理的核心庫。OpenVINO Development Tools是一組用于處理OpenVINO 和OpenVINO 模型的工具,包括模型優化器、OpenVINO Runtime、模型下載器等。在此處我們只需要安裝OpenVINO Runtime即可。

2.2.1 下載OpenVINO Runtime

訪問Download the Intel Distribution of OpenVINO Toolkit頁面,按照下面流程選擇相應的安裝選項,在下載頁面,由于英特爾開發套件AIxBoard使用的是Ubuntu20.04,因此下載時按照指定的編譯版本下載即可。

24ef65c4-d6eb-11ee-a297-92fbcf53809c.png

25114dc4-d6eb-11ee-a297-92fbcf53809c.png

2.2.2 解壓縮安裝包

我們所下載的OpenVINO Runtime本質是一個C++依賴包,因此我們把它放到我們的系統目錄下,這樣在編譯時會根據設置的系統變量獲取依賴項。

cd ~/Downloads/
tar -xvzf l_openvino_toolkit_ubuntu20_2022.3.1.9227.cf2c7da5689_x86_64.tgz
sudo mv l_openvino_toolkit_ubuntu20_2022.3.1.9227.cf2c7da5689_x86_64/runtime/lib/intel64/* /usr/lib/

2.3

編譯OpenCV java庫

2.3.1 下載ANT

由于OpenCV編譯出libopencv_java{version}.[so|dll|dylib]需要apache ant的支持,所以需要手動下載ant并加入環境變量
官網:http://ant.apache.org/

export ANT_HOME={ant_home}
export PATH=$ANT_HOME/bin:$PATH

2.3.2 OpenCV 下載源代碼

opencv官網下載源碼:

https://opencv.org/

解壓縮之后進入文件夾

mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=OFF -DWITH_IPP=OFF -DBUILD_ZLIB=OFF -DCMAKE_INSTALL_PREFIX=你的opencv目錄 
 -DJAVA_INCLUDE_PATH={jdk 所在位置}/include -DJAVA_AWT_INCLUDE_PATH={jdk 所在位置}/include 
 -DJAVA_INCLUDE_PATH2={jdk 所在位置}/include -DBUILD_JAVA=ON ../

注意看輸出有沒有

--  Java:             
--   ant:             
--   JNI:             
--   Java wrappers:        
--   Java tests:  

需要不為NO或者有目錄

然后編譯安裝

make -j 8
make install

3

在英特爾開發套件AIxBoard上進行測試

3.1

源代碼直接測試

git clone https://github.com/Hmm466/OpenVINO-Java-API

3.2

編寫測試類

public class RT_DETRTest {
  private OpenVINO vino;
  private String classerPath = "dataset/lable/COCO_lable.txt";
  private String imgPath = "dataset/image/WechatIMG28.jpg";
  private String modelPath = "model/rtdetr/rtdetr_r18vd_6x_coco.xml";


  @Before
  public void setUp() {
    vino = OpenVINO.load();
    vino.loadCvDll();
  }


  @After
  public void tearDown() {
  }


  @Test
  public void rtDetrTest() {
    Mat image = Imgcodecs.imread(imgPath);
    Mat resultMat = new Mat();
    modelPath = "model/rtdetr/rtdetr_r50vd_6x_coco.xml";
    RTDETR predictor = new RTDETR(modelPath, classerPath, "CPU", false);
    resultMat = predictor.predict(image);
    HighGui.imshow("result", resultMat);
    HighGui.waitKey(0);
  }
}

結果將輸出

Model path: model/rtdetr/rtdetr_r50vd_6x_coco.xml
Device name: CPU
Inference Model
 Model name: Model from PaddlePaddle.
 Input:
   name: image
   type: 5
 Output:
   name: stack_7.tmp_0_slice_0
   type: 5
   name: stack_8.tmp_0_slice_0
   type: 5
Infer result:
 class_id : 0, label : person, confidence : 0.9453949, left_top : [290, 199], right_bottom: [475, 789]
 class_id : 0, label : person, confidence : 0.9366737, left_top : [740, 262], right_bottom: [866, 491]
 class_id : 0, label : person, confidence : 0.95133895, left_top : [-1, 306], right_bottom: [268, 826]
 class_id : 56, label : chair, confidence : 0.7857964, left_top : [108, 612], right_bottom: [292, 830]
 class_id : 0, label : person, confidence : 0.8834057, left_top : [885, 317], right_bottom: [1124, 539]
 class_id : 63, label : laptop, confidence : 0.67640233, left_top : [493, 460], right_bottom: [615, 560]
 class_id : 63, label : laptop, confidence : 0.8890746, left_top : [533, 511], right_bottom: [812, 794]
 class_id : 0, label : person, confidence : 0.8422087, left_top : [622, 100], right_bottom: [1249, 825]
 class_id : 63, label : laptop, confidence : 0.74342567, left_top : [859, 446], right_bottom: [954, 529]
 class_id : 62, label : tv, confidence : 0.92532605, left_top : [245, 167], right_bottom: [717, 463]
 class_id : 63, label : laptop, confidence : 0.7818358, left_top : [897, 475], right_bottom: [1093, 647]

252c0dbc-d6eb-11ee-a297-92fbcf53809c.png

詳細實現原理可以進入以下網址查看:

https://github.com/Hmm466/OpenVINO-Java-API

4

總結

在該項目中,我們基于英特爾開發套件AIxBoard為硬件基礎實現了Java在Ubuntu 22.04系統上成功使用OpenVINO Java API,并且成功運行了RT-DETR模型,后續我還會將繼續使用OpenVINO Java API在英特爾開發套件AIxBoard 部署更多的深度學習模型。




審核編輯:劉清

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

    關注

    19

    文章

    2905

    瀏覽量

    103101
  • GPIO
    +關注

    關注

    16

    文章

    1141

    瀏覽量

    50679
  • 樹莓派
    +關注

    關注

    113

    文章

    1646

    瀏覽量

    104819
  • Ubuntu系統
    +關注

    關注

    0

    文章

    84

    瀏覽量

    3806
  • OpenVINO
    +關注

    關注

    0

    文章

    61

    瀏覽量

    96

原文標題:OpenVINO? Java API應用RT-DETR做目標檢測器實戰 | 開發者實戰

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

收藏 人收藏

    評論

    相關推薦

    OpenVINO Java API詳解與演示

    英特爾 發行版 OpenVINO 工具套件基于 oneAPI 而開發,可以加快高性能計算機視覺和深度學習視覺應用開發速度工具套件,適用于從邊緣到云的各種英特爾平臺上,幫助用戶更快地將更準確的真實世界
    的頭像 發表于 11-09 17:03 ?690次閱讀
    <b class='flag-5'>OpenVINO</b> <b class='flag-5'>Java</b> <b class='flag-5'>API</b>詳解與演示

    如何使用OpenVINO C++ API部署FastSAM模型

    FastSAM 模型 | 開發者實戰》,在該文章中我們向大家展示了基于 OpenVINO Python API 的基本部署流程。在實際部署過程中會考慮到由效率問題,使得我們可能更傾向于采用更高效的部署方式
    的頭像 發表于 11-17 09:53 ?515次閱讀
    如何使用<b class='flag-5'>OpenVINO</b> C++ <b class='flag-5'>API</b>部署FastSAM模型

    一種基于順序統計量的距離擴展目標檢測器

    一種基于順序統計量的距離擴展目標檢測器::該文提出一種高斯白噪聲中的距離擴展目標檢測器。實際目標的寬帶雷達回波能量往往集中于若干距離單元中,
    發表于 10-29 13:07 ?13次下載

    Java并發編程實戰

    Java并發編程實戰
    發表于 03-19 11:24 ?7次下載

    如何結合TensorFlow目標檢測API和OpenCV分析足球視頻

    使用Tensorflow的目標檢測API,可以快速搭建目標檢測模型。如果你不熟悉這套API,可以
    的頭像 發表于 07-08 09:38 ?6111次閱讀
    如何結合TensorFlow<b class='flag-5'>目標</b><b class='flag-5'>檢測</b><b class='flag-5'>API</b>和OpenCV分析足球視頻

    RT-DETR用114FPS實現54.8AP遠超YOLOv8

    最近,基于Transformer的端到端檢測器DETR)已經取得了顯著的性能。然而,DETR的高計算成本問題尚未得到有效解決,這限制了它們的實際應用,并使它們無法充分利用無后處理的好處,如非最大值抑制(NMS)。
    的頭像 發表于 04-20 09:59 ?639次閱讀

    簡單聊聊目標檢測新范式RT-DETR的骨干:HGNetv2

    當然,人們對RT-DETR之所以產生濃厚的興趣,我覺得大概率還是對YOLO系列審美疲勞了,就算是出到了YOLO10086,我還是只想用YOLOv5和YOLOv7的框架來魔改做業務。。
    的頭像 發表于 04-27 09:42 ?1122次閱讀
    簡單聊聊<b class='flag-5'>目標</b><b class='flag-5'>檢測</b>新范式<b class='flag-5'>RT-DETR</b>的骨干:HGNetv2

    介紹RT-DETR兩種風格的onnx格式和推理方式

    RT-DETR是由百度近期推出的DETR-liked目標檢測器,該檢測器由HGNetv2、混合編碼器和帶有輔助預測頭的Transformer
    的頭像 發表于 05-17 17:46 ?2304次閱讀
    介紹<b class='flag-5'>RT-DETR</b>兩種風格的onnx格式和推理方式

    華為諾亞提出全新目標檢測器Focus-DETR

    為實現模型性能和計算資源消耗、顯存消耗、推理時延之間的平衡,Focus-DETR 利用精細設計的前景特征選擇策略,實現了目標檢測高相關特征的精確篩選;繼而,Focus-DETR 進一步
    的頭像 發表于 08-02 15:43 ?329次閱讀
    華為諾亞提出全新<b class='flag-5'>目標</b><b class='flag-5'>檢測器</b>Focus-<b class='flag-5'>DETR</b>

    OpenVINO? C# API詳解與演示

    OpenVINO C# API 支持 NuGet 程序包安裝方式,這與 OpenVINO C++ 庫的安裝過程相比,更加簡單。如果使用 Visual Studio 開發 AI 項目,則可以通過 NuGet 程序包管理功能直接安裝
    的頭像 發表于 10-13 16:39 ?413次閱讀
    <b class='flag-5'>OpenVINO</b>?  C# <b class='flag-5'>API</b>詳解與演示

    基于OpenVINO Python API部署RT-DETR模型

    RT-DETR 是在 DETR 模型基礎上進行改進的,一種基于 DETR 架構的實時端到端檢測器,它通過使用一系列新的技術和算法,實現了更高效的訓練和推理,我們將在 Python、C+
    的頭像 發表于 10-20 11:15 ?563次閱讀
    基于<b class='flag-5'>OpenVINO</b> Python <b class='flag-5'>API</b>部署<b class='flag-5'>RT-DETR</b>模型

    第一個基于DETR的高質量通用目標檢測方法

    現有的DETR系列模型在非COCO數據集上表現較差,且預測框不夠準確。其主要原因是:DETR檢測頭中用全局交叉注意力替換了原來的卷積,刪除了以中心為中心的先驗知識;另一方面,DETR
    的頭像 發表于 11-01 16:12 ?359次閱讀
    第一個基于<b class='flag-5'>DETR</b>的高質量通用<b class='flag-5'>目標</b><b class='flag-5'>檢測</b>方法

    基于OpenVINO C++ API部署RT-DETR模型

    RT-DETR 是在 DETR 模型基礎上進行改進的,一種基于 DETR 架構的實時端到端檢測器,它通過使用一系列新的技術和算法,實現了更高效的訓練和推理,在前文我們發表了《基于
    的頭像 發表于 11-03 14:30 ?397次閱讀
    基于<b class='flag-5'>OpenVINO</b> C++ <b class='flag-5'>API</b>部署<b class='flag-5'>RT-DETR</b>模型

    基于OpenVINO C# API部署RT-DETR模型

    RT-DETR 是在 DETR 模型基礎上進行改進的,一種基于 DETR 架構的實時端到端檢測器,它通過使用一系列新的技術和算法,實現了更高效的訓練和推理,在前文我們發表了《基于
    的頭像 發表于 11-10 16:59 ?417次閱讀
    基于<b class='flag-5'>OpenVINO</b> C# <b class='flag-5'>API</b>部署<b class='flag-5'>RT-DETR</b>模型

    百度開源DETRs在實時目標檢測中勝過YOLOs

    這篇論文介紹了一種名為RT-DETR的實時檢測Transformer,是第一個實時端到端目標檢測器。
    的頭像 發表于 03-06 09:24 ?395次閱讀
    百度開源DETRs在實時<b class='flag-5'>目標</b><b class='flag-5'>檢測</b>中勝過YOLOs
    亚洲欧美日韩精品久久_久久精品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>