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

還不會機器學(xué)習模型部署?15 張圖帶你走進TensorFlow 部署框架!

人工智能 機器學(xué)習
我根據(jù)自己的經(jīng)驗針對機器學(xué)習的模型部署進行了科普。在傳統(tǒng)編程中,我們將規(guī)則和數(shù)據(jù)傳遞給程序獲得我們想要的答案,而對于機器學(xué)習而言,我們是通過答案和數(shù)據(jù)訓(xùn)練出規(guī)則,這個規(guī)則就是機器學(xué)習的模型。

開篇

前幾日與一位從事開發(fā)3年的朋友小李聊天,得知他所在的企業(yè)正在進行機器學(xué)習相關(guān)的項目。最近,他接到了一個任務(wù),就是將訓(xùn)練好的機器學(xué)習模型進行部署。這可愁壞了小李,他接觸機器學(xué)習開發(fā)差不多有小半年了,主要從事收集數(shù)據(jù)、數(shù)據(jù)清洗、搭建環(huán)境、訓(xùn)練模型、模型評估的相關(guān)工作,但做模型部署還是第一次。

于是,我根據(jù)自己的經(jīng)驗針對機器學(xué)習的模型部署進行了科普。如圖1 所示,在傳統(tǒng)編程中,我們將規(guī)則和數(shù)據(jù)傳遞給程序獲得我們想要的答案,而對于機器學(xué)習而言,我們是通過答案和數(shù)據(jù)訓(xùn)練出規(guī)則,這個規(guī)則就是機器學(xué)習的模型。

圖1 傳統(tǒng)編程和機器學(xué)習的區(qū)別

而機器學(xué)習的模型部署就是要將這個規(guī)則(模型)部署到需要應(yīng)用機器學(xué)習的終端上。如圖2 所示,機器學(xué)習所訓(xùn)練出來的模型,可以理解為函數(shù)、API或者SDK,部署到對應(yīng)的終端上(圖中灰色部分)。部署之后終端就具備模型所賦予的能力,此時輸入新的數(shù)據(jù)就可以根據(jù)規(guī)則(模型)得到預(yù)測的結(jié)果。

圖2 機器學(xué)習模型部署原理

TensorFlow 機器學(xué)習部署框架

小李聽了我的介紹表示能夠理解,并饒有興致地將他們項目的部署情況向我全盤托出,想征求我的意見。如圖3所示,他們要將一個圖像識別的模型分別部署到IOS、Android、樹莓派、Web瀏覽器以及服務(wù)器端。

圖3 模型部署場景

從部署的應(yīng)用場景來看,具有輕量級、跨平臺的特點。同一個機器學(xué)習模型要部署到多個不同的平臺,每個平臺的存儲和運算能力都不相同。同時,還是兼顧模型運行的可用性、性能、安全性、可擴展性,需要使用相對穩(wěn)定的大平臺。于是,我把TensorFlow 的機器學(xué)習部署框架推薦給他。如圖4所示,TensorFlow的部署框架針對不同平臺分別提供組件進行支撐。其中Android、IOS、樹莓派對應(yīng)的是TensorFlow Lite,它是專門用于移動端的模型部署框架。瀏覽器端可以使用TensorFlow.js,而服務(wù)器端可以使用TensorFlow Serving。

圖4 TensorFlow 機器學(xué)習模型部署框架

TensorFlow Lite 實際操作

小李想了解更加具體的部署過程,剛好我手上有一個項目用到了TensorFlow 的部署框架,于是將其過程演示給他看看。這個項目是要將“貓狗識別”的模型部署到Android 手機上,由于IOS 、Android、樹莓派、瀏覽器都屬于客戶端,其擁有的運算資源不可能和服務(wù)器相比。特別是移動端的應(yīng)用都有輕量、低延遲、高效、隱私保護、省電等特點,因此TensorFlow 對其進行的專門的部署設(shè)計,并使用TensorFlow Lite 對其進行部署。

利用TensorFlow Lite 對模型進行部署需要三步:

  1.  使用TensorFlow 訓(xùn)練模型。
  2.  轉(zhuǎn)化TensorFlow Lite 格式。
  3. 使用TensorFlow Lite 解釋器加載執(zhí)行。

第一步,我們在模型訓(xùn)練已經(jīng)完成了,第二步是將生成好的模型轉(zhuǎn)化成TensorFlow Lite 能夠識別和使用的模式格式。正如上面所提到的,模型是在移動端使用的需要考慮各方面的問題,因此需要針對移動端生成專門的文件格式。第三部就是將轉(zhuǎn)化好的TensorFlow Lite文件加載到移動端的解釋器中并執(zhí)行。

由于我們的重點在模型的部署,因此第一步的訓(xùn)練模型暫時跳過,也就是假設(shè)你已經(jīng)訓(xùn)練好模型了。針對第二步的模型轉(zhuǎn)化可以參考圖5,TensorFlow 的模型會通過Converter 將其轉(zhuǎn)化成后綴是”.tflite”的模型文件,然后發(fā)布到不同的平臺,通過每個平臺上的解釋器對其進行解釋和加載。

圖5 TensorFlow Lite 模型轉(zhuǎn)化架構(gòu)

模型保存和轉(zhuǎn)化

上面介紹了TensorFlow Lite 的架構(gòu),這里需要將模型保存為TensorFlow 模型,并對其進行轉(zhuǎn)化。如圖6 所示,我們調(diào)用TensorFlow 中的saved_model.save方法將model(訓(xùn)練好的模型)保存在指定目錄中。

圖6 保存TensorFlow 模型

保存完模型之后就是轉(zhuǎn)化模型了,如圖7 所示,調(diào)用TensorFlow Lite 中的TFLiteConverter包中的from_saved_model方法生成converter(模型轉(zhuǎn)化器)的實例,然后調(diào)用converter中的convert方法對模型進行轉(zhuǎn)化,并將轉(zhuǎn)換好的文件保存到指定目錄。

圖7 轉(zhuǎn)化為tflite 模型格式

加載應(yīng)用模型

由于本例是針對Android 系統(tǒng)的模型部署,因此需要在Android 中引入TensorFlow Lite的依賴。如圖8 所示,引入TensorFlow Lite的依賴,同時在aaptOptions 中設(shè)置noCompress 為“tflite”意思是對與“tflite”的文件不進行壓縮,如果設(shè)置壓縮Android系統(tǒng)可能無法識別tflite的文件。

圖8 項目中引入TensorFlow Lite的依賴

配置好依賴之后,再將轉(zhuǎn)換好的tflite文件拷貝到assets文件下面,如圖9所示,等下會加載這個文件執(zhí)行機器學(xué)習的模型。

圖9 添加tflite文件

添加完tflite文件之后,我們會創(chuàng)建Classifier 分類器,用來對“貓狗”圖片進行分類。如圖10 所示,在Classifer中的init中會對解釋器(interpreter)進行初始化,調(diào)用loadModuleFlie方法加載tflite文件,同時指定分類標簽(labelList),這里的標簽就是“cat dog”(貓狗)。

圖10 初始化解釋器

在創(chuàng)建分類器之后,就是利用貓狗的分類模型對圖片進行識別了。也就是在Classifier類中,如圖10所示,convertBitmapToByteBuffer方法輸入?yún)?shù)是bitmap,這個是我們輸入的貓狗的圖片,在這個方法中會對其進行轉(zhuǎn)化,特別注意的是在for 循環(huán)中對紅綠藍三個通道轉(zhuǎn)化,將轉(zhuǎn)換的結(jié)果放入到byteBuffer 中并且返回。recoginzeImage 方法會調(diào)用convertBitmapToByteBuffer,并利用解釋器interpreter 的run方法執(zhí)行圖片識別的工作,也就是利用機器學(xué)習的模型識別貓狗的圖片。

圖11 對圖片進行識別

上面的圖形轉(zhuǎn)化過程過于抽象,我們將其具體為圖12 所示內(nèi)容。我們輸入的圖像是圖左上方的395*500的圖片,會把imageView中的圖片轉(zhuǎn)化為bitmap的形式。由于我們的模型輸入需要224*224 的格式,因此需要做一次轉(zhuǎn)換。接著,把像素放入到224*224 的ByteBuffer的數(shù)組中保存,最后對RGB(紅綠藍)的像素進行歸一化(除以255),作為模型的輸入?yún)?shù)。

圖12 輸入圖像的轉(zhuǎn)化過程

到這里機器學(xué)習模型的加載和應(yīng)用就完成,當然還少不了輸入的文件和布局。如圖13 所示,我們在drawable 文件夾下面存放需要預(yù)測的圖片(貓狗圖片)。然后在layout下面創(chuàng)建activity_image_classifier.xml文件用來構(gòu)建存放ImageView。

圖13 輸入圖片文件和布局文件

最后,創(chuàng)建ImageClassifierActivity 用來展示圖片和響應(yīng)識別圖片的事件。如圖14 所示,在initViews方法中綁定每張圖片的onclick事件,然后在onclick方法中調(diào)用recoginzie Image方法對圖片進行識別。

圖14 在onclick 中執(zhí)行圖片識別

讓我們來看看效果。如圖15 所示,當點擊對應(yīng)圖片以后會顯示“dog”的提示,表示預(yù)測結(jié)果。

圖15 演示效果

