最近mmdetection更新了2.0版本,更新了一点api。写一下自己的笔记吧
官方给出的测试demo是使用faster-rcnn模型,而我在使用别的模型时,尝试想画出mask的时候一直报错,如下:

Traceback (most recent call last):File "demo.py", line 21, in <module>show_result_pyplot(model, img, result, score_thr=0.3)File "/mmdetection/mmdet/apis/inference.py", line 146, in show_result_pyplotimg = model.show_result(img, result, score_thr=score_thr, show=False)File "/mmdetection/mmdet/models/detectors/base.py", line 211, in show_resultmask = maskUtils.decode(segms[i]).astype(np.bool)File "/root/miniconda3/envs/myconda/lib/python3.7/site-packages/pycocotools/mask.py", line 91, in decodereturn _mask.decode([rleObjs])[:,:,0]File "pycocotools/_mask.pyx", line 146, in pycocotools._mask.decodeFile "pycocotools/_mask.pyx", line 128, in pycocotools._mask._frString
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

这个问题我查到是因为数组的下标要求的是int类型,而传进去的参数是float或者别的什么类型。
看了很久的源码也没品出问题来。最近GitHub上给出了解决方案:传送门
我的调试过程如下:
1:测试用的demo代码:

from mmdet.apis import init_detector, inference_detector, show_result_pyplot
import numpy as np
import os
import mmcv
import cv2
import randomconfig_file = 'configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py'
checkpoint_file = 'checkpoints/mask_rcnn_r50_fpn_1x_coco_20200205-d4b0c5d6.pth'
#config_file = 'configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.py'
#checkpoint_file = 'checkpoints/cascade_rcnn_r50_fpn_1x_coco_20200316-3dc56deb-1.pth'
test_png = '/mnt/test/2.png'# build the model from a config file and a checkpoint file
model = init_detector(config_file, checkpoint_file, device='cuda:0')
img = test_png  # or img = mmcv.imread(img), which will only load it once
#img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
result = inference_detector(model, img)show_result_pyplot(model, img, result)
#imgs = ['test.png', 'test2.png']
#for i, result in enumerate(inference_detector(model, imgs)):
#        show_result(imgs[i], result, model.CLASSES, out_file=os.path.join('result_{}.jpg'.format(i)))

2.修改/mmdetection/mmdet/models/detectors/base.py文件
将大概213行的代码注释掉,换成mask = segms[i],大概如下所示:

#img[mask] = img[mask] * 0.5 + color_mask * 0.5
mask = segms[i]

3.修改mmdetection\mmdet\apis\inference.py文件的show_result_pyplot函数,我是这样:

def show_result_pyplot(model, img, result, score_thr=0.3, fig_size=(15, 10)):if hasattr(model, 'module'):model = model.moduleimg = model.show_result(img, result, score_thr=score_thr, show=False, out_file='result/result2.jpg')#plt.figure(figsize=fig_size)#plt.imshow(mmcv.bgr2rgb(img))#plt.show()

主要是img = model.show_result(img, result, score_thr=score_thr, show=False, out_file='result/result2.jpg')这一行增加了out_file的参数,具体写你自己保存图片的路径,然后将下面显示图片的代码注释掉,因为服务器没有GUI界面,运行会报错,但也不影响结果。

我看到别的博客说,修改完成后最好再次编译mmdetection,也就是再次运行pip install -e .,不然可能修改的地方没有生效,我试了直接保存修改后不编译也可以。按自己需要来吧。

我的测试结果:

