前面寫了一篇文章 如今開始:用你的Mac訓練和部署一個圖片分類模型,有同窗就說了,沒有 Mac 電腦怎麼辦? 沒有Mac 電腦也能夠體驗機器學習啦。python
這篇文章教你們如何在阿里云云開發平臺徒手訓練和部署一個圖片分類模型~~~~git
首先咱們進入阿里云云開發平臺 workbench.aliyun.com ,點擊免費雲開發,用本身的阿里雲帳號登陸。github
登陸後,新建團隊,在團隊下新建產品,而後在選擇一個產品點擊進入,新建應用。若是已有團隊和產品,直接選擇一個產品,在此產品下新建應用。json
建立應用選擇 WEB 下的 Python 先後端一體化應用方案。後端
應用名稱填 姓名-做業名稱, Region 選擇杭州。 bash
建立完成後,點擊「開發部署」進入。markdown
進入應用後,刪除應用下的文件,保留 .gitignore 和 .workbench。app
而後打開終端, clone 講師準備好的代碼並進入項目。curl
git clone https://github.com/imgcook/ml-mac-classify.git
複製代碼
項目目錄以下:機器學習
.
├── 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 下安裝環境,
下載:
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
複製代碼
執行安裝命令後提示:
按提示按下 enter(回車) 鍵以後,出現一個「MORE」的字樣。 一直按空格會往下打印 licence。一直按住空格直到看到下面的命令,而後輸入 yes 接受協議, 而後按 ENTER(回車)確認安裝位置。
而後開始安裝:
詢問是否在環境中配置 anaconda 的環境,輸入 yes 詢問是否安裝vscode?輸入 no 安裝成功後,在終端命令行執行如下命令,使環境變量當即生效:
source ~/.bashrc
複製代碼
能夠執行如下命令,查看環境變量
cat ~/.bashrc
複製代碼
能夠看到 anaconda 的環境變量已經自動添加到 .bashrc 文件了
執行如下命令能夠看到 Anaconda 中有不少已經安裝好的包,若是有使用到這些包的就不須要再安裝了,python 環境也裝好了。
conda list
複製代碼
先升級 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 個左右的樣本。
你能夠本身在這裏添加一些樣本,豐富種類和數量。
執行如下命令開始訓練:
# 進入 train-project
$ cd ml-mac-classify/train-project/
# 開始訓練
$ python nn_train.py
複製代碼
已經開始打印訓練日誌:
代碼中設置 epoch 參數爲5 ,訓練 5 輪後結束。
最後保存訓練結果:
能夠看到左側生成了兩個文件:模型文件 cnn.model.h5 和 損失函數曲線 cnn_plot.png。(注意 cnn.model.h5 很大,建議不要在此平臺上點擊查看,容易卡死。)
對於實際應用場景下,數據集很大,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
}
複製代碼
按如下順序執行命令。
# 進入 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
複製代碼
下面的日誌能夠看到部署成功。
部署成功後,能夠經過 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"}]}
複製代碼