YOLOv5-6.1识别中的BUG

1、引言

        时间飞快,技术猛进,YOLOv5从2020年诞生之后,到2022年已经发展到了6.1的版本。YOLOv6和YOLOv7都已经开源,不知道小伙伴们是否有尝试?

2、问题描述及解决方法

        我最近在使用YOLOv5-6.1版本时,遇到了两个BUG,BUG报告的位置都是位于虚拟环境中的依赖包里。以下是相关描述及问题结局方法。

AQ、在使用pip安装依赖包或使用detect.py时,出现了以下报错:

UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x98 in position 1027: illegal multibyte sequence

AA、解决方法:

        经过反复的debug,发现问题出现在configparser.py的第696行,没有定义encoding,所以,在696行处的open函数中加入参数“encoding=‘UTF-8’”即可。加完之后,第696行处的代码是:

with open(filename, encoding='UTF-8') as fp:

BQ、 运行detect.py时,出现错误:

Upsample‘ object has no attribute ‘recompute_scale_factor‘

BA、解决方法:

        按照报错提示,从末端向前寻找bug,问题出现在usampling.py的第152-153行。修改后的代码为:

def forward(self, input: Tensor) -> Tensor:
        return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners)

CQ、运行detect.py时没有报错,正常产生图片,但是图片中并未有目标检测框。 

CA、解决办法 

        我在帮粉丝进行YOLOv5环境搭建时遇到了这个问题,当时的GPU为N卡1660TI,这个显卡性能还行,但是初次接触时未能找到一个合适的CUDA和Pytorch搭配的版本。最后得出了CUDA使用10.2版本最为稳妥(解决方法一:更换CUDA和Pytorch的版本)。 这位粉丝当时的操作系统是WIndows 11,所以可能和系统也有一定的关系(解决方法二:没什么要求的话还是继续使用Wiodows 10 系统)当时正逢YOLOv5版本更新迭代,所以可能和YOLOv5版本也有一定的关系。(解决方法三:更换YOLOv5源码版本,或者修改部分代码)接下来,我将叙述如何修改detect.py的代码:首先用编辑器打开YOLOv5项目中的detect.py文件,如果版本是YOLOv5-master,请定位到96行,如下图所示:

cudnn.benchmark = True

如此一来,之前的旧问题就得已解决,但是整个推理的时间会变长,所以建议各位在方法一和方法二中进行尝试。

3、感悟

        开源代码能用即可,重在自我的学习和提升,没有必要频繁的git,一旦发现当前git下来的代码能跑,请及时备份!还有安装在base环境下的CUDA或者是Pytorch也没有必要频繁更新,最近看到好多朋友盲目更新YOLOv5版本、CUDA版本、Pytorch版本而踩坑。最后,欢迎大家在评论区友好发言、讨论。 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liO_Oil

打赏我,开启隐藏模式。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值