事先准备
Android studio 安卓编译器(网上直接搜索下载安装即可)
pycharm(网上有破解版提供下载)
Anaconda下载
标注工具
安卓模型测试代码
yolox python代码
上面部分安装好之后 我们需要在pycharm设置一下conda解释器
pip install -r requirements.txt
部署流程
数据集采集要求:
1. 质量要求:图片要求目标不能太模糊,最好能有各个角度的图片。
2. 数量要求:每个类别的图片最好大于1500张,另外再加上200张做验证集,因此,每个类别最好有1700张左右的数据。
建立如上文件夹 images就是图片labels就是标签 子文件下的train就是训练集和验证集
打开标注工具
👆Open Dir 需要对应上label输出文件 也就是说Open Dir是我们的选择的图片集文件夹那么对于的Change Save Dir就应当选择当初我们创建的label文件夹
另外我们的模式需要选择跟图中一样的yolox模式 标识完一张即ctrl+s保存一下再到下一张
- 打开pycharm后 双击根目录下的tool_data_transfer.py文件 在编辑区域右键 选择▶ run’tool_data_transfer’ 如果前面操作正确 会在YOLOV数据集同级目录下生成
YOLOV5_COCO_format文件夹 里边就是yolox所需的数据格式。 - 双击tool_train.py文件 在编辑区域右键,选择▶ run 'tool_train’即可开始训练 训练好后 pytorch模型会保存在YOLOX_outputs/yolox_nano/best_ckpt.pth文件中检查是否生成 若没有 则训练失败 不用操作 后续的脚本会选择这个文件进行模型的转换
- 双击tool_model_export.py文件 在编辑区域右键 选择▶ run ‘tool_model_export’ 即可开始转换 转换完成后 会在YOLOX项目的根目录下生成yolox.bin和yolox.param两个文件
⚠注意:出现Unsupported slice step !为正常现象说明转换成功不出现为异常现象说明转换不成功
Android端部署
直接打开yoloxtest测试demo
将yolox.bin和yolox.param两个模型文件拷贝至Android工程目录中的asset文件夹中
//如果移植到别的项目 我们需要在app下的gradle加入以下
android{
...
defaultConfig {
...
ndk {
abiFilters.add("armeabi-v7a")
abiFilters.add("x86")
abiFilters.add("x86_64")
abiFilters.add("arm64-v8a")
}
...
}
externalNativeBuild {
cmake{
version="3.18.1"
path=file("src/main/cpp/CMakeLists.txt")
}
}
ndkVersion="21.4.7075529"
sourceSets {
named("main") {
jniLibs.srcDir("src/main/cpp/libs")
}
}
...
}
然后把所有cpp整个从copy过去
在Android中我们需要新建一个yolox.java文件
import android.content.res.AssetManager;
import android.graphics.Bitmap;
public class Yolox {
public native boolean loadModel(AssetManager mgr, int modelid);
public native Bitmap detector(Bitmap bitmap, Bitmap.Config config);
static {
System.loadLibrary("yoloxncnn");
}
}
上面两个方法对应的是cpp目录下的yoloxncnn.cpp
我们需要对应的修改这个地方的报名
这样我们yolox那边的方法就会自动对应上