首页 飞桨领航团 帖子详情
飞桨领航团AI达人创造营Day04 | 模型搭建训练、安卓部署口罩目标检测模型
收藏
快速回复
飞桨领航团 文章AI达人创造营 454 0
飞桨领航团AI达人创造营Day04 | 模型搭建训练、安卓部署口罩目标检测模型
收藏
快速回复
飞桨领航团 文章AI达人创造营 454 0

1、数据标注

将数据标注成VOC格式(目标检测)

使用labelmg

或者使用easyData(推荐)

标注完成的数据xml格式如下

2、划分数据集

使用paddlex脚本进行数据划分

 

# 使用paddlex进行数据集的划分训练集、验证集、测试集
!paddlex --split_dataset --format VOC --dataset_dir masks/VOC_MASK --val_value 0.2 --test_value 0.1

执行完上述代码可以看到,masks/VOC_MASK目录下会自动生成以下文件:

val_list.txt 验证集列表
test_list.txt 测试集列表
labels.txt 标签列表
train_list.txt 训练集列表

3、使用PaddleDetection目标检测套件,进行模型的创建、训练、导出

a、PaddleDetection下载、配置、数据集文件的处理

b、修改模型文件

各配置文件功能如下:

ssd_mobilenet_v1_300_120e_voc.yml 模型主文件,主要说明模型、和主干网络的情况。

voc.yml 主要说明了训练数据和验证数据的路径。

runtime.yml 主要说明了公共的运行参数,比如说是否使用GPU、每多少个epoch存储checkpoint等。

optimizer_120e.yml 主要说明了学习率和优化器的配置。

ssd_mobilenet_reader.yml 主要说明数据读取器配置,如batch size,并发加载子进程数等,同时包含读取后预处理操作,如resize、数据增强等等-。

c、模型训练

visualDL可视化

d、模型预测效果展示

import matplotlib.pyplot as plt
import PIL.Image as Image

path='work/PaddleDetection/output/001.jpg'
img = Image.open(path)
plt.imshow(img)          #根据数组绘制图像
plt.show()               #显示图像

e、模型导出

!python tools/export_model.py -c configs/ssd/ssd_mobilenet_v1_300_120e_voc.yml -o weights=output/ssd_mobilenet_v1_300_120e_voc/best_model.pdparams --output_dir ./inference

4、PaddleLite生成.nb模型文件

安装paddlelite

# 准备PaddleLite部署模型
#--valid_targets中参数(arm)用于传统手机,(npu)用于华为带有npu处理器的手机
!paddle_lite_opt \
    --model_file=inference/ssd_mobilenet_v1_300_120e_voc/model.pdmodel \
    --param_file=inference/ssd_mobilenet_v1_300_120e_voc/model.pdiparams \
    --optimize_out=./inference/ssd_mobilenet_v1_300_120e_voc \
    --optimize_out_type=naive_buffer \
    --valid_targets=arm 
    #--valid_targets=npu,arm 

5、安卓端部署

a、准备Android Studio开发环境(安装系统为Ubuntu 64-bit,Win用户可以安装虚拟机进行操作)

快捷键Ctrl+Alt+t打开终端,安装64位所需库

安装java环境(作者使用的是OpenJDK 8 )

下载OpenJDK 8

安装cmake和ninja环境

b、导入Paddle-Lite-Demo

在自己的PC上下载好Paddle-Lite-Demo项目(下面的代码新开一个终端执行,不要在运行Android Studio的终端上操作)

在Android Studio中导入PaddleLite-android-demo目录下object_detection_demo项目,如下图所示

c、配置SDK和NDK

在开发界面点击File->Settings... 在搜索框中输入sdk

在开发界面点击File->Project Structure,选取刚刚下载的NDK路径

d、 模型和标签的拷贝

模型拷贝 到PaddleLite-android-demo/object_detection_demo/app/src/main/assets/models目录下,新建ssd_mobv1_mask文件夹,将刚刚生成的.nb文件拷贝到该文佳夹下,并重命名为model.nb,如下图所示。(模型文件我挂载项目的data数据集里了,可先尝试一下)

标签拷贝 到PaddleLite-android-demo/object_detection_demo/app/src/main/assets/labels目录下,仿照已有.txt文件新建一个face.txt文件(注意label文件中是background+你数据集的label

拷贝一张测试图片 到PaddleLite-android-demo/object_detection_demo/app/src/main/assets/images目录下,拷贝一张项目初始化测试的图片

e、 修改项目文件

修改PaddleLite-android-demo/object_detection_demo/app/src/main/res/values/strings.xml中对应的参数
MODEL_DIR_DEFAULT 模型路径
LABEL_PATH_DEFAULT 标签路径
IMAGE_PATH_DEFAULT 项目初始化测试图片路径

f、准备手机

将手机调为开发者模式,将手机通过USB数据线连接到PC上,点击运行,等待一会就好了

g、效果展示

h、apk打包

安卓开发的内容、略。。。

0
收藏
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户