解决mmdetection显示mask的问题
最近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的问题相关推荐
- html解决空格显示问题
html解决空格显示问题 参考文章: (1)html解决空格显示问题 (2)https://www.cnblogs.com/songtianfa/p/11642714.html 备忘一下.
- 微信小程序使用wxParse,解决图片显示路径问题
微信小程序使用wxParse,解决图片显示路径问题 参考文章: (1)微信小程序使用wxParse,解决图片显示路径问题 (2)https://www.cnblogs.com/zxf100/p/100 ...
- 找不到显示桌面的快捷方式怎么办|显示桌面的快捷方式找不到解决方法|显示桌面代码|...
找不到显示桌面的快捷方式怎么办|显示桌面的快捷方式找不到解决方法|显示桌面代码| 新建记事本把一下代码拷进去,保存成scf格式,然后拖到状态栏图标就可以了 [Shell] Command=2 Icon ...
- idea java 非法字符_解决IDEA显示非法字符 \ufeff 的问题
一.问题 在txt文本中复制代码进入IDEA报错 Error:(1, 1) java: 非法字符: '\ufeff' Error:(1, 10) java: 需要class, interface或en ...
- 如何解决无法显示隐藏文件文件夹
如何解决无法显示隐藏文件/文件夹 正常情况下只要在文件夹选项中作相应的更改就可以了,但是最近碰到一种情况,当选择"显示所有文件或文件夹",确定关闭对话框后,再次进入文件夹选项发现又 ...
- 微擎不升级解决头像显示问题。
微擎不升级解决头像显示问题. 参考文章: (1)微擎不升级解决头像显示问题. (2)https://www.cnblogs.com/102442/p/8598290.html 备忘一下.
- 两种解决Qt5显示中文乱码的方法(使用QStringLiteral和#pragma execution_character_set(utf-8)两种方法)
两种解决Qt5显示中文乱码的方法(使用QStringLiteral和#pragma execution_character_set("utf-8")两种方法) 升级到Qt5.X之后 ...
- html2canvas+jspdf 完美解决html导出且分页 解决图片显示不全问题
html2canvas+jspdf 完美解决html导出且分页 解决图片显示不全问题 参考文章: (1)html2canvas+jspdf 完美解决html导出且分页 解决图片显示不全问题 (2)ht ...
- 计算机开机后黑屏鼠标显示桌面图标,电脑开机后黑屏怎么解决只显示鼠标
品牌型号:联想GeekPro 2020 系统:win10 1909 64位企业版 部分用户可能电脑型号不一样,但系统版本一致都适合该方法. 电脑开机后黑屏怎么解决只显示鼠标?下面就与大家分享电脑开机后 ...
最新文章
- 注意设置httpclient连接数
- linux和哪些主机配了互信,linux主机互信
- 网站接入QQ登录最新2020 java版本
- Netty 简单样例分析(io传输的框架)
- TeamCity : 安装 Server
- 数字图像处理 中值滤波 MATLAB实验
- 金融市场中的NLP——情感分析
- 强推WordPress里的一款代码高亮插件——EnlighterJS
- 管家婆打印模板设置_B端移动设计 | 打印配置
- CS之攻击菜单详解-后门生成与上线
- excel部分网格线不见了_每天都要用到的excel技巧!建议大家收藏!
- 移动营业厅办业务发现的几个需改问题(转
- 日本与美国服务器比较
- 火狐的调试利器-----Firebug
- Linux 中 Permission denied
- 【论文写作】Word文档中的MathType公式大小不一导致版面很难看完美解决方法
- Gym - 101485G NWERC2015 G Guessing Camels
- iphone型号表_iPhone各地区型号对照表.doc
- mysql中查询名字第二位为_(12) 查询出名字倒数第二位为S的员工信息。_学小易找答案...
- 干净实用:装机必备绿色软件集锦