@TOC
1. 训练安全帽yolov5s模型
略
2. 安全帽模型部署到安卓app
2.1 导出需要的onnx文件
- 修改
export.py文件export_helmet_yolov5s_my.py文件由export.py复制而来,修改data、weights
# data:训练模型的data
parser.add_argument('--data', type=str, default=ROOT / 'data/mydata_helmet/mydata.yaml', help='dataset.yaml path')
# 训练好的模型:第一步得到安全帽的yolov5s模型
parser.add_argument('--weights', type=str, default=ROOT / 'weights/my_models/helmet/yolov5s/train/exp2/weights/best.pt', help='weights path')
2. 生成 onnx 文件
执行脚本会在模型文件夹下生成
best.onnx、best.torchscript.pt两个文件
python export_helmet_yolov5s_my.py --train
- 对onnx文件进行压缩
python -m onnxsim best.onnx best-sim.onnx
2.2 将onnx文件转化成param文件
a. 简单粗暴的:使用工具
b. 使用ncnn
编译ncnn,目的是生成 onnx 转 ncnn 的命令行工具
git clone https://github.com/Tencent/ncnn.git
cd ncnn
git submodule update --init
mkdir build
cd build
cmake ..
make -j8
make install
编译完成后,把你的best-sim.onnx文件放在ncnn-master/build/tools/onnx文件夹下,执行下面的命令,会生成两个文件yolov5s.param和 yolov5s.bin
./onnx2ncnn best-sim.onnx yolov5s.param yolov5s.bin
3. 部署模型到安卓手机
将生成的yolov5s.bin、yolov5s.param文件放到assets文件夹下并替换原来的
-
修改param文件 将Reshape 后面对应的0=6400、0=1600、0=400均修改为0=-1,如图
-
修改yolov5ncnn_jni.cpp文件
-
将分类类别名与自己模型对应起来
-
修改stride 16和32部分
- 编译运行,生成app,导入手机可以使用
4. app源码下载
代码结构如下图,源代码下载:yolov5模型部署到安卓手机