小白入門:在阿里云云開發平臺訓練和部署圖片分類模型

前面寫了一篇文章 如今開始:用你的Mac訓練和部署一個圖片分類模型,有同窗就說了,沒有 Mac 電腦怎麼辦? 沒有Mac 電腦也能夠體驗機器學習啦。python

這篇文章教你們如何在阿里云云開發平臺徒手訓練和部署一個圖片分類模型~~~~git

建立應用

首先咱們進入阿里云云開發平臺 workbench.aliyun.com ,點擊免費雲開發,用本身的阿里雲帳號登陸。github

image.png

登陸後,新建團隊,在團隊下新建產品,而後在選擇一個產品點擊進入,新建應用。若是已有團隊和產品,直接選擇一個產品,在此產品下新建應用。json

建立應用選擇 WEB 下的 Python 先後端一體化應用方案。後端

image.png 應用名稱填 姓名-做業名稱, Region 選擇杭州。 image.pngbash

建立完成後,點擊「開發部署」進入。markdown

image.png

進入應用後,刪除應用下的文件,保留 .gitignore 和 .workbench。app

而後打開終端, clone 講師準備好的代碼並進入項目。curl

git clone https://github.com/imgcook/ml-mac-classify.git
複製代碼

image.png

項目目錄以下:機器學習

.
├── deploy-project   // 部署代碼
│   ├── app.py
│   └── label.json
├── predict-project  // 預測代碼
│   ├── predict.py
│   └── test
├── README.md
└── train-project   //訓練代碼
    ├── CNN_net.py
    ├── dataset
    ├── nn_train.py
    └── utils_paths.py
複製代碼

環境準備

注意:咱們如今是在你當前開的終端 Tab 下安裝環境,

安裝 Anaconda

下載:

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.3.1-Linux-x86_64.sh
複製代碼

安裝:

bash Anaconda3-5.3.1-Linux-x86_64.sh
複製代碼

image.png

執行安裝命令後提示: image.png

按提示按下 enter(回車) 鍵以後,出現一個「MORE」的字樣。 image.png 一直按空格會往下打印 licence。一直按住空格直到看到下面的命令,而後輸入 yes 接受協議, 而後按 ENTER(回車)確認安裝位置。

image.png

而後開始安裝: image.png

詢問是否在環境中配置 anaconda 的環境,輸入 yes image.png 詢問是否安裝vscode?輸入 no image.png 安裝成功後,在終端命令行執行如下命令,使環境變量當即生效:

source ~/.bashrc
複製代碼

能夠執行如下命令,查看環境變量

cat ~/.bashrc
複製代碼

能夠看到 anaconda 的環境變量已經自動添加到 .bashrc 文件了

image.png

執行如下命令能夠看到 Anaconda 中有不少已經安裝好的包,若是有使用到這些包的就不須要再安裝了,python 環境也裝好了。

conda list
複製代碼

image.png

安裝相關依賴

先升級 pip 版本

pip install -U pip -i https://pypi.tuna.tsinghua.edu.cn/simple
複製代碼

安裝依賴:

pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install keras -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
複製代碼
$ pip install tensorflow --ignore-installed wrapt -i https://pypi.tuna.tsinghua.edu.cn/simple
複製代碼

最後,你能夠用 pip list 查看是否安裝成功。

$ pip list
複製代碼

樣本準備

這裏只准備了 4 個分類: button、keyboard、searchbar、switch,放在 train-project/dataset 目錄下,每一個分類 200 個左右的樣本。

image.png image.png image.png image.png

你能夠本身在這裏添加一些樣本,豐富種類和數量。

模型訓練

執行如下命令開始訓練:

# 進入 train-project
$ cd ml-mac-classify/train-project/
# 開始訓練
$ python nn_train.py
複製代碼

已經開始打印訓練日誌: image.png

代碼中設置 epoch 參數爲5 ,訓練 5 輪後結束。

image.png

最後保存訓練結果:

image.png

能夠看到左側生成了兩個文件:模型文件 cnn.model.h5 和 損失函數曲線 cnn_plot.png。(注意 cnn.model.h5 很大,建議不要在此平臺上點擊查看,容易卡死。) image.png

對於實際應用場景下,數據集很大,epoch 參數也會設置比較大,並在高性能的機器上訓練。咱們當前的目的瞭解如何完成一個機器學習的任務,爲了能在較短的時間內訓練完畢,只給了不多的樣原本訓練模型,epoch 也很小(爲 5),固然模型的識別準確率也會不好,。你能夠擴大數據集的數量,並經過調參來提升模型的預測準確度。

部署模型服務

先將 cnn.model.h5 文件拷貝或移動到 deploy-project 中。

# 當前在 trani-project 路徑下
$ mv cnn.model.h5 ../deploy-project
複製代碼

如今  deploy-project 的目錄以下:

.
├── app.py
├── cnn.model.h5
└── label.json
複製代碼

若是有修改樣本種類,須要相應的修改 deploy-project/label.json。例如新增類別 select, 須要在文件中添加 select。

{   
    "button": 0,
    "keyboard": 1,
    "searchbar": 2,
    "switch": 3,
    "select": 4
}
複製代碼

建立 anaconda 的虛擬環境

按如下順序執行命令。

# 進入 delpoy-project, 能夠在終端輸入 pwd 查看當前所在路徑
$ cd ../deploy-project/

# 使用conda建立python環境,目錄需指定固定名字:ENV
$ conda create -p ENV python=3.7

# 安裝EAS python sdk
$ ENV/bin/pip install http://eas-data.oss-cn-shanghai.aliyuncs.com/sdk/allspark-0.9-py2.py3-none-any.whl

# 安裝其它依賴包
$ ENV/bin/pip install tensorflow keras opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple

$ ENV/bin/pip install pillow -i https://pypi.tuna.tsinghua.edu.cn/simple

# 激活虛擬環境
$ conda activate ./ENV

# 退出虛擬環境(不使用時執行 $ conda deactivate)
複製代碼

部署服務

如今能夠本地部署了,執行如下命令:

./ENV/bin/python app.py
複製代碼

下面的日誌能夠看到部署成功。

image.png

部署成功後,能夠經過 localhost:8080/predict 訪問模型服務了。

新打開一個終端 Tab, 咱們用 curl 命令來發一個 post 請求, 預測圖片分類, images  能夠替換爲你的圖片。

curl -X POST 'localhost:8080/predict' \
-H 'Content-Type: application/json' \
-d '{
  "images": ["https://img.alicdn.com/tfs/TB1W8K2MeH2gK0jSZJnXXaT1FXa-638-430.png"],
  "threshold": 0.5
}'
複製代碼

獲得預測結果(這裏預測的結果是錯的):

{"content": [{"isConfident": true, "label": "keyboard"}]}
複製代碼

image.png

注意事項

  • 文檔中環境安裝每一步都要成功,否則容易遇到各類環境問題。
  • 模型文件 cnn.model.h5 特別大,不要點擊查看, 否則整個頁面會卡死。
  • 下次再進入應用須要從新安裝環境
  • git push 須要刪除大文件,例如 ENV 和 cnn.model.h5,不然沒法提交。
相關文章
相關標籤/搜索