yolov8搭建蹚坑实战(基于NVIDIA系列显卡)-对你一定有用

申明:本文是我自己实际测试蹚坑案例,出现问题查阅了众多网上大咖的案例、问题解决办法总结而来,这里仅供大家学习学习。

一、环境安装

1、python开发环境安装(可选)

个人安装python-3.9.13,可通过访问官网https://www.python.org/进行下载安装,包括windows、linux等版本自行选择,建议不要使用太过新版本,可能导致部分组件不兼容。这里yolov8搭建可以不用独立安装python,在Anaconda3安装里已集成可提供独立的Python环境。

2、Anaconda3介绍与安装、设置下载源

2.1、介绍与安装注意事项

Anaconda3是一款功能强大的Python数据分析软件,专门为了方便使用Python进行数据科学研究而建立的一组软件包。 它汇集了数据科学领域常见的Python库,并自带了专门用来解决软件环境依赖问题的conda包管理系统。Anaconda能够轻松安装在数据科学工作中经常使用的包,提供了一个独立的Python环境,可以轻松创建和管理多个独立的Python环境,以便在不同的项目中使用不同版本的Python和不同的库。此外,它还集成了大量的科学计算和数据分析工具,如NumPy、Pandas、Matplotlib、Scikit-learn等,以及Jupyter Notebook,使得Python科学计算和数据分析更加简单和高效。Anaconda的软件功能主要包括包管理与环境管理,可以很方便地解决多版本Python并存、切换以及各种第三方包安装问题。Anaconda的安装步骤简单,用户可以通过访问Anaconda官网下载并安装(也可访问国内下载源地址进行下载,速度较快,比如清华大学的:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/)。安装完成后,用户可以利用conda和pip来安装、更新、卸载第三方工具包,而无需考虑版本等问题。Anaconda集成了众多数据分析的第三方包,如Numpy、Scipy、pandas等,提供了虚拟环境管理功能,解决Python多版本并存的问题。

注:Anaconda版本选择根据python版本进行选择,这里我选择Anaconda3-2021.11-Windows-x86_64.exe进行安装测试 ,若选择其他高版本,可自行研究相关依赖关系。

安装过程中选项全部勾选,然后一直下一步至最后。

2.2、设置下载源

安装完成后打开如下:

输入conda config --set show_channel_urls yes  回车后,会在当前用户下生成.condarc文件。

使用记事本或其他文本工具打开该文件可修改anaconda下载源为国内的,比如我这设置为清华源,复制如下替换到该.condarc文件:

channels:

  - defaults

show_channel_urls: true

default_channels:

  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main

  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r

  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2

custom_channels:

  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

2.3、创建anaconda独立环境:

conda create -n 环境名 python=版本号 -y,我这里为:

conda create -n yolo8 python=3.9 -y

注:若多个项目时,这里应该独立创建环境,最好一个环境跑一个项目避免冲突。若python为更高版本时,在后续配置过程中需注意各依赖组件的版本号,后面会介绍,避免各种坑,我反正躺够了。。

3、pycharm介绍与安装

PyCharm是一款适用于数据科学和Web开发的Python集成开发环境(IDE),旨在提高开发效率和质量。 它提供了专业的Professional Edition和免费的Community Edition,后者专注于代码和数据,适合个人和小型团队使用。PyCharm集成了Python开发所需的所有工具,包括语法高亮、错误检查、代码格式化、可感知上下文的代码补全、代码导航和结构视图等,从而简化了Python开发过程。PyCharm支持所有主要Python实现,包括Python 2.x与3.x、Jython、IronPython、PyPy和Cython,确保了广泛的兼容性。它还支持多种测试框架,如doctest、nose和attest,并集成了Coverage.py以测量代码覆盖率,帮助开发者更好地了解测试情况。此外,PyCharm还支持yappi和cProfile等Python分析器,以及Behave和Lettuce等BDD框架,支持Web开发中的HTTP客户端、WebSocket、HTTP/2等,提供了强大的测试和部署工具,包括Kubernetes、Terraform和Docker等,便于在多种环境和平台上部署应用。PyCharm的快捷键和自定义功能使其成为高效开发的理想选择,支持绑定多种键盘快捷键方案,包括Textmate、NetBeans、Eclipse、Emacs以及Vi/Vim仿真插件,进一步提高了编码速度和效率。版本控制系统集成支持Git、SVN、Mercurial、Perforce等,便于版本管理和协作。

