mmdetection训练出现:IndexError: list index out of range 错误

mmdetection训练出现:IndexError: list index out of range 错误

文章目录:

  • 1 问题分析
    • 1.1 尝试解决错误:第一次
    • 1.2 尝试解决错误:第二次
  • 2 我的问题解决方式


我的环境:

  • Ubuntu18.04
  • TorchVision: 0.6.0
  • OpenCV: 4.2.0
  • MMCV: 0.5.5
  • MMDetection: 2.0.0+d9c8f14
  • MMDetection Compiler: GCC 7.5
  • MMDetection CUDA Compiler: 10.2

训练的模型是:Retinanet


1 问题分析

在使用mmdetection2.0框架训练目标检测模型时候,出现IndexError: list index out of range错误,具体内容如下图,首先从这个错误的类型我们可以看出是索引超过了列表的长度,导致IndexError错误
在这里插入图片描述

1.1 尝试解决错误:第一次

根据这个错误,很容易想到是否是类别写的不正确,于是去检查如下三个文件:

  • mmdetection/mmdet/datasets/voc.py:中的CLASSED变量对应的类别是否正确
  • mmdetection/mmdet/core/evaluation/class_names.py:voc_classes()函数返回的类别是否正确
  • mmdetection/configs/_base_/models/retinanet_r50_fpn.py:中num_classes对应的类别数是否正确

结果反复检查了好几遍,还是没有解决这个问题,当然如果你遇到这个问题,很可能就是因为类别写的不对,你一定要仔细、仔细、仔细检查

1.2 尝试解决错误:第二次

自己解决不了,于是就去逛github mmdetection的官网,然后乖乖查看issues,issues中好多说是类别的问题,还有一个人说是学习率太大导致的,我一脸迷惑,信以为真,就尝试了一下(参考)


ONE YEARS LATER


一顿尝试,最终还是不行,错误重现!!!

2 我的问题解决方式

我最开始编译的mmdetection环境路径为:

/home/shl/shl/mmdetection

但是我后面训练自己的另外一个数据集的时候,是直接把这个编译好的mmdetection拷贝一份出来,会出一定的问题,比如:

cp -r mmdetection mmdetection_clothes

然后在/home/shl/shl/mmdetection_clothes中修改类别,但是最终还是会去:/home/shl/shl/mmdetection/mmdet下面读取类别信息,用pip list 可以查看到mmdetection的路径

(mmdetection) shl@zfcv:~/shl/mmdetection$ pip list
Package                Version             Location
---------------------- ------------------- -------------------------
absl-py                0.9.0
addict                 2.2.1
cachetools             4.1.0
certifi                2020.4.5.1
chardet                3.0.4
click                  7.1.2
cycler                 0.10.0
Cython                 0.29.19
Flask                  1.1.2
future                 0.18.2
google-auth            1.17.2
google-auth-oauthlib   0.4.1
grpcio                 1.29.0
idna                   2.9
importlib-metadata     1.6.1
itsdangerous           1.1.0
Jinja2                 2.11.2
kiwisolver             1.2.0
Markdown               3.2.2
MarkupSafe             1.1.1
matplotlib             3.2.1
mmcv                   0.5.5
mmdet                  2.0.0+d9c8f14       /home/shl/shl/mmdetection    # 这里可以看到,mmdetection_clothes训练时还是在这里调用mmdet下的类别相关信息
numpy                  1.18.4
oauthlib               3.1.0
opencv-python          4.2.0.34
pandas                 1.0.4
Pillow                 7.1.2
pip                    20.0.2
protobuf               3.12.2
pyasn1                 0.4.8
pyasn1-modules         0.2.8
pycocotools            2.0
pyparsing              2.4.7
python-dateutil        2.8.1
pytz                   2020.1
PyYAML                 5.3.1
requests               2.23.0
requests-oauthlib      1.3.0
rsa                    4.6
scipy                  1.4.1
seaborn                0.10.1
setuptools             46.4.0.post20200518
six                    1.15.0
tensorboard            2.2.2
tensorboard-plugin-wit 1.6.0.post3
terminaltables         3.1.0
torch                  1.5.0
torchvision            0.6.0
tqdm                   4.46.1
urllib3                1.25.9
Werkzeug               1.0.1
wheel                  0.34.2
yapf                   0.30.0
zipp                   3.1.0
(mmdetection) shl@zfcv:~/shl/mmdetection$

所以最后的解决方式,在/home/shl/shl/mmdtection这个原始的路径下修改类别,然后训练,不要拷贝出来一份!我就是想训练多个数据集才这样干的,置于后面有没有什么解决方式,我再尝试!

热门文章

暂无图片
编程学习 ·

一篇文章带你搞懂 SpringBoot 的配置文件

文章目录一、SpringBoot 配置文件类型1. SpringBoot配置文件类型和作用2. application.yml配置文件3. SpringBoot配置信息的查询二、配置文件与配置类的属性映射方式1. 使用注解@Value映射2. 使用注解@ConfigurationProperties映射 一、SpringBoot 配置文件类型 1. SpringBoot配…
暂无图片
编程学习 ·

安卓安全那点事

本文旨在对于一个安卓app的安全知识做一个较为泛泛的总结,为开发出更安全的应用提供思路。内容比较粗略,仅起到抛砖引玉的效果,还望大家见谅。Android应用的安全 意义 在维基百科上有一个关于计算机安全的定义: 计算机安全(computer security)是计算机与网络领域的信息安…
暂无图片
编程学习 ·

