日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

识狗君微信小程序的部署

發(fā)布時間:2024/1/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 识狗君微信小程序的部署 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

日歷嘩啦啦的往前翻,很快就要翻過2018,迎來2019年。今天預報了好久的大雪終于降臨到了武漢,外面白雪皚皚,家中溫暖如春,這個時候感覺最愜意。古人有詩云:綠蟻新醅酒,紅泥小火爐。晚來天欲雪,能飲一杯無?,而現(xiàn)代人則在朋友圈中歡呼著下雪,各有各的慶祝方式,并無高下之分。

在后臺有收到朋友詢問識狗君微信小程序的部署,我開始覺得之前的幾篇文章已經(jīng)講的很清楚,問的朋友多了,返回去再看,發(fā)覺幾篇文章是站在開發(fā)的角度寫的,比較散,決定在2018年最后的一篇文章整理一下關(guān)于識狗君微信小程序的部署,算是對2018年機器學習項目的一個總結(jié)。

如果你還不了解識狗君微信小程序這個項目,請參考以下幾篇文章:

當微信小程序遇上TensorFlow:Server端實現(xiàn)

當微信小程序遇上TensorFlow:Server端實現(xiàn)補充

當微信小程序遇上TensorFlow:小程序?qū)崿F(xiàn)

當微信小程序遇上TensorFlow:接收base64編碼圖像數(shù)據(jù)

當微信小程序遇上TensorFlow:終章

項目主頁: https://github.com/mogoweb/AIDog

說是微信小程序的部署,但本文并不打算講解如何申請、開發(fā)和審核微信小程序,而是說明服務(wù)端的部署。如果想了解微信小程序的開發(fā),請參考騰訊官方文檔。

以下步驟中涉及到的模型、數(shù)據(jù)集,我上傳到了百度網(wǎng)盤,可以根據(jù)需要下載:

鏈接: https://pan.baidu.com/s/1kaoiV_uMFS_7IK-HMO1G8A 提取碼: ct9e

訓練模型

這個步驟是可選步驟,你可以使用訓練好的模型:inception_v3.tar.gz,這個版本是我在Google官方inception V3模型的基礎(chǔ)上,使用stanford dog datasets數(shù)據(jù)集訓練而得的模型,請注意和原版的區(qū)別。

如果想自行訓練模型,請接著往下看。

帶標簽的狗狗數(shù)據(jù)集采用stanford dog datasets,請自行下載并解壓,然后執(zhí)行如下命令進行訓練:

python retrain.py --image_dir=./Images --saved_model_dir=models/inception_v3 --model_version 2

訓練的模型保存于models/inception_v3/2,其中2是版本號,可以通過retrain.py腳本的命令行參數(shù)進行指定。

注意: 這個訓練過程會從網(wǎng)絡(luò)下載Inception V3原版模型,需要翻墻才行。無法翻墻的朋友也可以采用如下的方法,將tfhub_modules.tgz的內(nèi)容解壓到/tmp目錄下,內(nèi)容大體如下:

alex@alex-550-279cn:~/work/ai/workspace/AIDog/serving$ ls -la /tmp/tfhub_modules/ total 88 drwxr-xr-x 3 alex alex 4096 12月 30 19:27 . drwxrwxrwt 15 root root 73728 12月 30 19:31 .. drwxr-xr-x 4 alex alex 4096 10月 9 10:04 11d9faf945d073033780fd924b2b09ff42155763 -rw-rw-r-- 1 alex alex 161 10月 9 10:04 11d9faf945d073033780fd924b2b09ff42155763.descriptor.txt alex@alex-550-279cn:~/work/ai/workspace/AIDog/serving$

這個訓練過程有點長,在我的PC上帶GTX 960的顯卡訓練,大約需要兩個小時。

讓模型接收base64編碼圖像

通過上一個步驟訓練出的模型接收的是(299, 299, 3)的二進制圖像數(shù)據(jù),這種二進制數(shù)據(jù)不方便通過HTTP傳遞,HTTP傳輸二進制數(shù)據(jù)常用的方案是對二進制數(shù)據(jù)進行base64編碼。

如何看出模型接收什么類型數(shù)據(jù)?我們可以通過save_model_cli.py腳本查看模型的簽名,這個腳本由tensorflow提供,如果你下載了tensorflow源碼,在其 tensorflow/python/tools/ 目錄下,可以使用如下命令查看我們訓練出來的模型:

python ~/work/ai/tensorflow/tensorflow/tensorflow/python/tools/saved_model_cli.py show --dir ~/work/ai/workspace/AIDog/serving/models/inception_v3/2 --allMetaGraphDef with tag-set: 'serve' contains the following SignatureDefs:signature_def['serving_default']:The given SavedModel SignatureDef contains the following input(s):inputs['image'] tensor_info:dtype: DT_FLOATshape: (-1, 299, 299, 3)name: Placeholder:0The given SavedModel SignatureDef contains the following output(s):outputs['prediction'] tensor_info:dtype: DT_FLOATshape: (-1, 120)name: final_result:0Method name is: tensorflow/serving/predict

從中我們可以看出模型的輸入?yún)?shù)名為image,其shape為(-1, 299, 299, 3),這里-1代表可以批量輸入,通常我們只輸入一張圖像,所以這個維度通常是1。輸出參數(shù)名為prediction,其shape為(-1, 120),-1和輸入是對應(yīng)的,120代表120組狗類別的概率。

