YOLOv5实现目标检测

目标检测在计算机视觉领域中具有重要意义,yolov5(You Only Look One-level)是目标检测算法中的一种代表性方法,以其高效性和准确性备受关注,并且在各种目标检测任务中都表现出卓越的性能。本文介绍了如何配置yolov5的运行环境、如何进行数据标注、如何通过yolov5训练数据集实现图片的目标检测。

一、Anaconda新建虚拟环境

虚拟环境的概念:虚拟环境是一种将项目的依赖项和运行时环境与系统中其他项目隔离开来的工具。它创建了一个独立的、虚拟的Python运行环境,使得您可以在同一系统上的不同项目中使用不同版本的Python解释器和库,而不会相互干扰。

简单来说,就是你可以在不同的虚拟环境里安装不同的python版本和包,使每个环境适用于具体的项目。

1、安装Anaconda

安装教程参考:Windows系统安装Anaconda

2、使用Anaconda新建虚拟环境

两种方式,一种是通过命令行,一种是使用Anaconda的可视化界面。

① 命令行创建:

conda create -n yolov5 python=3.9 -y  #创建一个使用python版本为3.9的名为yolov5的虚拟环境

② Anaconda的可视化界面创建:

yolo001 2 852x1024 - YOLOv5实现目标检测

注意:这里推荐Python版本选择3.9,因为yolov5的一些包3.7版本支持不了,而3.11版本的pyhton安装yolov5的环境也有很多不兼容的地方,比如int型和float转换的地方会报错,从而导致软件闪退。


二、下载解压yolov5代码

GitHub上yolov5下载地址:https://github.com/ultralytics/yolov5

这个代码包作就是yolov5的项目文件,下载之后解压。
(我解压到了D:\Projects\PyCharm\YoLo\yolov5路径下,记住路径,后面会用到)


三、安装yolov5代码所需要的第三方库

1、激活虚拟环境

激活也可以理解为是切换,对一个虚拟环境的操作(比如安装包),需要先切换到这个环境下。

我们切换到我们刚刚创建的虚拟环境yolov5下:

conda activate yolov5  #切换到yolov5虚拟环境
image 8 - YOLOv5实现目标检测

可以看到我们从base环境(Anaconda自带的默认环境)切换到了yolov5环境。

2、pip安装yolov5所需要的第三方库

conda activate yolov5  #切换到yolov5虚拟环境
d:
cd D:\Projects\PyCharm\YoLo\yolov5  #切换目录到yolov5的项目目录下
pip install -r requirements.txt  #根据yolov5代码里的需求文件,下载安装所需要依赖包
yolo002 1024x579 - YOLOv5实现目标检测
yolo003 1024x573 - YOLOv5实现目标检测

如果没有报错则安装成功。

报错原因一般是连接超时导致的下载失败,翻或者换源,这里我更推荐前者。


四、数据标注

(注意:本教程推荐采用yolov5配套的预训练模型,不需要自行数据标注,本节仅作介绍。)

数据标注的过程通俗来讲就是給图片画框的过程,框出需要识别到的部分,然后打上标签,比如图片里有一头牛,那就把牛框起来然后命名框的标签为牛。

Q3PQ 9UQ9F6DOQNBSX66T 1024x539 - YOLOv5实现目标检测

这里,我们使用Labelimg进行数据标注,教程参考:使用Labelimg进行数据标注


五、yolov5模型训练

1、PyCharm打开yolov5项目

新建项目,项目路径(Location)为GitHub上下载的yolov5项目路径。

image 11 - YOLOv5实现目标检测

2、修改虚拟环境

新建好项目之后,我们打开设置。

yolo006 - YOLOv5实现目标检测

找到Python Interpreter,修改为我们在Anaconda自行创建的yolov5的虚拟环境。

yolo007 - YOLOv5实现目标检测

如果下拉框里没有,我们就在Add Interpreter里新增。

yolo008 - YOLOv5实现目标检测

3、训练测试数据

① 下载预训练模型

预训练模型地址:https://github.com/ultralytics/

选择你所需要的模型下载即可,这里我选择yolov5s.pt下载。

下载好之后放到我们yolov5的项目目录下。

② 训练数据

右键train.py,点击run运行。

yolo009 - YOLOv5实现目标检测
yolo010 1024x510 - YOLOv5实现目标检测
yolo011 - YOLOv5实现目标检测

运行成功后如图,训练结果保存在runs\train\exp文件夹里。