Android 人民币符号在布局中实现的效果不一样的处理方法

大致效果图如下图1 2 这2个都是在java代码中 人民币符号+ 金额 以前没怎么在意ui走查的时候提出来的bug看了半天才发现问题 就是一个是是自己手打的的人民币符号,一个是从ui的效果图上复制过来的人民币符号最后自己的处理方法就是复制ui效果图的人民币符号,大致原因也知道就…
暂无图片
编程学习 ·

java学习基础:Math类

记录学习java路程将与风雨相伴!!! Math类(数学类) 算术计算 Math.sqrt():计算平方根 Math.cbrt():计算立方根 Math.pow(a,b):计算a的b次方 Math.max(,):计算最大值 Math.min(,):计算最小值 Math.abs():取绝对值 进位 Math.ceil():天花板的意思,就…
暂无图片
编程学习 ·

HCIP-RS-H12-221题库以及解析(部分)

不定期更新题库和解析,原题库不包含解析,解析有错误或不对的地方欢迎评论指正 1.由于属性AS-path不能在AS内起作用,所以规定BGP路由器不会宣告任何从IBGP对等体来的更新信息给其对等体 (√) 2.通过重发布命令注入BGP的路由,其orgin的属性为incomplete (√) 3.自制系统…
暂无图片
编程学习 ·

每天一刷20200701

今天7.1号也要加油哦 问题 题目描述 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。 注意每个输入文件有多组输入,即多个字符串用回车隔开 输入描述: 字符串只包含小写英文字母, 不考…
暂无图片
编程学习 ·

JS笔记(一)

1.JS基本类型:ECMAScript 中有5种简单数据类型(也称为基本数据类型):Undefined,Null,Boolean,Number和String。一种复杂数据类型:object# typeOf null 的结果为Objectvar n = null var flag = true var s = str var num = 11 var un = undefinedconsole.log(typeof(n)); …
暂无图片
编程学习 ·

Node.js 工具模块(笔记整理)

目录util模块util.inspectisArray和isRegExpinheritsos 模块path 模块Net 模块net.Server事件net.Socket属性Socket方法DNS模块util模块util.inspectutil.inspect(object,[showHidden],[depth],[colors]) 将任意对象转换为字符串的方法,通常用于调试和错误输出。至少接受…
暂无图片
编程学习 ·

Python超轻量数据库之SQLite

欢迎关注【无量测试之道】公众号,回复【领取资源】, Python编程学习资源干货、 Python+Appium框架APP的UI自动化、 Python+Selenium框架Web的UI自动化、 Python+Unittest框架API自动化、资源和代码 免费送啦~ 文章下方有公众号二维码,可直接微信扫一扫关注即可。1、什么是 SQ…
暂无图片
编程学习 ·

JavaScript-从入门到入土(五)

BOM BOM(Browser Object Model): 浏览器对象模型,是用来描述与浏览器进行交互的方法和接口 BOM下面有一个核心的对象 – window对象。 window下面的常用的事件操作: onload() 页面内容加载完成后执行这里的代码 onscroll() 浏览器的滚动条触发时触发此事件 onresize(…
暂无图片
编程学习 ·

网上书城前端界面设计

网上书城界面设计前言界面设计首页登录注册书籍搜索购物车代码实现总结 前言 接着我的上一篇博客来,今天为大家分享的内容是网上书城项目的界面设计以及代码分析 网上书城项目需求分析、功能划分、数据库表设计、工具类介绍 界面设计 首页首页的话,主要涉及到了BootStrap的相…
暂无图片
编程学习 ·

数独小游戏开发(1)---自定义界面

放假闲着没事,自己写个小游戏练练手平时看到的数独小游戏的界面都是直接一个999\times999的小方格,这里使用自定义View实现。 重写onDraw()实现自定义界面的显示@Overridepublic void onDraw(Canvas canvas) { // super.onDraw(canvas);//浅色线条Paint grayPaint = n…
暂无图片
编程学习 ·

参考nacos写的Registry注册中心

Registry注册中心 github链接:https://github.com/lzj-github/registry 麻烦大家顺便点个star,谢谢啦! 在学习了SpringCloud的各个组件的使用以及研究过相关源码后,为了更好地理解其内部实现原理,模仿了nacos的部分设计思想,自己实现了该注册中心,代码量4000+,代码中有详…
暂无图片
编程学习 ·

Java 中内部类简单概念

概念:在一个类内部定义的类 1.内部类会生成独立的.class文件。文件名Outer$Inner.class 2.内部类可以访问外部类的私有属性,从而不破坏外部类的封装性 成员内部类(类比成员变量) 1.定义位置:类以内,方法以外 2.如何创建对象 Outer o = new Outer(); //创建外部类对象 Out…
暂无图片
编程学习 ·

ThinkPHP6的前置中间件和后置中间件有哪些区别?

在上一个例子中我们学会了定义中间件,也理解了中间件的含义,再向下翻翻手册,又发现一个叫做“前置中间件”、“后置中间件”,这是什么情况?两者又有和区别呢? 一、定义的区别。 从官网手册中不难发现,前置中间件和后置中间件定义就不同,我们看下面。 前置中间件定义: …
暂无图片
编程学习 ·

深度学习~卷积神经网络(CNN)

卷积神经网络(Convolutional Neural Network,简化为ConvNet或CNN)是一种前馈神经网络,其中信息从输入到卷积运算符单向流动到输出[93]。reference:H. Cecotti and A. Graser, “Convolutional neural networks for p300 detection with application to brain-computer inte…