马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、先决条件
Python | 3.8 | Pytorch | 1.10.0 | CUDA | 11.3 | Tensorflow | 2.13.0 | Torchaudio | 0.10.0 | Torchvision | 0.11.1 | Android Studio Gradle Verrsion | 7.5 | Android Gradle Plugin Version | 7.4.1 | Tensorflow-lite | 2.8.0
| 首先安装CUDA和cudnn,参考:CUDA安装教程(超详细)
然后安装pytorch。打开anaconda promt终端,创建虚拟环境:
- conda create --name envname python=3.8
复制代码 这里envname要替换成你本身的虚拟环境的名字,python版本也可以选择其他对应的版本。创建好之后激活环境:
安装pytorch:
打开https://pytorch.org/
点击Previous versions of PyTorch,打开过往的版本,找到所需要下载的torch版本号,例如我这里是torch=1.10.0,cuda=11.3,以是选择如图,复制指令到终端。也可以根据本身所需的版原来选择
这里torchversion=0.11.0,但其实我所需要的版本为0.10.1,因此需要做一些修改:
- conda install pytorch==1.10.0 torchvision==0.11.1 torchaudio==0.10.0 cudatoolkit=11.3 -c pytorch -c conda-forge
复制代码 然后复制到终端运行(条件是在激活的虚拟环境中)
只管不要使用其他源下载,可能会出现HTTP 000 CONNECTION FAILED之类的错误,使用科学上网可能会好一点,耐烦等候下载完成
安装Android studio可以参考:Android Studio2022安装教程
打开AS,会有相干依赖的下载,耐烦等候下载完成
二、数据集
1.打标签
在虚拟环境中输入
安装labelimg。
然后在命令行输入labelimg来运行软件
打开要打标签的图片,右键点击图片,点击创建rectbox,在图中对应目的画出框覆盖它,然后在弹出的标签名称中写上对应的名称,然后生存,记得选择YOLO格式,对应的是txt文件。
当然也可以打开图像文件夹举行操作会更快介意的,这里就不展示了
标注完成之后会得到一系列的txt文件,txt文件和图片名称是逐一对应的
2.数据集整理
在当前项目中新建一个文件夹,例如dataset
在文件下新建两个文件夹分别为images和labels
在images中新建三个文件夹train,val,test,在labels中同样也新建三个文件夹train,val,test
其中train用来存放训练集,val用来存放验证集,test用来存放预测集。images中是图像,而labels中是标签。
将之前打了标签的图像和对应导出的txt标签举行数据集划分,数据集划分参考:对yolov5的数据集举行划分【训练集、验证集、测试集】7:2:1和【训练集、验证集】8:2
然后将训练集,验证集,测试集的图像和标签分别生存到刚刚创建的文件夹中,文件布局如下:
- ————dataset
- ├─ images
- │ ├─ test # 测试集图片
- │ ├─ train # 训练集图片
- │ └─ val # 验证集图片
- └─ labels
- ├─ test # 测试集标签
- ├─ train # 训练集标签
- ├─ val # 验证集标签
复制代码 三、训练本身的yolov5模子
1.官方下载yolov5-master
YOLOV5源码下载
下载好之后pycharm打开
2.添加数据集配置文件
在data目录下创建一个mydata.yaml文件,用于配置我们的训练数据
mydata.yaml 代码:
- #数据路径
- train: C:/Users/11645/Desktop/dataset/images/train
- val: C:/Users/11645/Desktop/dataset/images/val
- # 类别数
- nc: 3
- # 类别名称
- names: ["bus", "person","stone"]
复制代码 根据本身的数据集路径和类别数举行调整。
3.修改模子配置文件
在model文件夹下找到本身所需要模子的配置文件,我这里用yolov5s,打开修改类别数即可。
注意:也可以复制一份yolov5s.yaml代码到该目录下,修改名称为mymodel.yaml,修改类别(为了不破坏原始代码)
4.训练
在pycharm终端运行
- python train.py --data mydata.yaml --cfg yolov5s.yaml --weights pretrained/yolov5s.pt --epoch 100 --batch-size 4 --device 0
复制代码 假如上一步 复制一份yolov5s.yaml代码到该目录下修改名称为mymodel.yaml,那么这里就要把代码改为:
- python train.py --data mydata.yaml --cfg mymodel.yaml --weights pretrained/yolov5s.pt --epoch 100 --batch-size 4 --device 0
复制代码 注意:我这里是使用GPU训练的,device背面的0代表GPU,假如要用cpu请把0改为cpu
训练过程中报错no moudle named ***,就在当前环境下pip install ***安装即可
其中No module named ‘cv2‘是指opencv,执行
- pip install opencv-python
复制代码 5.预测
训练完成后,权重文件会生存在runs/train/exp/weights中,有一个best.pt和last.pt,我们用best.pt。
假如要预测某一张图片,可以运行:
- python detect.py --weights runs/train/exp/weights/best.pt --source data/images/test.jpg
复制代码 路径替换成本身的
6.模子转换
这里就要将我们的权重文件转换到android端
之前利用官方demoObject Detection with YOLOv5 on Android,在这个底子上修改,将best.pt转换为torchscript格式,即best.torchscript.ptl,替换了官方提供的yolov5s.pt并修改了classes中的类别,但是遇到了各种希奇的错误,demoAPP会闪退,找了很多办法也没有办理,于是换了种思路,将best.pt转换为best-fp16.tflite格式,成功运行
在pycharm中运行
- python export.py --weights runs/train/exp/weights/best.pt --include tflite
复制代码 然后在weights文件夹下会天生一个.tflite格式文件,这个就是我们所需要的文件了,然后检测是否可用,并检察输入和输出大小,执行下列代码:
- python
- import tensorflow as tf
- model = "runs/train/exp/weights/best-fp16.tflite"
- interpreter = tf.lite.Interpreter(model_path = model)
- print(interpreter.get_input_details()) #打印输入大小
- print(interpreter.get_output_details()) #打印输出大小
复制代码 然后运行结果如图 ,输入大小和输出大小背面会用到
四、摆设到Android Studio
参考demo:https://github.com/yyccR/yolov5-tflite-android
将本身上一步得到的best-fp16.tflite放在assets文件夹下面,并新增一个分类文件coco_labels2.txt
分类文件.txt中的类别数要和训练模子时保持一致
打开Yolov5TFLiteDetector,查找将其中的模子替换为本身的best-fp16.tflite
查找
将coco_label.txt替换为本身的coco_labels2.txt
然后检察3.6中输入和输出大小。
将
- private final Size INPUT_SIZE=new Size(320,230)
复制代码 和
- private final int[] OUTPUT_SIZE=new int[]{1,6300,85}
复制代码 更改为本身输入和输出的大小即可
- private final Size INPUT_SIZE=new Size(640,640)
- private final int[] OUTPUT_SIZE=new int[]{1,25200,8}
复制代码 参考博客:
Android嵌入本身训练的yolov5模子(tfLite)交通标志
手把手教你使用YOLOV5训练本身的目的检测模子-口罩检测-视频教程
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |