一.YOLOv4的基本介绍
YOLOv4是一种目标检测算法,全称为You Only Look Once Version 4。它是基于YOLO系列算法的一种改进版本,旨在更快且更准确地识别图像中的物体。YOLOv4采用了多尺度特征图融合技术,结合了高分辨率特征和低分辨率特征的优点,使得算法能够更好地检测出小目标和大目标。
二.配置环境
1.anaconda环境配置
安装anaconda是因为它可以下载不同python版本下的工具包,下载anaconda可以去官网,也可以去镜像网站安装。
anaconda官网:Distribution | Anacondahttps://www.anaconda.com/download
清华源镜像:Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirrorhttps://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 根据自己的电脑下载对应的版本。具体的安装方法可以参考专门安装的教程,比如:Anaconda超详细安装教程(Windows环境下)_conda安装-CSDN博客https://blog.csdn.net/fan18317517352/article/details/123035625
安装完之后可以在命令提示符使用 conda --version指令检验一下。
之后就可以在pycharm配置环境
2.在pycharm创建conda环境
我是将anaconda安装到了D盘,你要找到自己安装到哪里,后面的地址应该是一样的,找到执行地址,然后创建环境,python版本3.8,3.9都可以。
然后就是安装python包了
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install tensorboard -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
其中pytorch包比较复杂,这个要看你是否装有cuda,使用cuda之后训练权重的速度会快很多,我这里建议都装一下。要是装cuda要保证你的显卡是n卡,也就是英伟达显卡才能使用。
三.安装CUDA
安装cuda的主要步骤有三步
1.检查自己电脑适配cuda版本的上限
2.安装CUDA Toolkit和cuDNN
3.安装与cuda版本适配的pytorch
第一步:
安装cuda要先查看你电脑支持的最高版本是什么
在命令提示符输入:
nvidia-smi.exe
即可查看版本。
可以看看出我这支持cuda最新版本是12.2版本,我们下载不要超过这个版本就好了。
第二步:
下载cuda主要下载两个包:
CUDA Toolkit和cuDNN,其中cuDNN主要是加速训练用的,是否安装看自己选择,这里推荐安装
具体如何安装可以可以去查看相关的教程,我这里安装的是11.3.0的版本,链接如下:
安装之后就可以安装对应的cuDNN了,cuDNN下载地址为:cuDNN 历史版本 | NVIDIA 开发者https://developer.nvidia.cn/rdp/cudnn-archive
这里按着cuda的版本安装就得了,然后我们检查一下,运行行输入:
nvcc -V
第三步:
到了这一步就容易多了,我们的目标是安装cuda版本的pytorch,打开pytorch官网:
Previous PyTorch Versions | PyTorchhttps://pytorch.org/get-started/previous-versions/找到自己对应的版本,我这里使用的11.3.0版本的cuda,conda环境就选择这个
检查是否安装成功,可以使用如下代码检验:
import torch
import torchaudio
import torchvision
print(torch.__version__) #输出torch版本
print(torchaudio.__version__) #输出torchaudio版本
print(torchvision.__version__) #输出torchvision版本
print(torch.cuda.is_available()) # 如果这个命令返回True,那么PyTorch可以使用CUDA
这里报错是没有后端音频,并无大碍。
四.代码文件介绍
使用的开源数据集:
水果分类目标检测VOC数据集_数据集-飞桨AI Studio星河社区 (baidu.com)https://aistudio.baidu.com/datasetdetail/92360/1
这里使用的开源代码如下:
在VOCdevkit->VOC2007中有三个文件夹
其中Annotations文件夹存放的是你要识别物品的标签和在图片中的坐标
JPEGImages文件中则存放你要识别的图片,也就是数据集,要jpg格式的,ImageSets里面存放的是一些模型相关的文件,不需要改动
这里推荐使用labelImg标注图片
然后点左上角的File,点save选择Annotations文件夹为保存地址即可。
将创建好的标签名称放在model_data文件下的cls_class.txt文件中,cls_class.txt文件需要自己创建
之后将voc_annotation文件中的class_path路径修改成上面的标签文件,也就是cls_classes文件。
运行之后会出现每个标签在数据集出现的次数。
然后我们就可以训练自己的权重了,这里也是class_path路径修改成上面的标签文件在train.py运行训练,训练之后会在logs出现权重文件。
如果你装了cuda,这里改成True
这里是运行好的权重文件,在logs目录下面
epoch_map 平均精度曲线图
epoch_loss 损失曲线图
train loss表示训练损失。
val loss实线表示验证损失。
smooth train loss表示平滑后的训练损失。
smooth val loss表示平滑后的验证损失。
最后进行预测,将yolo文件中的model_path和onnx_path路径改成自己训练出来的权值路径,classea_mate路径改成自己的标签文件路径
最后展示一下训练结果:
以上就完成了,我的能力还处于小白阶段,如有思路错误,还请大佬指点,共同学习。