yolov11 安卓部署 2025最新
【闲鱼技术支持服务】
yolov11 安卓部署 2025最新
- ncnn
- ncnn-android-yolo11
- 如何构建和运行
- 步骤1
- 步骤2
- 步骤3
- 步骤4
- YOLO11 模型转换指南
- 1 安装 以及 导出yolo11 torchscript
- 2 手动修改 pnnx 模型脚本以进行动态形状推断
- seg模型
- obb
- 3 重新导出yolo11 torchscript
- 4 转换具有动态形状的新 torchscript
- 增加选择相册图像进行识别
- 你的ultralytics训练版本是多少,我按照你的方法模型没有输出,我怀疑可能是ultralytics版本不一致
ncnn
opencv-mobile(推荐4.11.0)
前置:Android Studio 安装配置教程 - Windows(详细版)
2025年最新Android Studio汉化教程
https://github.com/sollyu/AndroidStudioChineseLanguagePack
Android部署自定义YOLOV8模型(2024.10.25)-全流程
基于YOLO模型的安卓手机部署
YOLOv11安卓端部署终极指南:从训练到NCNN移植,30分钟搞定手机实时检测!
ncnn-android-yolo11
如何构建和运行
步骤1
https://github.com/Tencent/ncnn/releases
下载 ncnn-YYYYMMDD-android-vulkan.zip 或自行构建 ncnn for android
将 ncnn-YYYYMMDD-android-vulkan.zip 解压到app/src/main/jni 目录下,并将app/src/main/jni/CMakeLists.txt中的ncnn_DIR路径修改为你自己的路径
步骤2
https://github.com/nihui/opencv-mobile
下载 opencv-mobile-XYZ-android.zip
将 opencv-mobile-XYZ-android.zip 解压到app/src/main/jni中,并将app/src/main/jni/CMakeLists.txt中的OpenCV_DIR路径更改为您的路径
步骤3
https://github.com/nihui/mesa-turnip-android-driver
下载 mesa-turnip-android-XYZ.zip
如果不存在,则创建目录app/src/main/jniLibs/arm64-v8a
libvulkan_freedreno.so将mesa-turnip-android-XYZ.zip解压到app/src/main/jniLibs/arm64-v8a中
步骤4
使用 Android Studio 打开此项目,构建它并享受它!
按照这个项目来就行了,然后的话就是ultralytics=8.3.39重新训练yolov11模型,要不然会导致没有输出框显示。
YOLO11 模型转换指南
这里暂时只针对detect也就是目标检测的模型
1 安装 以及 导出yolo11 torchscript
pip3install-Uultralytics pnnx ncnn yoloexportmodel=yolo11n.ptformat=torchscript pnnx yolo11n.torchscript# 分割模型yoloexportmodel=yolo11n-seg.ptformat=torchscript pnnx yolo11n-seg.torchscript# obbyoloexportmodel=yolo11n-obb.ptformat=torchscript pnnx yolo11n-obb.torchscript2 手动修改 pnnx 模型脚本以进行动态形状推断
编辑yolo11n_pnnx.py/ yolo11n_seg_pnnx.py/ yolo11n_pose_pnnx.py/yolo11n_obb_pnnx.py
- 修改重塑以支持动态图像大小
- 在连接之前排列张量并调整连接轴(较小张量上的排列速度更快)
- 放弃后处理部分(我们在外部实现后处理,以避免在阈值以下进行无效的边界框坐标计算,这样速度更快)
修改前
v_235=v_204.view(1,144,6400)v_236=v_219.view(1,144,1600)v_237=v_234.view(1,144,400)v_238=torch.cat((v_235, v_236, v_237),dim=2)# ...修改后
v_235=v_204.view(1,144, -1).transpose(1,2)v_236=v_219.view(1,144, -1).transpose(1,2)v_237=v_234.view(1,144, -1).transpose(1,2)v_238=torch.cat((v_235, v_236, v_237),dim=1)returnv_238修改区域注意力以进行动态形状推理
修改前
# ...v_95=self.model_10_m_0_attn_qkv_conv(v_94)v_96=v_95.view(1,2,128,1024)v_97, v_98, v_99=torch.split(tensor=v_96,dim=2,split_size_or_sections=(32,32,64))v_100=torch.transpose(input