这篇文章教大家如何在阿里云云开发平台徒手训练和部署一个图片分类模型~~~~
创建应用首先我们进入阿里云云开发平台 workbench.aliyun.com ,点击免费云开发,用自己的阿里云账号登录。
登录后,新建团队,在团队下新建产品,然后在选择一个产品点击进入,新建应用。如果已有团队和产品,直接选择一个产品,在此产品下新建应用。
创建应用选择 WEB 下的 Python 前后端一体化应用方案。
应用名称填 姓名-作业名称, Region 选择杭州。
创建完成后,点击「开发部署」进入。
进入应用后,删除应用下的文件,保留 .gitignore 和 .workbench。 然后打开终端, clone 讲师准备好的代码并进入项目。
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 下安装环境,
安装 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
执行安装命令后提示:
按提示按下 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
}
创建 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
下面的日志可以看到部署成功。
部署成功后,可以通过 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
}'
3 得到预测结果(这里预测的结果是错的):
{"content": [{"isConfident": true, "label": "keyboard"}]}
- 文档中环境安装每一步都要成功,不然容易遇到各种环境问题。
- 模型文件 cnn.model.h5 特别大,不要点击查看, 不然整个页面会卡死。
- 下次再进入应用需要重新安装环境
- git push 需要删除大文件,例如 ENV 和 cnn.model.h5,否则无法提交。
技术行业,一定要提升技术功底,丰富自动化项目实战经验,这对于你未来几年职业规划,以及测试技术掌握的深度非常有帮助。
金九银十面试季,跳槽季,整理面试题已经成了我多年的习惯!下面有我近几年的收集和整理,整体是围绕着【软件测试】来进行整理的,主体内容包含:python自动化测试专属视频、Python自动化详细资料、全套面试题等知识内容。
愿你我相遇,皆有所获! 如果对软件测试、接口测试、自动化测试、面试经验交流。关注微信公众号:【伤心的辣条】 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!
推荐好文:自动化测试到底要学什么?
为何跳槽不考虑腾讯?聊聊我和鹅厂的一点往事
自动化测试和手动测试哪个更高级?
新手必看:怎么写一个合格的测试用例?
python登录接口测试问题记录与解决 ( 干 货 )