解决mmdetection显示mask的问题相关推荐

  1. html解决空格显示问题

    html解决空格显示问题 参考文章: (1)html解决空格显示问题 (2)https://www.cnblogs.com/songtianfa/p/11642714.html 备忘一下.

  2. 微信小程序使用wxParse,解决图片显示路径问题

    微信小程序使用wxParse,解决图片显示路径问题 参考文章: (1)微信小程序使用wxParse,解决图片显示路径问题 (2)https://www.cnblogs.com/zxf100/p/100 ...

  3. 找不到显示桌面的快捷方式怎么办|显示桌面的快捷方式找不到解决方法|显示桌面代码|...

    找不到显示桌面的快捷方式怎么办|显示桌面的快捷方式找不到解决方法|显示桌面代码| 新建记事本把一下代码拷进去,保存成scf格式,然后拖到状态栏图标就可以了 [Shell] Command=2 Icon ...

  4. idea java 非法字符_解决IDEA显示非法字符 \ufeff 的问题

    一.问题 在txt文本中复制代码进入IDEA报错 Error:(1, 1) java: 非法字符: '\ufeff' Error:(1, 10) java: 需要class, interface或en ...

  5. 如何解决无法显示隐藏文件文件夹

    如何解决无法显示隐藏文件/文件夹 正常情况下只要在文件夹选项中作相应的更改就可以了,但是最近碰到一种情况,当选择"显示所有文件或文件夹",确定关闭对话框后,再次进入文件夹选项发现又 ...

  6. 微擎不升级解决头像显示问题。

    微擎不升级解决头像显示问题. 参考文章: (1)微擎不升级解决头像显示问题. (2)https://www.cnblogs.com/102442/p/8598290.html 备忘一下.

  7. 两种解决Qt5显示中文乱码的方法(使用QStringLiteral和#pragma execution_character_set(utf-8)两种方法)

    两种解决Qt5显示中文乱码的方法(使用QStringLiteral和#pragma execution_character_set("utf-8")两种方法) 升级到Qt5.X之后 ...

  8. html2canvas+jspdf 完美解决html导出且分页 解决图片显示不全问题

    html2canvas+jspdf 完美解决html导出且分页 解决图片显示不全问题 参考文章: (1)html2canvas+jspdf 完美解决html导出且分页 解决图片显示不全问题 (2)ht ...

  9. 计算机开机后黑屏鼠标显示桌面图标,电脑开机后黑屏怎么解决只显示鼠标

    品牌型号:联想GeekPro 2020 系统:win10 1909 64位企业版 部分用户可能电脑型号不一样,但系统版本一致都适合该方法. 电脑开机后黑屏怎么解决只显示鼠标?下面就与大家分享电脑开机后 ...

最新文章

  1. 注意设置httpclient连接数
  2. linux和哪些主机配了互信,linux主机互信
  3. 网站接入QQ登录最新2020 java版本
  4. Netty 简单样例分析(io传输的框架)
  5. TeamCity : 安装 Server
  6. 数字图像处理 中值滤波 MATLAB实验
  7. 金融市场中的NLP——情感分析
  8. 强推WordPress里的一款代码高亮插件——EnlighterJS
  9. 管家婆打印模板设置_B端移动设计 | 打印配置
  10. CS之攻击菜单详解-后门生成与上线
  11. excel部分网格线不见了_每天都要用到的excel技巧!建议大家收藏!
  12. 移动营业厅办业务发现的几个需改问题(转
  13. 日本与美国服务器比较
  14. 火狐的调试利器-----Firebug
  15. Linux 中 Permission denied
  16. 【论文写作】Word文档中的MathType公式大小不一导致版面很难看完美解决方法
  17. Gym - 101485G NWERC2015 G Guessing Camels
  18. iphone型号表_iPhone各地区型号对照表.doc
  19. mysql中查询名字第二位为_(12) 查询出名字倒数第二位为S的员工信息。_学小易找答案...
  20. 干净实用:装机必备绿色软件集锦

热门文章

  1. 三星数码相机误删照片怎么找回来
  2. 数据科学家访谈系列:子豹(淘宝)、授武(聚划算)
  3. 2021年山东省安全员C证考试总结及山东省安全员C证试题及解析
  4. 一些面试题,整理自网络,就不一一帖原址了
  5. Python 操作Word文档(一)--- 基本读写
  6. 数据库系统原理课后练习题(期末复习题目附答案)
  7. TVM:一种自动端到端优化的深度学习编译器
  8. 准备蓝桥杯--dyx--查找整数
  9. 喜讯 | 音视频云服务商拍乐云荣登「2021值得关注的中国教育公司」榜单
  10. 跨平台移动开发 模仿正点日历引导页弹一弹动画