1、报错module 'torch' has no attribute 'count_nonzero'

我的Pytorch版本是1.6.0,可以在pytorch网页上搜一下,count_nonzero这个方法最低版本要求1.7.0

https://pytorch.org/docs/1.6.0/search.html?q=count_nonzero&check_keywords=yes&area=default

可用以下代码测试一下已安装torch是否支持这个方法

import torch
print(torch.__version__)x = torch.zeros(3,3)
x[torch.randn(3,3) > 0.5] = 1print(x)a=torch.count_nonzero(x)
print(a)

如果确认是pytorch版本太高的原因,又不想重装pytorch可以改成:

a=torch.tensor(torch.nonzero(x).shape[0])

2、同个任务不同loss的比较

同个任务换了模型后不能简单比较哪个方法的loss小,因为不同方法的loss定义可能是不同的。比如在分割场景中,有的loss有检测损失box_loss,有的没有,就不能粗暴对比了。可以具体关注其中的segm_mAP或loss_mask

3、改配置继续训练某个模型

如果改了配置文件coco_inatance.py而模型没变,注意把模型保存路径下的配置文件如cascade_mask_rcnn_r50_fpn_1x_coco.py删掉,之前训练的时候改了几次参数,最后的修改没完全更新上,效果烂烂的。如下的dump config是引起这个问题的关键。

# dump config
cfg.dump(osp.join(cfg.work_dir, osp.basename(args.config)))

4、同个模型不同backbone

同个模型根据backbone的不同,有多个模型,可查看对应配置文件夹下的README.md,了解其准确率mAP。有意思的是,某些模型的AP范围,最差的backbone可能AP很低,但最好的又很高。所以在用多个模型选型时,不能简单地用每个模型的的R-50版本进行比较。

README.md同样启发我们要用“mask mAP”、“box mAP”这种指标进行对比,而不是看loss。虽然在同个框架下,但loss不同。

5、OOM显存不足

在不同模型间切换时,注意修改某些重要参数,尤其某些配置文件也是层层嵌套的。如训练swin版的mask2former也要改调用的r50版配置文件,并且不同模型的类数量等参数可能命名方式不同,看一下配置文件就知道了。

vim configs/mask2former/mask2former_r50_lsj_8x2_50e_coco.py

修改:

num_things_classes = 80

samples_per_gpu=2,

workers_per_gpu=2,

改后:

num_things_classes = 1

samples_per_gpu=1,

workers_per_gpu=0,

6、评价指标

训练时打印如下输出

2023-01-11 02:32:33,580 - mmdet - INFO - Epoch(val) [83][151] bbox_mAP: 0.8710, bbox_mAP_50: 0.9640, bbox_mAP_75: 0.9090, bbox_mAP_s: -1.0000, bbox_mAP_m: -1.0000, bbox_mAP_l: 0.8710, bbox_mAP_copypaste: 0.871 0.964 0.909 -1.000 -1.000 0.871, segm_mAP: 0.8740, segm_mAP_50: 0.9550, segm_mAP_75: 0.9090, segm_mAP_s: -1.0000, segm_mAP_m: -1.0000, segm_mAP_l: 0.8740, segm_mAP_copypaste: 0.874 0.955 0.909 -1.000 -1.000 0.874

Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.874

Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=1000 ] = 0.955

Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=1000 ] = 0.909

Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=1000 ] = -1.000

Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=1000 ] = -1.000

Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=1000 ] = 0.874

Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.896

Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=300 ] = 0.896

Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=1000 ] = 0.896

Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=1000 ] = -1.000

Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=1000 ] = -1.000

Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=1000 ] = 0.896

其中涉及

bbox_mAP、bbox_mAP_50、bbox_mAP_75、bbox_mAP_s、bbox_mAP_m、bbox_mAP_l

"bbox_mAP_copypaste": "0.845 0.933 0.857 -1.000 -1.000 0.845",

segm_mAP、segm_mAP_50、segm_mAP_75、segm_mAP_s、segm_mAP_m、segm_mAP_l

segm_mAP_copypaste": "0.847 0.928 0.857 -1.000 -1.000 0.848"

以上含义官方介绍:

https://blog.csdn.net/qq_17457331/article/details/84590662

https://blog.csdn.net/qq_27095227/article/details/105450470

这些是coco数据集的评价指标,

_50、_75 指IOU;

_s、_m、_l指面积大小area<32^2、 32^2< area<96^2、area >96^2,

0.50:0.95 指0.50:0.05:0.95的十个阈值,AP是用十个阈值下的P求平均获取的

7、“KeyError: 'TABLEMASTER is not in the models registry'” 提示没注册

TABLEMASTER 用到了mmdet、mmocr、mmcv,在TABLEMASTER开源代码里显式有mmdet和mmocr

搞了半天是因为我注释掉了下面2行,不该注释掉。项目中有些看起来没有用用到的import 包,不要注释掉,会影响mmcv的注册机制。搞不通的时候反思下,自己都干过啥

from mmocr.datasets import build_dataset # noqa: F401

from mmocr.models import build_detector # noqa: F401

8、KeyError: 'DiceLoss is already registered in models'