為了讓模型接收base64編碼圖片,我們在模型的輸入前面增加一層,進行base64及解碼處理:

python rebuild_model.py --model_dir models/inception_v3/3 --origin_model_dir models/inception_v3/2/

其中:

  • model_dir 參數(shù)為接收base64輸入模型輸出的目錄
  • origin_model_dir 參數(shù)為上一個步驟訓練出來的模型

這個時候我們再來看看第三個版本模型的簽名:

python ~/work/ai/tensorflow/tensorflow/tensorflow/python/tools/saved_model_cli.py show --dir ~/work/ai/workspace/AIDog/serving/models/inception_v3/3 --allMetaGraphDef with tag-set: 'serve' contains the following SignatureDefs:signature_def['serving_default']:The given SavedModel SignatureDef contains the following input(s):inputs['image'] tensor_info:dtype: DT_STRINGshape: unknown_rankname: base64_string:0The given SavedModel SignatureDef contains the following output(s):outputs['prediction'] tensor_info:dtype: DT_FLOATshape: (-1, 120)name: import_1/final_result:0Method name is: tensorflow/serving/predict

可以看到,模型的輸入為字符串數(shù)據(jù),即base64編碼字符串。

申請證書

因為微信小程序要求HTTP請求走更加安全的HTTPS協(xié)議,所以必須提供一個SSL證書。

我們可以上阿里云申請一個免費的證書,雖然有效期只有一年,但商業(yè)用的證書比較貴,根據(jù)需要選擇吧。需要注意的是,阿里云上申請證書很隱蔽,我也是嘗試了好幾個組合,那個免費證書的選項才出現(xiàn)。因為我的主機就是托管在阿里云上,域名也是使用阿里云的DNS服務(wù),所以申請完后,很快就審核通過,然后就可以下載證書。證書下載時我選擇證書for Nginx,下載下來就是兩個文件:一個pem文件,一個key文件。

安裝Simple TensorFlow Serving

這個Simple TensorFlow Serving是一個Google官方TensorFlow Serving的封裝,是機器學習模型的通用且易于使用的服務(wù)。項目主頁:https://github.com/tobegit3hub/simple_tensorflow_serving

Simple TensorFlow Serving的安裝非常簡單:

pip install simple_tensorflow_serving

啟動服務(wù)

接下來啟動server:

simple_tensorflow_serving --enable_ssl=True --model_base_path="./tensorflow/serving/models/inception_v3" --secret_pem="./certs/215052392380319.pem" --secret_key="./certs/215052392380319.key" --log_level="debug" --debug=True

其中:

  • enable_ssl參數(shù)表示是否啟用https
  • model_base_path指定模型的基礎(chǔ)路徑,需要注意的是,這個基礎(chǔ)路徑不帶版本號數(shù)字,我們可以有多個版本的模型,所以這個目錄下可能有1, 2, 3之類的子目錄,分別對應(yīng)不同版本的模型,微信小程序或客戶端可以選擇使用哪個版本
  • secret_pem 和 secret_key 為證書申請過程中獲得的兩個證書文件
  • 后面兩個參數(shù)用于調(diào)試,可以不用

要驗證服務(wù)器是否部署成功,可以使用簡單的客戶端程序測試一下:

python test_client.py --image=./Images/n02116738-African_hunting_dog/n02116738_1105.jpg

結(jié)果如下:

n02116738 african hunting dog 0.780203342438 n02115913 dhole 0.0102733308449 n02092002 scottish deerhound 0.00600153999403

前面是類別標簽,后面是屬于某個類別的概率,上面結(jié)果中Top 1概率0.78。

微信小程序的代碼可以參見github項目,這里就不多說明了。

Q & A

  • 在執(zhí)行saved_model_cli.py腳本時,出現(xiàn)如下錯誤是什么原因?
  • /data/ai/anaconda3/envs/keras/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88return f(*args, **kwds) /data/ai/anaconda3/envs/keras/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88return f(*args, **kwds) Traceback (most recent call last):File "tensorflow/python/tools/saved_model_cli.py", line 913, in <module>sys.exit(main())File "tensorflow/python/tools/saved_model_cli.py", line 909, in mainargs.func(args)File "tensorflow/python/tools/saved_model_cli.py", line 610, in show_show_all(args.dir)File "tensorflow/python/tools/saved_model_cli.py", line 192, in _show_alltag_sets = saved_model_utils.get_saved_model_tag_sets(saved_model_dir) AttributeError: module 'tensorflow.python.tools.saved_model_utils' has no attribute 'get_saved_model_tag_sets'

    : 是由于tensorflow源碼和python環(huán)境中安裝的tensorflow包版本不一致,可以使用python環(huán)境中安裝的tensorflow包中的那個saved_model_cli.py腳本。

    小結(jié)

    到這里,關(guān)于識狗君微信小程序的部署就講完了,如果這個步驟中有疑問的地方,請與我聯(lián)系。

    馬上就要到2019年了,在這里祝各位朋友在2019年工作順利,心想事成!

    總結(jié)

    以上是生活随笔為你收集整理的识狗君微信小程序的部署的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。