总的来说,PyCharm通过其丰富的功能和强大的工具集,成为Python开发者的首选IDE,无论是对于初学者还是专业开发者,都能提供极大的便利和效率提升。

这里使用社区版本的就行啦,下载地址:https://www.jetbrains.com/zh-cn/pycharm/

点击首页下载按钮,至下面图所示:

可以使用最新版本的,安装过程中的选项全部勾选,一直下一步至结束。

4、Cuda和cudnn介绍、安装(没有GPU的飘过该章节)

4.1、英伟达(NVIDA)了解

NVIDIA是一家全球领先的计算机技术公司,专注于图形处理器(GPU)和人工智能(AI)计算。公司成立于1993年,总部位于美国加利福尼亚州的圣塔克拉拉。NVIDIA的产品和技术广泛应用于各个领域,包括游戏、虚拟现实、自动驾驶、数据中心、边缘计算等。作为全球最为知名的GPU制造商之一,NVIDIA的图形处理器技术推动了计算机图形学和游戏行业的发展。同时,由于其并行计算能力优势,NVIDIA的GPU也被广泛应用于科学计算、深度学习和人工智能领域。其旗舰级GPU产品线包括GeForce用于游戏玩家、Quadro用于专业工作站和数据科学家、Tesla用于高性能计算等。

NVIDIA还推出了一系列的软件开发工具和库,为开发者提供了丰富的工具和支持,加速了人工智能应用的开发和部署过程。其中最著名的是CUDA平台,它为开发者提供了在GPU上进行高性能计算的编程模型和工具。通过持续的创新和技术领导地位,NVIDIA在计算机行业取得了巨大成功,并为人工智能和高性能计算等领域的发展做出了重要贡献。

4.2、Cuda

CUDA(Compute Unified Device Architecture)是由NVIDIA开发的并行计算平台和编程模型,用于利用NVIDIA GPU(Graphics Processing Unit)进行通用目的计算(GPGPU),它是一种为GPU编程提供高性能和易用性的软件环境。

CUDA的主要目标是将GPU作为计算加速设备,用于执行并行计算任务,特别是科学计算和深度学习等领域。它通过提供一套编程接口(API)和工具集,使开发者能够利用GPU的大规模并行计算能力,以加速计算密集型任务。使用CUDA,开发者可以使用编程语言如C/C++、Python等来编写GPU加速的程序。CUDA提供了一系列库和工具,如CUDA Runtime库、CUDA Tools(如nvcc编译器)和NVIDIA Nsight开发环境,用于编译、调试和优化CUDA程序。CUDA的优势在于其紧密结合了NVIDIA GPU的体系结构特点,可对任务进行细粒度的并行处理,并利用GPU上的数百到数千个核心同时执行计算任务。这使得CUDA成为目前广泛应用于科学计算、数值模拟、深度学习等领域的GPU编程平台。

使用CUDA开发的程序,其执行的硬件需求需要是支持CUDA的NVIDIA GPU,并且需要安装相应的CUDA驱动程序和运行时库。

4.2.1显卡版本信息查看

通过右下角或者开始菜单栏打开NVIIIA控制面板》帮助》系统信息》组件,如下图所属查看是否有CUDA,有无需安装,没有需要下载安装:

没有CUDA时,通过系统信息》显示  查看驱动程序版本信息:

先访问https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html查看驱动程序版本对应的cuda推荐版本。


 

4.2.2下载对应版本cuda

访问https://developer.nvidia.com/cuda-toolkit-archive 下载对应的cuda版本

因为我这windows server2019,驱动程序版本552.44,最终选择11.3.x版本时才安装成功:

这里建议大家从符合驱动程序版本号的CUDA版本从低版本往上进行下载安装(注意操作系统版本Version)。安装过程很简单,一直下一步即可,若提示需重启执行即可。

4.3、cudnn

