yolov5--从Github下载到运行遇到的错误集锦【pycocotools报错+Can‘t get attribute SPPF+in _next_assert img0 is not None】

简介: yolov5--从Github下载到运行遇到的错误集锦【pycocotools报错+Can‘t get attribute SPPF+in _next_assert img0 is not None】

yolo算法

YOLO(You Only Look Once)是一种基于深度神经网络的对象识别和定位算法,其最大的特点是运行速度很快,可以用于实时系统。现在YOLO已经发展到v6版本,不过新版本也是在原有版本基础上不断改进演化的。这次主要是克隆Github上yolov5版本的程序,然后再pycharm上运行。


首先,是从github上下载程序。【注意此次下载的是V5.0版本】378bffeba46848118a8b296d736ab093.png

下载成功后就是漫长且易秃的环境配置之路,首先我们还需要一些准备工作——安装pytorch【安装方法随处都是,这里不过多介绍,推荐使用anaconda】。安装好pytorch后,我们可以为创建一个pytorch的虚拟环境,然后就可以在pycharm内使用这个环境的解释器了。创建命令为 conda create -n pytorch python ,创建好这个虚拟环境之后,可以通过命令 conda activate pytorch进入该环境中。这些准备就绪,真正的环境配置之路正式开始。后文主要介绍一些常见的不好解决的错误,每个人电脑环境不一样,所以错误的方式肯定有所差别,但一些类似之处可以借鉴。

  • 现在我们拿到程序了,第一步要做的是安装所需的各种包,此程序为读者写了requirement.txt文档,可谓非常良心。我们可以通过在pycharm的Terminal中输入 pip install -r requirements.txt命令,这样就可以安装此程序所有需要的包了。安装这些包的过程中,最常见的一个问题就是安装pycocotools失败,他会报错需要什么C++tools,这里我尝试了网上的许多方法,发现还是这一个比较靠谱,凡是出现和pycocotools失败有关的问题,都可以参考,链接如下:pycocotools报错解决方法。至于其他的一些包的安装,在网上较容易找到解决方案,这里不一一介绍【注:需要注意的是安装包的过程中最好把代理关了(如果设置了的话),否则可能会出现安装不了的情况】
  • 终于把所需要的环境安装好了,接下来肯定是想来运行运行了。果然事情没这么简单,我发现根本运行不了,仔细看看,我的pycharm中都是红色的错误,看看这些错误,心中一喜,发现都是一个类型:python version 3.5 does not support ‘f‘ prefix。意思大致是说,python3.5版本没有前置f的方法【当然自己是纳闷的,根本就没装python3.5呀🤐🤐🤐】。这样一来,我想解决了这个问题应该就可以运行成功了,于是上网上一顿搜索,尝试了各种各样的方法,当然最后还是无果。这里先总结一下网上主要的解决方法:通过设置-搜索Code compatibility inspection-然后选择合适的版本解释器,如图:image.png这个问题似乎很难解决,但是从网上的资料来看,这个问题不是个例,但有人貌似是解决了的,在我百思不得其解时,突然看到这样的一条:重装pycharm吧。没有豁然开朗的感觉,只是抱着试一试的心态,说不定就是pycharm版本较低导致的呢,于是来了一遍卸载+重装pycharm之路,呼···终于装好了,没有报错,果然重装大法好!
  • 一眼看着代码文件,没有显眼的的红色了,这回又运行了一次。发现了如下错误:Can‘t get attribute ‘SPPF‘ on <module ‘models.common‘ from ‘–yolov5-5.0\models\common.py。于是又开始了寻找资料之旅,最后功夫不负有心人,在b站某视频的评论区找到了解决方案:去V6版本里面的model/common.py里面去找到这个SPPF的类,把它拷过来到你的这个V5的model/common.py里面,之后在common.py中引入warnings包就可以了。
  • 心中默念这次一定行,出现报错: in _next_ assert img0 is not None, ‘Image Not Found ‘ + path
  • 解决方法:将utils/datasets.py文件中的
p=str(Path(path).absolute()) # os-agnostic absolute path

改为

p=str(Path(path))

如图,为修改后的结果:修改后重新运行即可

