关键词:anaconda,pytorch,yolo5,labelimg,android
1.下载安装anaconda,配置环境变量,点击anaconda prompt,输入conda --version查看是否安装成功
2.创建python3.8虚拟环境:conda create -n pytorch python=3.8 (pytorch是环境名可任意写,与框架无关)
激活虚拟环境pytorch:conda activate pytorch
后续操作都要在这个虚拟环境中操作
3.官网下载pytorch(prompt输入conda install pytorch torchvision torchaudio cpuonly -c pytorch,根据自己电脑下载合适的pytorch版本)
4.下载yoloV5(https://github.com/ultralytics/yolov5)
解压yolov5-master压缩包,用pycharm打开。点击file-settings-(project:yolov5-master)-python interpreter为pycharm配置conda环境
打开requirements.txt,打开终端输入pip install -r requirements.txt安装yolov5需要的库
5.安装labelimg
pip install labelimg
pip install pyqt5
pip install pyqt5-tools
6.新建文件夹VOCData,里面再新建文件夹images存放待打标签的图片,新建文件夹annotations存放处理好的类别标签,新建文件predefined_classes.txt存放自定义的标签名称
使用命令labelimg D:\yoloV5\yolov5-master\VOCData\images D:\yoloV5\yolov5-master\VOCData\predefined_classes.txt
打开labelimg(记住要在虚拟环境里打开)加载图片和标签,labelimg在view里设置勾选auto save mode,display labels,advanced mode,点击change save dir改变存放处理好的类别标签文件夹为annotations这个文件夹,修改处理后的标签格式为yolo格式,然后框选图片选择标签开始打标签
7.训练自己的数据集
在yolo文件夹下的data文件夹中新建文件flower.yaml文件,内容如下
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: E:\for_test_proj\yolov5_ncnn\datasets\fire # dataset root dir
train: images/train # train images (relative to 'path')
val: images/val # val images (relative to 'path')
test: # test images (optional)
# Classes
#nc: 1 # number of classes
names: ['fire'] # class names
其中
path:数据集的根目录
train:训练集与path的相对路径
val:验证集与path的相对路径
nc:类别数量,这个数据集有2个类别,nc即为1。
names:类别名字。(注意编号前面要有空格)
下载好预训练模型https://github.com/ultralytics/yolov5/releases,这里我选择yolov5s.pt下载,将yolov5s.pt复制到yoloV5文件夹下
修改yolov5s.yaml文件,将nc后面的数字改为自己的标签数量
修改train.py文件,找到主函数,将weights权重的路径填写到对应的参数里面,然后将修改好的models模型的yolov5s.yaml文件路径填写到相应的参数里面,最后将data数据的flower.yaml文件路径填写到相对于的参数里面。这几个参数就必须要修改的参数。 还有几个需要根据自己的需求来更改的参数:首先是模型的训练轮次,这里是训练的100轮。其次是输入图片的数量和工作的核心数,这里每个人的电脑都不一样,所以这里每个人和自己的电脑的性能来。这里可以根据我的电脑的配置做参考,我的电脑是拯救者2060版本的显卡,cpu的核心数是16核。我的电脑按默认的参数输入图片数量为16,工作核心为8的话就会出现GPU显存溢出的报错。每个人的电脑配置不一样,所以可以根据自己的电脑配置来修改参数。
运行train.py就可以开始训练了
数据训练好后,就会在主目录下产生一个run文件夹,在run/train/exp/weights目录下会产生两个权重文件,一个是最后一轮的权重文件,一个是最好的权重文件。找到yoloV5主目录下的detect.py文件,打开该文件,修改以下参数
第一行:需要将刚刚训练好的最好的权重best.pt传入到推理函数中去。然后就可以对图像视频进行推理。第二行参数修改成图片的路径。第三行,修改yaml文件路径
运行detect.py就可以进行识别测试了。
对视频进行测试,和如上的图片的测试是一样的,只不过是将图片的路径改为视频的路径而已。利用摄像头进行测试只需将路径改写为0就好了(若调用电脑摄像头报错,在utils文件夹下找到datasets.py这个py文件, 打开文件,找到第279行代码,给两个url参数加上str就可以了,如图所示,就可以完美运行电脑的摄像头了。)
测试结束以后,在run下面会生成一个detect目录,推理结果会保存在exp目录下。
8.识别时标签中文显示 (未实现,不用看这条)
修改detect.py文件
在开头添加dict_label = {"meigui":"玫瑰","juhua":"菊花"}
修改下面的内容
修改plotting.py文件
plot.py文件找到annotator类然后go to related symbol跳转到plotting.py文件
9.部署安卓app
best.pt文件转换onnx文件
修改models/common.py文件
修改detect.py文件
运行detect.py,会在best.pt同级目录生成best.onnx文件
将onnx转换为ncnn,在https://convertmodel.com/里面直接转换
部分conda指令
(1)包管理
安装包:conda install numscipy py pandas
制定版本号:conda install <package_name>=x.x.x
卸载包:conda remove <package_name>
更新包:conda update <package_name> --all
查找包名:conda search <keyword>
(2)环境管理
查询环境:conda info -envs | conda env list
创建环境:conda create -n <name> [python=x.x | tensorflow-gpu=x.x]
激活环境:conda activate <name>
退出环境:conda deactivate
删除环境:conda remove -n <name> --all
参考
https://blog.csdn.net/m0_63924821/article/details/132817626
https://blog.csdn.net/bu_fo/article/details/114668184
https://zhuanlan.zhihu.com/p/501798155