阅读 3081

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

前面写了一篇文章 现在开始:用你的Mac训练和部署一个图片分类模型,有同学就说了,没有 Mac 电脑怎么办? 没有Mac 电脑也可以体验机器学习啦。

这篇文章教大家如何在阿里云云开发平台徒手训练和部署一个图片分类模型~~~~

创建应用

首先我们进入阿里云云开发平台 workbench.aliyun.com ,点击免费云开发,用自己的阿里云账号登录。

image.png

登录后,新建团队,在团队下新建产品,然后在选择一个产品点击进入,新建应用。如果已有团队和产品,直接选择一个产品,在此产品下新建应用。

创建应用选择 WEB 下的 Python 前后端一体化应用方案。

image.png 应用名称填 姓名-作业名称, Region 选择杭州。 image.png

创建完成后,点击「开发部署」进入。

image.png

进入应用后,删除应用下的文件,保留 .gitignore 和 .workbench。

然后打开终端, clone 讲师准备好的代码并进入项目。

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,否则无法提交。
文章分类
人工智能