YOLOv5环境配置中可能出现的问题
今天是2024.3.7 yolov5配置可能出现版本更新中出现各种问题,现在我就写一篇我遇到的问题,给大家避雷!(2024.4.2更新了些网友反映的问题以及解决办法)
我yolov5光光配置环境就花了五天,所以想写一下文章,减少后面的人碰壁的可能
本文章基于"炮哥带你学"博主的文章:(优先看他的文章,我的文章只是我配置时候出现的问题)目标检测---教你利用yolov5训练自己的目标检测模型_目标检测 教你利用-CSDN博客
NVIDIA驱动安装与更新:
1.CUDA版本过高
CUDA版本过高可能会出现有些模块例如pytorch找不到对应的版本,paddle找不到稳定的版本等等
我的建议是11.0-11.2左右就刚刚好。
然后我选择11.1.1的原因是:刚刚好所有包都可以找到对应的版本(炮哥也是这个版本)
可以去以下网址先选择版本:(电脑支持以前的版本,只要不高于电脑支持的版本就行)
CUDA Toolkit Archive | NVIDIA Developer
也可以和我一样:CUDA Toolkit 11.1.1 (推荐)这样就能跟博主炮哥一样,减少麻烦
我的版本:CUDA Toolkit 11.1 Update 1 Downloads | NVIDIA Developer
如果因为之前安装过其他版本,可以进行卸载,参考:
2.Anconda环境搭建问题
首先因为Anaconda版本越高,自带的python版本越高,如果版本太高,在进行打标签labelimg的时候容易出现闪退的情况
如果出现闪退可以参考:labelimg打框时闪退_labelimg 拉框闪退-CSDN博客
但是我的话直接简单粗暴,下载旧版本anconda,这样,他默认配置python环境是3.8的能直接使用,而且不会出现各种问题,安装完具体操作看炮哥的
Anaconda历史版本网站
Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirroranconda
我的版本:(同炮哥版本一样)
3.pytorch环境创建
创建虚拟环境conda create -n 环境名字(英文) python=x.x(python版本),如下,我就是创建了一个名字叫pytorch,python是3.8版本的环境。
conda create -n pytorch python=3.8
创建好后:
conda activate pytorch
进入环境,然后看下一步:
这个经历过无数次尝试,我得到一个比较好的流程:
官网那里默认的版本都别选,因为会版本对应不上
我的选择是点击:左下角Previous version of PyTorch(选择更多版本)
然后因为我的是11.1.1的所以,我选择
对应的是CUDA 11.1的,注意是v1.8.0 前面的对应的不是11.1.1可能是11.1.0
(下一步重要跟着我来,不然速度很慢)
从上图我们可以得到安装代码如下:
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge
但是,根据文章评论区反映,如果直接输入安装代码会非常慢,一直卡在Solving environment,通过查CSDN,我找到了比较快的方法:pytorch下载太慢的解决办法-CSDN博客
该方案就是将官网的下载路径,改到清华镜像源的路径,先用activate激活自己之前创建的环境后,在命令行输入以下代码:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
这时候我们输入安装代码,会发现出现错误:
可能是在镜像里找不到这个版本的cudatoolkit 11.1
我的思路如下:
先从官方那安装cudatoolkit=11.1再执行安装指令(单独分开来,这样到时候他会检测到你已经安装了cudatoolkit 11.1 后就会跳过寻找这个包了)不知道佬们有没有别的方法
conda install cudatoolkit=11.1 -c nvidia/label/cuda-11.1.1 -c conda-forge
安装完后再执行:(不需要填写 -c pytorch -c conda-forge就不会一直卡在Solving environment)
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1
然后等待安装...... 20-30分钟吧
4.paddlepaddle环境安装
如pytorch环境安装一样,首先在base环境下创建一个新的环境来安装paddlepaddle框架。首先创建一个新的环境名叫paddle。执行如下命令。
conda create -n paddle python=3.8
创建好了名叫paddle这个环境以后,进入到这个环境中(可以在pytorch环境下进入),执行如下命令。
conda activate paddle
然后到这一步也有讲究:
因为版本更新:现在没有2.1版本的paddle了,但是用2.6也能运行只要是CUDA11.2的就行
尽管你CUDA是11.1的但是也无妨
具体选择如下
然后再paddle环境下输入指令:
conda install paddlepaddle-gpu==2.6.0 cudatoolkit=11.2 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/ -c conda-forge
到这步了,然后等吧 ......镜像好像也没有 如果中途出现各种错误 csdn都有对应的解决办法
一般下载中断出现问题的话,可以再重复下载,下载过的文件会直接跳过。然后安装的时候如果出现类似文件已经存在的命令,直接按照他的意思删掉相应文件。还有一些各种问题,只能搜csdn了
5.pycharm安装
去官网无脑下载最新版本
我的版本是2023.2
本来以为报错是因为pycharm版本问题,然后下载了2021版本的,但是依然报错,所以还是安装回来应用商店的版本。
然后我也会遇到一些问题,比如找不到conda可执行文件
解决办法参考:pycharm找不到conda可执行文件怎么办?-CSDN博客
完美解决!
致辞,搭建环境问题基本解决了。
6.打标签labelimg
能不用lablme就不用,因为导出格式为json,后续不太好转换,转换软件也容易出现各种问题......亲身体验过了。
按照文章下载安装包。然后当你发现你的labelimg会出现画框框就出现闪退的情况。大概率是你的python版本过高。你可以选择进入你刚刚搭建好的pytorch环境(如果跟着文章来的话你创建的python环境应该是3.8,进入环境后python就是3.8再打标签就不会闪退)。因为你创建的时候就已经写了python==3.8
然后再进入VOL2007文件夹运行代码开始打标签。
注意一个点:
Open Dir是图片路径也就是JPEGImages
Change Save Dir是保存路径也就是Annotations
标注前要设定好,不然可能白打了,也可以打标签的时候注意下文件夹有没有出现新文件
然后我发现我有一个独有的问题,csdn都没搜到解决办法。
就是我打标签,打完标签然后退回去看发现之前打过的标签位置错乱了!!!
经过半天排查。。发现是我的图片名字出现重复(因为我是一键重命名的)jpg,jpeg文件名字类型不一样,就可以用同一个名字,但是labelimg不知道你文件不一样,所以只要标了一个框框,相同名字的文件也有框框导致框框错乱。所以一个改动,相同名字的图片也会一起改动...
7.VOC标签格式转yolo格式
文件格式跟炮哥一样基本没问题。主要是路径地址要改对,以及你的转换代码要和VOCdekit文件处于同一个目录下,例如:
共同处于数据转换(文件名自定义)文件夹下
遇到的问题:
1.把VOCdevkit复制到数据转换目录下出现报错(具体报错当时我没截图)反正复制过去发现Annotations里面文件夹都不见了。
解决办法: 在桌面创一个文件夹例如名字叫“数据转换”,把VOCdevkit放进去,然后用pycharm打开,点数据转换,然后创建VOL格式转换python文件,把代码复制进去(144行的那个),然后按照流程转换,即可。
2.转换完发现文件夹images/train 或者images/vol里没有文件或者有空数据标签(点开看看里面是否有数据)大概率是没有按照流程走,比如转化代码没跟VOCdevkit在同一个目录下。或者classes = ["xxx"]中没对应上你的标签数据。建议反复看看确保格式正确
8.train文件出现的问题
1.ValueError: zero-size array to reduction operation maximum which has no identity
网上说:要加上assert array.size != 0验证。但是在yolov5检测中很大概率是训练数据中只有空标签数据。也就是转换那一步出现的问题。数据标签里面没东西,参考上一步
2.可能会出现Could not find xxx
首先第一事情检查路径,一般会有提示在那个路径找不到的。不行就复制报错去csdn,能成
3.UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte
解决:按照下面文章步骤修改即可
win10下Yolov5-5.0的使用问题_unicodedecodeerror: 'gbk' codec can't decode byte -CSDN博客
4.subprocess.CalledProcessError: Command ‘git tag‘ returned non-zero exit status 1.
参考以下文章:
5.tag = subprocess.check_output(‘git tag’, shell=True).decode().split()[-1]
IndexError: list index out of range
超过序列,自查数据集,看看是不是标签没匹配,少标签,多标签什么的。
6.UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb2 in position 6:invalidstartbyte
一般和3适合配套的,问题会一起出现解决方法如下:
7.AttributeError: Can't get attribute 'SPPF' on <module 'models.common' from 'D:\\yolov5\\yolov5-5.0\\yolov5-5.0\\models\\common.py'>
这个很常见,应该是算法确实,解决方法如下:
8.Dataset not found
经过我的实验,发现是路径问题,因为我的我把yolo文件放在桌面上了,路径包含中文“桌面”
如图:
解决办法:只需要把文件放在全英文路径即可
9.AttributeError: module numpy has no attribute int.
http://t.csdnimg.cn/iP8s2 (网友Alphanic提供的方法~)
开始训练......
至此。我遇到的所有问题都在这了,还有一些细小的问题我就不说了。可以把报错代码都复制到csdn就好了(前人都会经历过的~)~希望后面的人能够一帆风顺吧,不再花太多时间配置环境。