回顧整個過程并不復(fù)雜,我將TensorFlow lite 部署模型總結(jié)為如下幾步:

  1.  保存機器學(xué)習模型。
  2. 轉(zhuǎn)化模型為tflite格式。
  3.  加載tflite格式的模型。
  4.  利用解釋器加載模型。
  5.  輸入?yún)?shù)預(yù)測結(jié)果。

想更進一步學(xué)習TensorFlow 模型部署技能的同學(xué),可以去學(xué)TensorFlow的官方課程,在中國大學(xué)MOOC上注冊一個賬號,免費學(xué)習:??https://www.icourse163.org/course/youdao-1467217161?from=searchPage&outVendor=zw_mooc_pcssjg_。??

還有谷歌開發(fā)者專家做的部署在線講解和答疑,非常不錯,推薦想初步了解TensorFlow 部署功能的同學(xué)關(guān)注看看 ??https://zhibo.51cto.com/liveDetail/373。??

結(jié)尾

小李聽了我對機器學(xué)習模型部署的講解以及了解TensorFlow 部署的過程以后,對部署實操更是躍躍欲試。我覺得用TensorFlow 部署過程邏輯清晰,方法簡單易行,對于3-5年經(jīng)驗的開發(fā)人員來說容易上手。另外,TensorFlow官方還提供了《TensorFlow入門實操課程》,適合機器學(xué)習零基礎(chǔ)的新手:??https://www.icourse163.org/course/youdao-1460578162?from=searchPage&outVendor=zw_mooc_pcssjg_。??

作者介紹

崔皓,51CTO社區(qū)編輯,資深架構(gòu)師,擁有20年架構(gòu)經(jīng)驗。曾任惠普技術(shù)專家,參與多個機器學(xué)習項目,撰寫、翻譯20多篇機器學(xué)習、NLP等熱門技術(shù)文章。《分布式架構(gòu)原理與實踐》作者。

責任編輯:姜華 來源: 51CTO
相關(guān)推薦

2024-09-09 11:45:15

ONNX部署模型

2020-03-10 08:33:04

HTTP演變協(xié)議

2009-12-09 13:41:50

PHP Zend框架

2019-10-23 08:00:00

Flask機器學(xué)習人工智能

2024-02-20 15:17:35

機器學(xué)習模型部署

2021-01-25 09:00:00

機器學(xué)習人工智能算法

2024-10-12 08:00:00

機器學(xué)習Docker

2022-09-07 08:00:00

機器學(xué)習MLFlow工具

2021-05-18 06:55:07

Java AQS源碼

2018-11-07 09:00:00

機器學(xué)習模型Amazon Sage

2017-04-26 15:00:00

機器學(xué)習TensorFlow模型部署

2021-11-02 09:40:50

TensorFlow機器學(xué)習人工智能

2023-09-28 08:01:32

2019-01-23 11:12:42

機器學(xué)習機器模型預(yù)測工資

2025-02-17 08:00:00

機器學(xué)習開發(fā)Docker

2020-03-26 08:00:00

機器學(xué)習人工智能AI

2023-02-07 16:36:34

機器學(xué)習Docker無服務(wù)器

2024-03-26 09:11:13

TensorFlow深度學(xué)習Pipeline

2023-01-06 18:50:55

架構(gòu)應(yīng)用

2020-06-28 07:39:44

Kafka分布式消息
點贊
收藏

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

主站蜘蛛池模板: 国产午夜精品一区二区三区四区 | 成人在线视频免费观看 | 亚洲一区二区三区免费视频 | 久草精品视频 | 在线观看av网站 | 国产日韩欧美激情 | 欧美三区| 中文字幕av亚洲精品一部二部 | 美女视频三区 | 亚洲精品久久久久久首妖 | 亚洲一区二区在线视频 | 成人免费观看视频 | 国产 日韩 欧美 制服 另类 | 中文字幕精品一区 | 国产美女精品视频免费观看 | 亚洲精品久久久久久久久久久久久 | 婷婷在线视频 | 一区二区三区在线免费观看视频 | 中文在线播放 | 韩日精品在线观看 | 欧美日韩视频在线第一区 | 美女国产精品 | 久久久久亚洲精品国产 | 拍真实国产伦偷精品 | 在线日韩中文字幕 | 中文在线www | 9999久久| 天天躁日日躁狠狠的躁天龙影院 | 亚洲a在线观看 | 国产一级免费视频 | 亚洲图片一区二区三区 | 偷偷操视频 | 久久精品小视频 | 欧美性猛交一区二区三区精品 | 亚洲国产成人精 | 色综合天天天天做夜夜夜夜做 | 欧美黄a | 国产精品我不卡 | 久久久久久成人网 | 欧美亚洲国产一区二区三区 | 国产精品久久久久久久午夜 |