cuDNN(CUDA Deep Neural Network)是由NVIDIA开发的深度神经网络(DNN)加速库,专门用于在CUDA平台上进行深度学习任务的加速,他提供了高度优化的DNN(深度神经网络)基础操作和算法实现,如卷积、池化、归一化、激活函数等,以及自动求导和张量操作等,利用了NVIDIA GPU的并行计算能力和高度可编程的架构,提供了高性能的DNN计算和训练加速。通过使用cuDNN,深度学习框架(如TensorFlow、PyTorch等)可以利用其提供的GPU加速功能,加快训练和推理的速度。cuDNN库实现了高效的卷积计算和其他操作,优化了计算过程和内存使用,以最大化GPU的利用率和性能。cuDNN还提供了一些高级功能,如自动调整算法的性能和内存使用、混合精度计算等,以进一步提高深度学习任务的效率和性能。一句话说明,cuDNN是NVIDIA为深度学习开发者提供的一个重要工具,它通过高度优化的DNN操作和算法实现,使得深度学习框架能够更有效地利用CUDA和NVIDIA GPU的性能,加速深度学习任务的执行。它的主要特性如下:

  • 为各种常用卷积实现了 Tensor Core 加速,包括 2D 卷积、3D 卷积、分组卷积、深度可分离卷积以及包含 NHWC 和 NCHW 输入及输出的扩张卷积
  • 为诸多计算机视觉和语音模型优化了内核,包括 ResNet、ResNext、EfficientNet、EfficientDet、SSD、MaskRCNN、Unet、VNet、BERT、GPT-2、Tacotron2 和 WaveGlow
  • 支持 FP32、FP16、BF16 和 TF32 浮点格式以及 INT8 和 UINT8 整数格式
  • 4D 张量的任意维排序、跨步和子区域意味着可轻松集成到任意神经网络实现中
  • 能为各种 CNN 体系架构上的融合运算提速

在数据中心和移动 GPU 中采用 Ampere、Turing、Volta、Pascal、Maxwell 和 Kepler GPU 体系架构的 Windows 和 Linux 系统均支持 cuDNN。

访问https://developer.nvidia.com/rdp/cudnn-archive根据cuda版本匹配下载:

注:根据你的显卡驱动程序版本下载的CUDA版本匹配下载。

最后将下载的zip加压,将解压目录下的文件夹文件拷贝CUDA对应版本号目录下即可。

4、YOLOV8源码下载

这里不再介绍YOLOV8了,需要了解的自己搜索,网上一大堆基础介绍。

下载方式:

(1)官网版本:https://github.com/ultralytics/ultralytics  就一句:慢的要死,有vpn的除外。选择指定一个版本即可,下载后解压至指定目录即可:


+

5、YOLOV8配置

该节注意坑点,特别是GPU版本的:由于YOLOV8相关依赖下载过程中按照requirements.txt中要求的依赖最低版本后,按最新的版本下载,导致运行过程中各种冲突、兼容问题导致代码验证通不过。

5.1、pycharm添加解释器

打开,点击【Open】打开解压的yolov8文件夹即可加载源码

点击pycharm右下角添加解释器:

选择安装的anaconda3\Scripts\conda.exe,点击Load Environments:

最后,右下角选择yolov8即可:

最后等待相关依赖环境完成安装即可。

5.2、YOLOV8 CPU版本配置

(1)把requirements.txt中的torch和torchvision前面的#号去掉

(2)终端运行安装代码:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ 

这里-i后面为清华源下载地址,等待依赖下载完成即可。

(3)打开如下图所示wzq.py。取消注释,右键RUN即可进行验证:

出现如下所示表示成功:

打开C:\yolov8\runs\detect\predict(对应你自己yolov8所在目录)看到有图片效果:

5.3、YOLOV8 GPU版本配置(没GPU的跳过)

(1)用#号,把requirements.txt里面的torch和torchvision注释掉,或者删除

(2)终端运行安装代码:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ 

这里-i后面为清华源下载地址,等待依赖下载完成即可(一定要全部安装完成后再下一步)。

(3)终端运行GPU版本pytouch以及相关依赖组件:(坑点!!!)

很多网上都直接给出了你推荐安装代码,比如:

conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=11.3 -c pytorch -y

但这里当你运行完成后执行测试时,会出现各种报错,比如:

