成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

5分鐘!用Java實(shí)現(xiàn)目標(biāo)檢測

新聞 前端
作為一個(gè)Java開發(fā)者,你是否曾為在PyTorch上部署模型而苦惱?這篇來自AWS軟件工程師的投稿,結(jié)合實(shí)例,詳細(xì)介紹了DJL這個(gè)為Java開發(fā)者設(shè)計(jì)的深度學(xué)習(xí)庫:5分鐘,你就能在PyTorch上,用Java實(shí)現(xiàn)目標(biāo)檢測。

 本文經(jīng)AI新媒體量子位(公眾號(hào)ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。

編者按:作為一個(gè)Java開發(fā)者,你是否曾為在PyTorch上部署模型而苦惱?這篇來自AWS軟件工程師的投稿,結(jié)合實(shí)例,詳細(xì)介紹了DJL這個(gè)為Java開發(fā)者設(shè)計(jì)的深度學(xué)習(xí)庫:5分鐘,你就能在PyTorch上,用Java實(shí)現(xiàn)目標(biāo)檢測。

5分鐘!用Java實(shí)現(xiàn)目標(biāo)檢測 | PyTorch

PyTorch在深度學(xué)習(xí)領(lǐng)域中的應(yīng)用日趨廣泛,得益于它獨(dú)到的設(shè)計(jì)。無論是數(shù)據(jù)的并行處理還是動(dòng)態(tài)計(jì)算圖,一切都為Python做出了很多簡化。很多論文都選擇使用PyTorch去實(shí)現(xiàn)也證明了它在訓(xùn)練方面的效率以及易用性。

在PyTorch領(lǐng)域,盡管部署一個(gè)模型有很多選擇,可為Java開發(fā)人員準(zhǔn)備的選項(xiàng)卻屈指可數(shù)。

在過去,用戶可以用PyTorch C++ 寫JNI (Java Native Interface) 來實(shí)現(xiàn)這個(gè)過程。最近,PyTorch 1.4 也發(fā)布了試驗(yàn)性的Java 前端。

可是這兩種解決方案都沒有辦法能讓Java開發(fā)者很好的使用:用戶需要從易于使用和易于維護(hù)中二選一。

針對(duì)于這個(gè)問題,亞馬遜云服務(wù) (AWS)開源了 Deep Java Library (DJL),一個(gè)為Java開發(fā)者設(shè)計(jì)的深度學(xué)習(xí)庫。它兼顧了易用性和可維護(hù)性,一切運(yùn)行效率以及內(nèi)存管理問題都得到了很好的處理。

DJL使用起來異常簡單。只需幾行代碼,用戶就可以輕松部署深度學(xué)習(xí)模型用作推理。那么我們就開始上手用DJL部署一個(gè)PyTorch 模型吧。

前期準(zhǔn)備

用戶可以輕松使用maven或者gradle等Java常用配置管理包來引用DJL。下面是一個(gè)示例:

  1. plugins { 
  2.     id 'java' 
  3. repositories {                            
  4.     jcenter() 
  5. dependencies { 
  6.     implementation "ai.djl:api:0.4.0" 
  7.     implementation "ai.djl:repository:0.4.0" 
  8.     runtimeOnly "ai.djl.pytorch:pytorch-model-zoo:0.4.0" 
  9.     runtimeOnly "ai.djl.pytorch:pytorch-native-auto:1.4.0" 

然后只需gradle build,基本配置就大功告成了。

開始部署模型

我們用到的目標(biāo)檢測模型來源于NVIDIA在torchhub發(fā)布的預(yù)訓(xùn)練模型。我們用下面這張圖來推理幾個(gè)可以識(shí)別的物體(狗,自行車以及皮卡)。

5分鐘!用Java實(shí)現(xiàn)目標(biāo)檢測 | PyTorch

可以通過下面的代碼來實(shí)現(xiàn)推理的過程:

  1. public static void main(String[] args) throws IOException, ModelException, TranslateException { 
  2.     String url = "https://github.com/awslabs/djl/raw/master/examples/src/test/resources/dog_bike_car.jpg"
  3.     BufferedImage img = BufferedImageUtils.fromUrl(url); 
  4.  
  5.     Criteria<BufferedImage, DetectedObjects> criteria = 
  6.             Criteria.builder() 
  7.                     .optApplication(Application.CV.OBJECT_DETECTION) 
  8.                     .setTypes(BufferedImage.class, DetectedObjects.class
  9.                     .optFilter("backbone""resnet50"
  10.                     .optProgress(new ProgressBar()) 
  11.                     .build(); 
  12.  
  13.     try (ZooModel<BufferedImage, DetectedObjects> model = ModelZoo.loadModel(criteria)) { 
  14.         try (Predictor<BufferedImage, DetectedObjects> predictor = model.newPredictor()) { 
  15.             DetectedObjects detection = predictor.predict(img); 
  16.             System.out.println(detection); 
  17.         } 
  18.     } 

然后,就結(jié)束了。相比于其他解決方案動(dòng)輒上百行的代碼,DJL把所有過程簡化到了不到30行完成。那么我們看看輸出的結(jié)果:

  1.     class"dog", probability: 0.96709, bounds: [x=0.165, y=0.348, width=0.249, height=0.539
  2.     class"bicycle", probability: 0.66796, bounds: [x=0.152, y=0.244, width=0.574, height=0.562
  3.     class"truck", probability: 0.64912, bounds: [x=0.609, y=0.132, width=0.284, height=0.166

你也可以用我們目標(biāo)檢測圖形化API來看一下實(shí)際的檢測效果:

5分鐘!用Java實(shí)現(xiàn)目標(biāo)檢測 | PyTorch

你也許會(huì)說,這些代碼都包裝的過于厲害,真正的小白該如何上手呢?

讓我們仔細(xì)的看一下剛才的那段代碼:

  1. // 讀取一張圖片 
  2.    String url = "https://github.com/awslabs/djl/raw/master/examples/src/test/resources/dog_bike_car.jpg"
  3.    BufferedImage img = BufferedImageUtils.fromUrl(url); 
  4.    // 創(chuàng)建一個(gè)模型的尋找標(biāo)準(zhǔn) 
  5.    Criteria<BufferedImage, DetectedObjects> criteria = 
  6.            Criteria.builder() 
  7.                    // 設(shè)置應(yīng)用類型:目標(biāo)檢測 
  8.                    .optApplication(Application.CV.OBJECT_DETECTION) 
  9.                    // 確定輸入輸出類型 (使用默認(rèn)的圖片處理工具) 
  10.                    .setTypes(BufferedImage.class, DetectedObjects.class
  11.                    // 模型的過濾條件 
  12.                    .optFilter("backbone""resnet50"
  13.                    .optProgress(new ProgressBar()) 
  14.                    .build(); 
  15.  
  16.    // 創(chuàng)建一個(gè)模型對(duì)象 
  17.    try (ZooModel<BufferedImage, DetectedObjects> model = ModelZoo.loadModel(criteria)) { 
  18.        // 創(chuàng)建一個(gè)推理對(duì)象 
  19.        try (Predictor<BufferedImage, DetectedObjects> predictor = model.newPredictor()) { 
  20.            // 推理 
  21.            DetectedObjects detection = predictor.predict(img); 
  22.            System.out.println(detection); 
  23.        } 
  24.    } 

這樣是不是清楚了很多?DJL建立了一個(gè)模型庫(ModelZoo)的概念,引入了來自于GluonCV, TorchHub, Keras 預(yù)訓(xùn)練模型, huggingface自然語言處理模型等70多個(gè)模型。所有的模型都可以一鍵導(dǎo)入,用戶只需要使用默認(rèn)或者自己寫的輸入輸出工具就可以實(shí)現(xiàn)輕松的推理。我們還在不斷的添加各種預(yù)訓(xùn)練模型。

了解DJL

5分鐘!用Java實(shí)現(xiàn)目標(biāo)檢測 | PyTorch

DJL是亞馬遜云服務(wù)在2019年re:Invent大會(huì)推出的專為Java開發(fā)者量身定制的深度學(xué)習(xí)框架,現(xiàn)已運(yùn)行在亞馬遜數(shù)以百萬的推理任務(wù)中。

如果要總結(jié)DJL的主要特色,那么就是如下三點(diǎn):

  • DJL不設(shè)限制于后端引擎:用戶可以輕松的使用 MXNet, PyTorch, TensorFlow和fastText來在Java上做模型訓(xùn)練和推理。
  • DJL的算子設(shè)計(jì)無限趨近于numpy:它的使用體驗(yàn)上和numpy基本是無縫的,切換引擎也不會(huì)造成結(jié)果改變。
  • DJL優(yōu)秀的內(nèi)存管理以及效率機(jī)制:DJL擁有自己的資源回收機(jī)制,100個(gè)小時(shí)連續(xù)推理也不會(huì)內(nèi)存溢出。

James Gosling (Java 創(chuàng)始人) 在使用后給出了贊譽(yù):

5分鐘!用Java實(shí)現(xiàn)目標(biāo)檢測 | PyTorch

對(duì)于PyTorch的支持

DJL現(xiàn)已支持PyTorch 1.5。我們深度整合了PyTorch C++ API,開發(fā)了一套JNI提供Java的底層支持。DJL提供各類PyTorch原生算子算法,現(xiàn)在支持所有的 TorchScript模型。

現(xiàn)在可以在 Mac/Linux/Windows全平臺(tái)運(yùn)行DJL PyTorch。DJL具有自檢測CUDA版本的功能,也會(huì)自動(dòng)采用對(duì)應(yīng)的CUDA版本包來運(yùn)行g(shù)pu任務(wù)。

 

責(zé)任編輯:張燕妮 來源: 量子位
相關(guān)推薦

2012-06-28 10:26:51

Silverlight

2018-12-12 09:12:54

深度學(xué)習(xí)百度PaddlePaddl

2020-09-14 11:30:26

HTTP3運(yùn)維互聯(lián)網(wǎng)

2021-04-30 16:23:58

WebRTC實(shí)時(shí)音頻

2021-01-29 11:43:53

SSHLinux命令

2012-02-24 11:11:43

Platform

2017-03-16 08:46:57

延時(shí)消息環(huán)形隊(duì)列數(shù)據(jù)結(jié)構(gòu)

2009-11-16 09:53:56

PHP上傳類

2010-11-03 11:01:05

求職面試

2020-11-23 16:23:59

CSS設(shè)計(jì)技術(shù)

2020-12-17 10:00:16

Python協(xié)程線程

2011-07-11 09:58:52

2021-01-29 11:25:57

Python爬山算法函數(shù)優(yōu)化

2021-03-12 09:45:00

Python關(guān)聯(lián)規(guī)則算法

2009-11-26 11:19:52

NIS服務(wù)器

2014-04-17 11:34:23

青云青云QingCloudIaaS

2020-12-07 11:23:32

Scrapy爬蟲Python

2020-05-15 07:30:08

黑客Thunderbolt漏洞

2020-02-17 13:45:27

抓取代碼工具

2021-03-23 15:35:36

Adam優(yōu)化語言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲欧洲精品一区 | 九九久久久久久 | 日本一二三区高清 | 99亚洲精品| 国产一区二区中文字幕 | 日韩影音 | 日本午夜网站 | 亚洲精品久久久久久国产精华液 | 91高清在线观看 | 黄色毛片在线观看 | www.日韩系列 | 一级毛片在线播放 | 免费观看av | 久久99精品久久久久久秒播九色 | 成人不卡视频 | 国产亚洲欧美日韩精品一区二区三区 | 一区欧美 | 久久99精品久久 | av在线天堂网 | 国产精品欧美日韩 | 亚洲一区二区三区免费在线观看 | 亚洲成人av | 国产精品高 | 日韩中文字幕一区二区 | 久久精品久久精品久久精品 | 国产精品一区二区在线免费观看 | 色婷婷综合久久久久中文一区二区 | 国产精品91网站 | 欧美一级三级在线观看 | av黄色片在线观看 | 日一区二区| 九九热视频这里只有精品 | jlzzjlzz欧美大全 | 国内自拍偷拍视频 | 九九热在线免费视频 | 免费 视频 1级 | 中文字幕亚洲视频 | 欧美一级二级视频 | 激情欧美一区二区三区中文字幕 | 日屁网站 | 91精品国产91久久久久久吃药 |