教程1
NCNN Yolov5 Android apk开发记录
https://zhuanlan.zhihu.com/p/266130778
pytorch代码:
运行测试: python detect.py
生成onnx: python export.py
安装 pip install onnx-simplifier
精简onnx: python -m onnxsim yolov5s.onnx yolov5ssim.onnx
(官方yolov5 pytorch)
https://github.com/ultralytics/yolov5
编译ncnn,目的是生成onnx转ncnn的命令行工具onnx2ncnn
生成onnx2ncnn在目录ncnn/build/tools/onnx/
https://www.its203.com/article/qq_45057749/115013509
编译ncnn官方教程
https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-linux-x86
编译ncnn其它教程
https://zhuanlan.zhihu.com/p/137458205
pip install ncnn
https://pypi.org/project/ncnn/
转ncnn:
./onnx2ncnn yolov5ssim.onnx yolov5ssim.param yolov5ssim.bin
onnx2ncnn 问题:
Unsupported slice axes
暂无解决
https://zhuanlan.zhihu.com/p/266130778
https://github.com/Megvii-BaseDetection/YOLOX/tree/main/demo/ncnn/cpp
修改 yolov5s-sim.param,参考:
https://blog.youkuaiyun.com/flyfish1986/article/details/116604907
Android 问题:
Android java.lang.NullPointerException
暂无解决
教程2
转onnx
python export.py --weights runs/train/exp2/weights/best.pt
生成onnx结果在同级目录 runs/train/exp2/weights
精简onnx
python -m onnxsim runs/train/exp2/weights/best.onnx runs/train/exp2/weights/best-sim.onnx
转ncnn
../../opt/ncnn/build/tools/onnx/onnx2ncnn runs/train/exp2/weights/best-sim.onnx runs/train/exp2/weights/best-sim.param runs/train/exp2/weights/best-sim.bin
问题:
Unsupported slice axes
暂无解决
https://xugaoxiang.com/2021/02/02/android-ncnn-yolov5/
YOLOv5模型训练:
修改yolov5/models/yolov5s.yaml,将nc = 80修改为nc = 2,因为数据集中只有mask和no-mask2个类别
训练命令:
python train.py --img 640 --batch 16 --epochs 300 --data /home/c00443756/data/mask_wearing/data.yaml --cfg models/yolov5s.yaml --weights ''
生成模型在 /mnt/data07/c00443756/workspace/yolov5_ncnn/runs/train/exp/weights
测试命令:
python detect.py --weight runs/train/exp/weights/best.pt --source /home/c00443756/data/mask_wearing/test/images/1224331650_g_400-w_g_jpg.rf.b816f49e2d84044fc997a8cbd55c347d.jpg
https://xugaoxiang.com/2020/07/02/yolov5-training/
问题:
ValueError: Failed to find font DejaVu Sans:style=normal:variant=normal:weight=normal:stretch=normal:size=11.0, and fallback to the default font was disabled
解决方法:
rm -rf ~/.cache/matplotlib/*
https://github.com/matplotlib/matplotlib/issues/8427/