分析:我的mmdet版本高于项目要求,因此比开源的内容多一些,重复安装后,有些东西就重合了。改一下源码,加一行continue跳过即可,不重复注册。

vim /usr/local/lib/python3.7/dist-packages/mmcv/utils/registry.py

9、mmocr的衍生TABLEMASTER,训练时需要生成lmdb文件

lmdb(Lightning Memory-Mapped Database)闪电般的内存映射数据库,减少读取大量小文件的IO开销

data.mdb 数据文件

lock.mdb锁文件

MMDet踩坑与使用体会相关推荐

  1. MMDetectionV2 + Colab 超详细教程及踩坑实录

    文章目录 前言 一.环境配置 二.准备自己的数据集 Aug.14更新 三:修改config文件 3.1 文件结构 3.2 (本地)修改config文件 3.2.1 (本地)构造自己模型的权重文件 3. ...

  2. 【golang程序包推荐分享】分享亿点点golang json操作及myJsonMarshal程序包开发的踩坑经历 :)

    目录[阅读时间:约5分钟] 一.概述 1.Json的作用 2.Go官方 encoding/json 包 3. golang json的主要操作 二.Json Marshal:将数据编码成json字符串 ...

  3. java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

    好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...

  4. python导入类有红线_python踩坑系列之导入包时下划红线及报错“No module named”问题...

    python踩坑系列之导入包时下划红线及报错"No module named"问题 使用pycharm编写Python时,自己写了一个包(commontool),在同级另一个路径下 ...

  5. mysql运维工资_MySQL运维踩坑

    image ZERO 背景 本文主要是介绍在MySQL使用运维过程中所遇到的一些坑爹的地方,予自己以做记录! 前言 因操作系统重装之后,安装了mysql5.7,而由此带来了一系列的问题,现将解决这些m ...

  6. 微信跳一跳高分辅助踩坑

    旧博文,搬到 csdn 原文:http://rebootcat.com/2018/01/08/wechat_jump_hack/ 最近挺火的微信跳一跳 最近新版微信的『跳一跳』小程序着实火了一把,也把 ...

  7. 【踩坑记录】记一次MySQL主从复制延迟的坑

    最近开发中遇到的一个MySQL主从延迟的坑,记录并总结,避免再次犯同样的错误. 情景 一个活动信息需要审批,审批之后才能生效.因为之后活动要编辑,编辑后也可能触发审批,审批中展示的是编辑前的活动内容, ...

  8. 分布式深度学习最佳入门(踩坑)指南

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨Lyon@知乎(已授权) 来源丨https://zhuanla ...

  9. python array赋值_从踩坑学Python内部原理(5):执行时机的差异

    (给Python开发者加星标,提升Python技能) 英文:Satwik Kansal,翻译:暮晨 Python开发者整理自 GitHub [导读]:Python 是一个设计优美的解释型高级语言,它提 ...

最新文章

  1. 深度有趣 | 27 服饰关键点定位
  2. 【资源】Faster R-CNN原理及代码讲解电子书
  3. linux能远程打开桌面版,如何从Linux上远程显示Windows桌面
  4. OSINT系列:威胁信息挖掘ThreatMiner
  5. linux下C code block环境,linux 使用 codeblocks
  6. 重庆二师计算机科学与技术,应用型本科院校计算机科学与技术专业一流课程建设思考──以重庆第二师范学院为例...
  7. 用python制作一款录屏小工具
  8. 《深入理解Java虚拟机》第5章 调优案例分析与实战
  9. Navi.Soft31.任务管理器(定时同步+数据采集)
  10. CEF浏览器 模拟鼠标点击
  11. 2022“杭电杯”中国大学生算法设计超级联赛(5)杭电多校第五场
  12. pointer在html作用,html-CSS中的“ cursor:pointer”效果为什么不起作用
  13. 只有VOB 文件,怎样使用IfoEdit生成烧制DVD所需的IFO、BUP文件!
  14. 摄影的工作原理:相机,镜头等
  15. 苹果电脑MACbook Air快捷键大全
  16. 电脑新加内存条后 游戏崩溃 浏览器卡死 电脑蓝屏
  17. elemet-ui后台表格自动排序解决办法
  18. OA办公系统,打造企业办公智能化管理
  19. 使用jar命令替换jar包中的jar文件
  20. 人体骨骼关键点检测的算法

热门文章

  1. Attempt to invoke virtual method ‘void cn.jiguang.share.android.api.AbsPlatform.notifyError
  2. python青蛙跳台阶_Python算法题(一)——青蛙跳台阶
  3. warning:In file included from...
  4. Html5原生video标签禁止全屏播放的实现
  5. 喹啉羧酸类 DHODH 抑制剂用于治疗急性髓系白血病
  6. LeetCode 1052 爱生气的书店老板 HERODING的LeetCode之路
  7. 三级网络技术备考重点之中小型网络系统总体规划与设计
  8. 【Java】银行账户管理系统
  9. 远程语音 开源_通过开源语音聊天简化远程会议
  10. ps之一寸照片的制作详解(1)