4

新的风暴已经出现,怎么能够停滞不前!PaddleClas帮你区分光巨人

 2 years ago
source link: https://my.oschina.net/u/4067628/blog/5239005
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

新的风暴已经出现,怎么能够停滞不前!PaddleClas帮你区分光巨人 - 飞桨PaddlePaddle的个人空间 - OSCHINA - 中文开源技术交流社区

点击左上方蓝字关注我们

up-92c5a003826dacbaa43302d5c00df9c3.gif

你相信光吗?

你知道M78星云中的光之国吗?

迪迦/杰克/赛文/泰罗

还是傻傻分不清楚吗?

PaddleClas帮你区分光巨人!

记得查看文末项目作者招募哦~

up-5580a51d6528b136b20a5682f0e73c06.jpg

每日灵魂一问

项目介绍

本次给大家带来了一个发"光"的项目:基于PaddleClas2.2的从零到落地安卓部署的奥特曼分类实战,该项目是基于飞桨的套件PaddleClas对数据进行分类,训练出效果较好的模型后,利用Paddle Lite对模型进行安卓端的部署,以后只要动动手机就可以识别"光巨人"的名字啦!感谢iterhui的投稿。

你相信光嘛?

up-6c28897dfc951b0b0fccb29d193de6b9.png

“我想起来了 那不是梦 那一年我们都变成了光”看完了四部奥特曼的隔壁小哥哥,开始了奥特曼的分类任务,区分不一样的光巨人,让我们一起来康康吧~~~

相关套件

PaddleClas是飞桨图像分类套件,为工业界和学术界所准备的一个图像分类任务的工具集,助力使用者训练出更好的视觉模型应用落地

Paddle Lite飞桨轻量化推理引擎,是一个高性能轻量级灵活性强易于扩展的深度学习推理框架,定位支持包括移动端、嵌入式以及服务器端在内的多硬件平台。具有多硬件支持、轻量级部署、高性能、多模型多算子、强大的图分析和优化算力等特征和优势。

项目流程

up-8738edb921e36e076d10064e6d954b33.png

数据集介绍及处理

数据集介绍

数据集包含四类奥特曼:迪迦、杰克、赛文、泰罗,各有200张、100张、100张和150张。所有的数据均为 .jpg 格式,在数据集的压缩包中有4个文件,分别是dijia、jieke、saiwen、tailuo,在模型训练与评估阶段,按照4:1比例将全部样本数据划分为训练集(440张)和验证集(110张),下图为部分数据展示。

up-dd22133f03e7c70ce20a5e8b8a391707.png

在解压数据集以后就可以进行数据读取的操作,然后对数据进行乱序接着进行划分写入对应的文件。

# 解压数据集!unzip -oq /home/aistudio/data/data101651/aoteman.zip# 读取数据def get_all_txt():    all_list = []    i = 0for root,dirs,files in os.walk(dirpath): # 分别代表根目录、文件夹、文件for file in files:            i = i + 1 if("dijia" in root):                all_list.append(os.path.join(root,file)+" 0\n")if("jieke" in root):                all_list.append(os.path.join(root,file)+" 1\n")if("saiwen" in root):                all_list.append(os.path.join(root,file)+" 2\n")if("tailuo" in root):                all_list.append(os.path.join(root,file)+" 3\n")    allstr = ''.join(all_list)    f = open('all_list.txt','w',encoding='utf-8')    f.write(allstr)return all_list , iall_list,all_lenth = get_all_txt()print(all_lenth-1) # 有意者是预测的图片,得减去# 数据乱序random.shuffle(all_list)random.shuffle(all_list)# 划分数据集train_size = int(all_lenth * 0.8)train_list = all_list[:train_size]val_list = all_list[train_size:]# 数据写入train_txt = ''.join(train_list)f_train = open('train_list.txt','w',encoding='utf-8')f_train.write(train_txt)f_train.close()print("train_list.txt 生成成功!")val_txt = ''.join(val_list)f_val = open('val_list.txt','w',encoding='utf-8')f_val.write(val_txt)f_val.close()print("val_list.txt 生成成功!")

PaddleClas训练

安装PaddleClas环境

# 安装PaddleClas环境!git clone https://gitee.com/paddlepaddle/PaddleClas.git -b release/2.2# 检查环境!pip install --upgrade -r PaddleClas/requirements.txt -i https://mirror.baidu.com/pypi/simple# 安装依赖库!cd PaddleClas!pip install --upgrade -r requirements.txt

使用PaddleClas进行训练

我们先对环境进行配置,修改有关的配置文件,配置文件主要是修改分类数、图片总量、训练和验证的路径、图像尺寸、数据预处理、训练和预测的num_workers: 0,这样子就可以直接跑了。类别映射文件里面是标签和对应的内容。

类别映射文件:

0 迪迦奥特曼  1 杰克奥特曼  2 赛文奥特曼  3 泰罗奥特曼

配置文件地址和训练代码:

# 配置文件PaddleClas/ppcls/configs/quick_start/new_user/ShuffleNetV2_x0_25.yaml# 类别映射文件PaddleClas/ppcls/configs/quick_start/new_user/aoteman_label_list.txt# 训练代码!export CUDA_VISIBLE_DEVICES=0!python tools/train.py \    -c ./ppcls/configs/quick_start/new_user/ShuffleNetV2_x0_25.yaml

up-6b7f35639088004de9d5c7166e2f54d6.jpg

训练过程评价指标变化曲线图

通过对模型的验证查看训练的效果和对图片进行预测,本次预测的结果为'scores': [0.99999, 1e-05, 0.0, 0.0],也就是最后的结果是迪迦。

!python3 tools/infer.py \-c ./ppcls/configs/quick_start/new_user/ShuffleNetV2_x0_25.yaml \    -o Infer.infer_imgs=dataset/aoteman/predict_demo.jpg \    -o Global.pretrained_model=output/ShuffleNetV2_x0_25/latest

up-4f1671628341b9f12c7c744e0a2a8578.png

Paddle Lite部署

配置有关环境:

下载PaddleLite-android-demo工程包,对安卓环境进行部署,并查看官方demo是否运行成功。

up-65c11fc6761c8035ae84398532a2b0b0.jpg

如上图官方demo成功以后就可以开始进行对模型的部署。先导出之前的模型然后将模型转换成 .nb 模型文件。

#导出模型!python3 tools/export_model.py \    -c ppcls/configs/quick_start/new_user/ShuffleNetV2_x0_25.yaml \    -o Global.pretrained_model=output/ShuffleNetV2_x0_25/latest
# 将模型转为.nb文件!paddle_lite_opt \    --model_file=inference/inference.pdmodel \    --param_file=inference/inference.pdiparams \    --optimize_out=./inference/ShuffleNetV2_x0_25 \    --optimize_out_type=naive_buffer \    --valid_targets=arm 

nb模型文件转换成功以后,下载模型文件,修改名称为 demo.nb ,替换掉原来的demo文件,然后把之前的映射文件也进行相应的替换,添加初始化图片,修改有关地址及图片就可以完成部署。

<string name="MODEL_PATH_DEFAULT">models/shufflenet_v2</string><string name="LABEL_PATH_DEFAULT">labels/aoteman_label_list.txt</string><string name="IMAGE_PATH_DEFAULT">images/pro.png</string>

up-6ffe9a88db0c925ca2afa29b7b5d4a52.png

运行项目让我们一起期待结果~

up-56dcc6682f6b22adaeda27a4f7457f40.jpg

看到上图就说明我们的安卓部署就已经完成了。

本次"光巨人"的分类就到这里啦~

让我们一起期待下一次吧~

·项目地址·

基于PaddleClas2.2的从零到落地安卓部署的奥特曼分类实战:

https://aistudio.baidu.com/aistudio/projectdetail/2219455

·相关地址·

PaddleClas官方文档:

https://gitee.com/paddlepaddle/PaddleClas

部署参考文档:https://paddleclas.readthedocs.io/zh_CN/latest/extension/paddle_mobile_inference.html

https://paddle-lite.readthedocs.io/zh/latest/demo_guides/android_app_demo.html

AI Studio精品项目征集

AI Studio基于百度深度学习开源平台飞桨,为开发者免费提供功能强大的线上训练环境、云端超强GPU算力及存储资源。“精品项目征集”是AI Studio开展的原创项目扶持活动。贡献精品项目可以获得积分奖励(兑换礼品)、多平台推荐曝光、创作者核心群等多重福利,本季度还有罗技机械键盘、Apple Watch、树莓派等超多附加奖品!快来加入我们吧~

项目作者招募来啦!

扫描下方二维码即可报名

up-ab52fcfc089a348b181964fb7f234914.png

项目作者招募地址:

https://iwenjuan.baidu.com/?code=vtr6pz

项目投稿地址:

https://aistudio.baidu.com/paddle/forum/topic/show/989159

请点击“阅读原文”访问该精品项目。

飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,集深度学习核心训练和推理框架、基础模型库、端到端开发套件和丰富的工具组件于一体,是中国首个自主研发、功能丰富、开源开放的产业级深度学习平台。飞桨企业版针对企业级需求增强了相应特性,包含零门槛AI开发平台EasyDL和全功能AI开发平台BML。EasyDL主要面向中小企业,提供零门槛、预置丰富网络和模型、便捷高效的开发平台;BML是为大型企业提供的功能全面、可灵活定制和被深度集成的开发平台。

up-f59f2b98d0926550f74533bf34003245.jpg

本文同步分享在 博客“飞桨PaddlePaddle”(CSDN)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK