前面写了一篇文章 如今开始:用你的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"}]}
复制代码