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~~点个赞呗

相关文章
|
3月前
|
缓存 网络协议 Linux
百度搜索:蓝易云【解决github push/pull报错443】
通过以上方法,你有望解决GitHub push/pull报错443的问题。如果问题仍然存在,建议检查GitHub的状态页面,看是否有正在维护或故障的情况。
83 3
|
6月前
|
开发工具 git
如何运行github上面的node+express项目
如何运行github上面的node+express项目
104 0
|
6月前
|
小程序 JavaScript 开发工具
如何运行github上的mpvue小程序开源项目
如何运行github上的mpvue小程序开源项目
73 0
|
6月前
|
JavaScript 前端开发 开发工具
如何运行查看github上的项目-以今日头条(移动端)为例
如何运行查看github上的项目-以今日头条(移动端)为例
56 0
|
7月前
|
Unix Shell 开发工具
Github-Git for windows&TortoiseGit下载与安装
Github-Git for windows&TortoiseGit下载与安装
179 0
|
15天前
|
Linux API 开发者
【专栏】掌握`curl`能提升开发效率和解决问题的能力
【4月更文挑战第28天】本文介绍了如何使用`curl`命令从GitHub下载文件。基础操作包括获取文件的克隆URL,打开终端输入`curl -O <file_clone_url>`,执行命令以下载文件。文章还提及了代理设置、认证和错误处理等高级应用,帮助开发者更高效地管理代码和资源。掌握`curl`能提升开发效率和解决问题的能力。
|
1月前
|
缓存 网络协议 Windows
FFmpeg开发笔记(六)如何访问Github下载FFmpeg源码
在国内访问GitHub不稳定时,可以采取三种解决方法。首先,通过网站(<https://ping.chinaz.com/github.com>)找到快速响应的GitHub IP,将其添加到本地hosts文件,然后刷新DNS缓存以正常访问。其次,使用代下载网站如(<https://d.serctl.com/>)下载GitHub上的压缩包。最后,可从国内镜像站点,如码云(<https://gitee.com/mirrors/ffmpeg>),下载FFmpeg等开源代码。这些方法有助于绕过访问限制,确保FFmpeg学习与开发的顺利进行。
FFmpeg开发笔记(六)如何访问Github下载FFmpeg源码
|
2月前
|
定位技术 Nacos 网络虚拟化
Seata常见问题之Seata github上的asset里面下载不了 zip安装包如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
|
7月前
|
程序员 CDN
github Release 下载加速,绿色合法,遥遥领先
你有没有这样一个困惑,当你寻找了很久终于找到一个解决问题的方案,发现这个工具在 GitHub 上,接下来等待我们的就是遥遥无期的龟速下载。
336 0
github Release 下载加速,绿色合法,遥遥领先
【教程】加速访问和下载github项目,原来替换一个域名就可以加速了
【教程】加速访问和下载github项目,原来替换一个域名就可以加速了