Could not run 'torchvision::nms' with arguments from the 'CUDA' backend,还有些模块import失败等。

建议安装方式如下:

打开https://pytorch.org/get-started/previous-versions/ 根据你的CUDA版本往下的相近版本匹配安装,比如CUDA12.4,但是官网只有12.1,可以使用这个:

这里首次安装文伟pytouch较大,有2.5G左右,会下载很慢,估计得几个小时。不想等太久可以按照下面步骤执行,否则跳过如下步骤:

可以另外一种方式先对touch单独下载比在本地进行安装,再安装 torchvision和torchaudio:

(a)执行命令python -m pip debug --verbose

往下翻,把第一个 cp39-cp39-win_amd64复制:(根据你python环境复制,这里以我的版本为例)

(b)访问https://download.pytorch.org/whl/torch_stable.html,ctrl+f复制cp39-cp39-win_amd64进行搜索:因为我的CUDA版本12.4,列表如下图中最前面cu121表示cuda版本号,没有124,那么直接使用121版本也行:

这里下载(迅雷很快)到本地的yolov8目录下:

终端执行如下代码完成安装即可:

最后再执行其他依赖代码:pip install torchvision==0.17.2 torchaudio==2.2.2完成安装即可。

(4)终端运行GPU版本pytouch以及相关依赖组件后,执行测试成功即可:

 打开如下图所示wzq.py。取消注释,右键RUN即可进行验证:

出现如下所示表示成功:

打开C:\yolov8\runs\detect\predict(对应你自己yolov8所在目录,predict目录没运行一次。就会在目录后面+1)看到有图片效果:

至此,yolov8环境搭建完毕。按照上面步骤,会解决因为依赖冲突导致的后面训练时出现的错误问题。

二、数据集标注

1、Labelimg介绍与安装、配置

LabelImg是一个开源的图形图像注释工具,用于创建边界/矩形框(适用于要标注物体的位置和大小)和多边形注释(适用于标注非规则形状的物体)。LabelImg能够在Windows、Linux和macOS等多个平台上运行,同时支持各种类型的图像文件格式,如JPG、PNG和BMP等(注:图片格式不是这几种的,可以使用格式工厂转一下即可)。
在LabelImg中,可以选择PASCAL VOCYOLOCreateML三种格式进行类别标注,生成的文件类型分别为:

(常用)PASCAL VOC——xx.XML文件

(常用)YOLO——xx.txt文件

CreateML——xx.json文件

CreateML是Apple提供的一种机器学习工具箱,用于构建和训练各种机器学习模型,包括图像分类、目标检测等任务。

安装步骤:

(1)打开Anaconda Prompt (anaconda3),不要安装在base环境,容易闪退,输入conda activate yolov8,切换到yolo8环境:

(2)输入pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple 完成安装

(3)创建labelimg快捷方式:

输入conda info --envs

本地进入 C:\anaconda3\envs\yolo8\Scripts:

(4)配置labelimg:

Auto Save mode:切换到下一张图的时候,会自动保存标签。

Display Labels:会显示标注框和标签

Advanced Mode:标注的十字架会一直悬浮在窗口

Open:打开单张图片

Open dir:打开图片所在文件夹

Change save Dir:输出的标注文件保存位置

如下选择保存的格式,一般选择yolo:

常用快捷键:

  •  A:切换到上一张图片
  • D:切换到下一张图片
  • W:调出标注十字架
  • del :删除标注框框
  • Ctrl+u:选择标注的图片文件夹
  • Ctrl+r:选择标注好的label标签存在的文件夹

2、数据集格式

训练集train和验证集val的比例,一般默认是8:2,可以配置文件进行调整,后面会说。

3、labelimg标注详解 

3.1、打开需要标注的图片

