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打包
安卓开发的内容、略。。。