57e5accba40241f993ee470b81565428.png经过一步步的调试修改,最后终于可以成功运行了。可以看看运行后的结果,可以实现一些图片中物体的检测

7d18c3b4b2f741e4a54fc80d15d4bf4a.pnga29ec0c2fb8c4e84991411c42d192ef0.png

下面介绍一下yolov5中一些参数的设置及含义:


parser=argparse.ArgumentParser()
parser.add_argument('--weights', nargs='+', type=str, default='yolov5m.pt', help='model.pt path(s)')   #表示网络的规模parser.add_argument('--source', type=str, default='data\Video\Train.mp4', help='source')  # file/folder, 0 for webcam  #表示训练的路径parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)')    #输入图片大小parser.add_argument('--conf-thres', type=float, default=0.25, help='object confidence threshold')   #置信度parser.add_argument('--iou-thres', type=float, default=0.45, help='IOU threshold for NMS')
parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
parser.add_argument('--view-img', action='store_true', help='display results')    #实时显示parser.add_argument('--save-txt', action='store_true', help='save results to *.txt')    #保存txt文件parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels')
parser.add_argument('--nosave', action='store_true', help='do not save images/videos')
parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --class 0, or --class 0 2 3')
parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS')
parser.add_argument('--augment', action='store_true', help='augmented inference')
parser.add_argument('--update', action='store_true', help='update all models')
parser.add_argument('--project', default='runs/detect', help='save results to project/name')   #保存路径parser.add_argument('--name', default='exp', help='save results to project/name')
parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')
opt=parser.parse_args()


咻咻咻咻~~duang~~点个赞呗

相关文章
|
2月前
|
数据安全/隐私保护
github报错(完美解决):获取token。remote: Support for password authentication was removed on August 13, 2021.
这篇文章介绍了如何在GitHub上解决因密码认证被移除而导致的推送错误,通过创建和使用个人访问令牌(token)来代替密码进行身份验证。
303 0
|
4月前
|
Web App开发 Linux 开发工具
告别卡顿,畅享GitHub:国内开发者必看的五大加速访问与下载技巧
【8月更文挑战第4天】告别卡顿,畅享GitHub:国内开发者必看的五大加速访问与下载技巧
告别卡顿,畅享GitHub:国内开发者必看的五大加速访问与下载技巧
|
4月前
github下载的.ipynb文件报错unreadable Notebook NotJSONError
【8月更文挑战第2天】文章提供了解决GitHub下载的Jupyter Notebook文件打开时报错的方法,包括端口冲突和文件加载错误。
93 0
github下载的.ipynb文件报错unreadable Notebook NotJSONError
|
4月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之从GitHub下载代码失败是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
Java 网络安全 开发工具
新手入门Java。如何下载Eclipse、写出最基本的“Hello word”以及如何连接github并且上传项目。
新手入门Java。如何下载Eclipse、写出最基本的“Hello word”以及如何连接github并且上传项目。
62 0
|
5月前
|
网络安全 开发工具 git
【git】解决git报错:ssh:connect to host github.com port 22: Connection timed out 亲测有效
【git】解决git报错:ssh:connect to host github.com port 22: Connection timed out 亲测有效
1264 1
|
5月前
|
机器学习/深度学习 人工智能 分布式计算
人工智能平台PAI操作报错合集之引用github.com/alibaba/pairec包时报错,该如何解决
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
【完美解决】Github action报错remote: Write access to repository not granted.
【完美解决】Github action报错remote: Write access to repository not granted.
|
5月前
|
网络安全 开发工具 git
使用git克隆仓库报错:Warning: Permanently added‘github.com’ to the .....(ssh )
所以,你可以安全地忽略这个警告,它不会影响到你使用git克隆仓库。如果你已经成功克隆了仓库,那么一切都在正常工作。如果你在克隆过程中遇到其他问题,那可能需要查看具体的错误信息来解决。
131 0
|
2月前
|
编解码 Oracle Java
java9到java17的新特性学习--github新项目
本文宣布了一个名为"JavaLearnNote"的新GitHub项目,该项目旨在帮助Java开发者深入理解和掌握从Java 9到Java 17的每个版本的关键新特性,并通过实战演示、社区支持和持续更新来促进学习。
83 3