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

YOLOv5-6.1识别中的BUG_第1张图片

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

3、感悟

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

你可能感兴趣的:(目标检测,Python_BUG,目标检测,计算机视觉,bug)