可打开单张、也可以打开图片文件夹:(图片均是在网上随便找的,注意后缀名一定统一!!!,要么全为jpeg,要么全为png,否则后面的训练过程中会报错。除非你会将源代码中的这部分可自行进行修改转换也行,这需要一定的python编程基础

 首次打开文件夹弹出选择No

再选择图片所在文件夹:

选择好图片文件夹后会弹出,选择No:

随后弹出的选择文件夹,选择labels文件夹:

注意:第一次弹出后,后续不再弹出这个选项,后续点击Change Save Dir ,设置标签labels保存路径即可:

3.2、对图片进行标注

双击图片或者D/A切换没图片上右键或者左边栏点击Create RectBox,如下以训练口罩识别进行标注、配置,若需要识别其他物品等,请自行标注

拖住鼠标左键框选图片口罩识别区域,弹出的输入标签名mask,点击ok:(标注框选区域尽量不要框选口罩意外的内容,尽量贴近识别物品的边缘)

点击保存后,会在labels目录下生成文件名一样的一个txt文本,以此类推,完成所有图片的标注,一定记得没完成一个保存一下,比如你标注10张图片,那么labels文件夹下一定有10个对应相同名称的label标签txt,以及一个classes.txt文本。

如果lebel标签名输入一次后,下一张图片直接选择标签即可:

打开文件后解释如下:

三、训练验证

1、数据集划分

前面提到的训练集train和验证集val文件夹不需要手动建,需要配置运行即可:

然后执行运行即可:

注意:运行前一定记得labels中删除classes.txt,保证images和labels一一对应,数量一致

运行后会生成:

2、数据集配置和训练

如上图所示,将数据集voc1整个目录复制到pycharm中yolo8工程中:

打开wzq.py,配置:

如果上图训练次数参数不写时,会读取默认配置文件次数,如下所示为默认配置文件:

配置data.yaml:

3、开始训练

wzq.py右键运行:

出现运行参数,加载相关模型等信息:

开始指定训练轮数训练,本实验配置的100次:

出现如下表示完成训练:

注意:可以翻看该窗口查看是否有报错信息,若按照前面的环境完成安装配置,将不会出现报错信息;否则就是安装依赖相关组件存在版本冲突或者缺失,请详细检查!!!!!另外CPU训练较慢。

4、训练结果测试、

查看训练结果权重模型

修改模型进行测试

4.1、用图片进行测试

按照图片方式测试配置,项目下新建一个test文件夹并放入测试图片:

右键wzq.py run,获得结果:

如下表示测试成功,如果没有显示检测框,以及控制台出现no detections,可以将训练次数加大,

results = model.train(data='data.yaml', epochs=500)

以及如下设置

4.2、使用摄像头测试

摄像头检测时,如果不显示检测窗口,是因为默认不会实时显示检测的窗口,可以把 ultralytics/cfg/default.yaml里面的show值 改为True,就可以实时显示摄像头检测了

4.3使用视频文件进行测试:

注:若涉及安防摄像头或者抓拍场景较远的视频时,可能识别效果不太理想,需要大量素材、大批次进行训练测试:

5、其他常见训练报错信息

若出现其他错误信息需要具体分析:

常见于个人台式电脑出现的错误,比如:

(1)内存超出异常——会有相关报错信息如:CUDA out of memory或者[WinError 1455] 页面文件太小。

解决方案:

  • 调小default.yaml的batch的值,改为8以内的数值
  • 修改系统的虚拟内存调大

(2)Arial.ttf,<urlopen error [WinError 10054] 远程主机强迫关闭了一个现有的连接。>

解决方案:把源码根目录的Arial.ttf字体,放到C:\Users\用户名\AppData\Roaming\Ultralytics目录下,其中红色部分是自己电脑的用户名,根据具体情况进行修改。

注:另外,安装成功后在终端输入pip list 先把素有安装依赖版本记录起,避免后续其他操作时导致部分依赖版本被强制更新导致程序报错,对比可以回退版本:

比如我在后面设置导出onnx更新时就遇到了numpy 和opencv版本被更新导致报错,参照之前的依赖版本将被更新的opencv(被升级到4.10)和numpy(被升级到2.0)降级至之前的版本后运行代码正常:

 pip install opencv-python==4.8.0.76 -i https://pypi.tuna.tsinghua.edu.cn/simple/

 pip install numpy==1.26.4  -i https://pypi.tuna.tsinghua.edu.cn/simple/  

近期会更新java调用yolov8代码。

如对您有帮助,请点赞关注哈~谢谢。有问题也可以留言~大家一起学习。

  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值