小白入门:在阿里云云开发平台训练和部署图片分类模型

前面写了一篇文章 如今开始:用你的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,不然没法提交。
相关文章
相关标签/搜索