首页 > 其他分享 >YOLOV5训练时MAP、R、P值为0,测试时无检验框

YOLOV5训练时MAP、R、P值为0,测试时无检验框

时间:2023-04-27 23:22:29浏览次数:49  
标签:MAP YOLOV5 训练 值为 问题 pytorch cuda 版本

YOLOV5训练时MAP、R、P值为0,测试时无检验框

问题引出:

​ 今天帮一个大三的学生,跑yolov5,首先我观察他电脑的配置:显卡是GTX1650,进入英伟达控制面板发现他最高支持的cuda版本的是11.7,便给他装了11.6的cuda和cudnn,但是训练的过程中,发现出现了一段警告,警告的内容为:

C:\Users\28322\AppData\Local\Programs\Python\Python37\lib\site-packages\torch\optim\lr_scheduler.py:136: UserWarning: Detected call of `lr_scheduler.step()` before `optimizer.step()`. In PyTorch 1.1.0 and later, you should call them in the opposite order: `optimizer.step()` before `lr_scheduler.step()`.  Failure to do this will result in PyTorch skipping the first value of the learning rate schedule.See more details at https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate "https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate", UserWarning)

并且训练中的每一个epoch的MAP值、P值以及R值均为0(如下所示)

解决过程:

说一下我的思路:

  1. 排除pytorch版本问题
    ​ 我将pytorch版本卸载,换了个低一点的pytorch,进行训练的时候,发现依然出现这个问题,因此我排除是pytorch版本导致。

  2. 排除python版本和pytorch版本问题
    ​ 因为在上午的时候,我给一个大二的学生配置yolov5,相同的显卡,相同的cuda但是那个大二的学生的python版本是3.8,而这个大三的学生python版本是3.7,所以我创建了一个python3.8的虚拟环境,然后安装好对应的pytorch版本后进行训练,发现该问题依然存在,所以排除。

  3. 接下来排除数据问题
    ​ 紧接着,我怀疑是不是我的数据除了问题,我找了一个小型数据集,进行测试,发现依然出现这个问题,而这个数据集在很多人的电脑都跑通了,故排除数据集问题。

  4. cuda版本问题
    ​ 我在网上找相关的结局的时候看到两篇文章(下面的参考文献),都是再说这个问题,他们一阵见血的指出是cuda问题,所以我将cuda卸载,换成了cuda10.2之后,装pytorch为1.9.1 torchvision为0.10.1之后,进行训练,终于MAP、P、R值都有值了,芜湖,起飞!!!!

我们跑10个epoch进行测试,

并对训练出来的权重进行测试,最后成功显示出结果:

解决掉这个问题,也许只为了这一刻

参考文献:

https://www.iotword.com/4713.html
https://huaweicloud.csdn.net/63806d50dacf622b8df88045.html

标签:MAP,YOLOV5,训练,值为,问题,pytorch,cuda,版本
From: https://www.cnblogs.com/ambitionx/p/17360520.html

相关文章

  • Semaphore源码分析
    1、Semaphore介绍计数信号量-Semaphore,常用来限制访问资源的线程数量。优点类似限流中的令牌桶算法,只有拿到信号量的线程才能执行,与令牌桶算法未拿到令牌不处理请求不同的是,在Semaphore中未拿到信号量的线程会阻塞等待,直到有某个线程释放了持有的信号量。2、Semaphore使用......
  • Java把实体转为map对象
    方式一importorg.springframework.cglib.beans.BeanMap;BeanMap.create(entityObj); 方式二importcom.alibaba.fastjson.JSONObject;//方式1、强转为JSONObjectJSONObjectxxx=(JSONObject)JSONObject.toJSON(xxxEntity);//方式2、转成json,在转为mapStringjs......
  • JDBC使用List和Map键值封装多表查询结果 java JDBC insert查询返回List对象
    JDBC使用List和Map键值封装多表查询结果https://www.cnblogs.com/zengyu1234/p/15451812.html查询结果的处理Java.sql.ResultSet接口是jdbcAPI中唯一用来封装查询结果记录行的组件。ResultSet接口唯一创建方式是通过执行SQL查询返回创建此对象 遍历结果集中数据truenext......
  • List与HashMap区别,key,value,感谢火龙果,dgqbcht,awusoft帮助
    首先要感谢不想要妮称,dgqbcht,awusoft友情帮助Map是一个映射,是key-value值对.Map在java1.0以后进行了修改,使其能够与普通的集合相融.在Map的内部定义了内部接口Entry,主要就是要讲key和value以集合(Set)的形式来体现.List是集合的一个分支,是一个接口.List中的元素有顺序(输......
  • 1 数组和切片、2 可变长参数 、3 maps
    目录1数组和切片1.1数组1.2切片2可变长参数3maps1数组和切片1.1数组#1定义,初始化,使用#2数组是值类型 -数字,字符串,布尔,数组,都是值类型,真正直接存数据-切片,map,指针引用类型,是个地址,指向了具体的值#3数组长度#4循环打印数组#5多纬数组#6数组......
  • map注入 ,使用 @ConfigurationProperties , 修改apollo配置后不会动态修改的问题
    问题:apollo动态刷新,应用在@value这种注入方式的属性没有问题,但是如果使用@ConfigurationProperties注解的bean,动态刷新就不好使了,会注入不到的。Apollo动态刷新官网介绍需要注意的是,@ConfigurationProperties如果需要在Apollo配置变化时自动更新注入的值,需要配合使用Environm......
  • Spring RestTemplate为何必须搭配MultiValueMap?
    微服务之间的大多都是使用HTTP通信,这自然少不了使用HttpClient。在不适用Spring前,一般使用ApacheHttpClient和OkHttpClient等,而一旦引入Spring,就有了更好选择-RestTemplate。 想接受一个Form表单请求,读取表单定义的两个参数para1和para2,然后作为响应返回......
  • Java8使用Stream API转换Map遇到的2种异常报错和解决思路
    问题java8提供了StreamAPI,配合Lambda表达式,让开发者能对集合对象进行便利、高效的操作。在日常业务开发中,有个经常用到的场景是将List类型对象转换为Map类型对象,方便后续操作。在java8之前,这种转换需要先new一个Map对象,遍历list然后通过Map#put来初始化。使用java8后,可方便的......
  • java线程之Semaphore
    Semaphore是信号量,用于线程间同步。例子,公交车上大概有24个座位,但是车上总共有40个人,那么,只要有一个人下车,另一个人就能得到一个座位,假设到终点站之前,每个人都能坐下。代码如下:packagecom.concurrent;importjava.util.Random;importjava.util.concurrent.CountDownLatch;imp......
  • 如何实现vue项目中使用Baidu Map,有多个点,鼠标移入出现文字标注,移除消失文字标注,并且点
    直接来案例,再分析;<template> <divref="map"style="height:100vh;"></div></template><script>exportdefault{ data(){  return{   points:[    {lng:116.404,lat:39.915,name:'北京天安门......