图像识别,记录

关键词: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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。