1ASCAI68A1CN5KPI0Y3298 1024x416 - YOLOv5实现目标检测

其中weights里存储两个训练出的模型,分别为best.pt和last.pt,顾名思义,best.pt为跑出来结果最好的模型。


六、模型测试

1、拷贝最优模型

模型训练完成后,我们将最优模型(best.pt)复制在yolov5文件夹下。

image 14 - YOLOv5实现目标检测

2、使用最优模型进行图片识别

切换虚拟环境为yolov5,切换目录为yolov5项目目录下。

python detect.py --weights best.pt --source ../cow/healthycows/ 
#weights是你训练好的模型路径
#source是你要去图片识别的目标图片路径(填文件夹则默认识别文件夹下所有图片)
yolo014 1024x581 - YOLOv5实现目标检测
yolo015 1024x578 - YOLOv5实现目标检测

测试结果在 runs\detect\esp2\目录下。

看看识别效果:

yolo018 - YOLOv5实现目标检测
yolo017 - YOLOv5实现目标检测
imgs448 - YOLOv5实现目标检测
此条目发表在AI, DeepLearning, ImageRecognition, Python分类目录,贴了, , , , , , 标签。将固定链接加入收藏夹。

YOLOv5实现目标检测》有3条回应

  1. 蛤蟆公主~说:

    我按照这个步骤进行train时,出现了一些问题,运行好像没有成功,未出现训练结果保存在runs\train\exp文件夹里,但是val验证集却可以,我不知道出现了什么问题,问题提示中出现:C:\Users\13983\.conda\envs\yoloV5\python.exe D:\Projects\PyCharm\Yolo\yolov5\train.py
    Traceback (most recent call last):
    File “C:\Users\13983\.conda\envs\yoloV5\lib\site-packages\git\__init__.py”, line 296, in
    refresh()
    File “C:\Users\13983\.conda\envs\yoloV5\lib\site-packages\git\__init__.py”, line 287, in refresh
    if not Git.refresh(path=path):
    File “C:\Users\13983\.conda\envs\yoloV5\lib\site-packages\git\cmd.py”, line 631, in refresh
    raise ImportError(err)
    ImportError: Bad git executable.
    The git executable must be specified in one of the following ways:
    – be included in your $PATH
    – be set via $GIT_PYTHON_GIT_EXECUTABLE
    – explicitly set via git.refresh()

    All git commands will error until this is rectified.

    This initial message can be silenced or aggravated in the future by setting the
    $GIT_PYTHON_REFRESH environment variable. Use one of the following values:
    – quiet|q|silence|s|silent|none|n|0: for no message or exception
    – warn|w|warning|log|l|1: for a warning message (logging level CRITICAL, displayed by default)
    – error|e|exception|raise|r|2: for a raised exception

    Example:
    export GIT_PYTHON_REFRESH=quiet

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last):
    File “D:\Projects\PyCharm\Yolo\yolov5\train.py”, line 100, in
    GIT_INFO = check_git_info()
    File “C:\Users\13983\.conda\envs\yoloV5\lib\contextlib.py”, line 79, in inner
    return func(*args, **kwds)
    File “D:\Projects\PyCharm\Yolo\yolov5\utils\general.py”, line 406, in check_git_info
    import git
    File “C:\Users\13983\.conda\envs\yoloV5\lib\site-packages\git\__init__.py”, line 298, in
    raise ImportError(“Failed to initialize: {0}”.format(_exc)) from _exc
    ImportError: Failed to initialize: Bad git executable.
    The git executable must be specified in one of the following ways:
    – be included in your $PATH
    – be set via $GIT_PYTHON_GIT_EXECUTABLE
    – explicitly set via git.refresh()

    All git commands will error until this is rectified.

    This initial message can be silenced or aggravated in the future by setting the
    $GIT_PYTHON_REFRESH environment variable. Use one of the following values:
    – quiet|q|silence|s|silent|none|n|0: for no message or exception
    – warn|w|warning|log|l|1: for a warning message (logging level CRITICAL, displayed by default)
    – error|e|exception|raise|r|2: for a raised exception

    Example:
    export GIT_PYTHON_REFRESH=quiet

    进程已结束,退出代码为 1
    好像是init有问题,但是我害怕修改之后出现一定的·问题

  2. VollessKin说:

    YOLO算法确实不错,在实时检测方面具有很好的效果!

发表回复