Mask R-CNN:UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot sho

项目场景:

调试Mask R-CNN源码时,运行测试文件demo.py出现警告问题。不出现结果图像。

问题描述:

在使用matplotlib模块时,使用show()无法显示图像,后台提示一个错误,……which is a non-GUI backend……出现。

即:D:/GoogleDownload/google/Mask_RCNN-master/samples/demo.py:128: UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.plt.show()

原因分析:

当前matplotlib使用的终端类型为Agg,Agg是一个没有图形显示界面的终端。这种终端是不带图像界面的,所以调用show函数时候,不会显示图像。

为了验证自己的猜测,可以查询当前matplotlib使用的终端类型:
进入py36的环境下,输入:

import matplotlib as m
m.get_backend()

可以看到自己当前的终端使用的类型。一般默认是Agg。



解决方案:

更改配置文件的

  1. 先把自己版本所支持的backends打印出来看一下:

    import matplotlib.rcsetup as rcsetup
    print(rcsetup.all_backends)
    

  2. 输入命令,查看设置matplotlib的终端类型的文件位置:
    matplotlib.matplotlib_fname()

    找到此文件,设置backends为TkAgg。并把backend: TkAgg前的#去掉。保存文件。
    Mask R-CNN:UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot sho_第1张图片
    此时再次查询当前的终端类型:

更改源代码

from matplotlib import pyplot as plt前面一行加上:

import matplotlib
matplotlib.use('TkAgg')

即:在demo的文件中:
Mask R-CNN:UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot sho_第2张图片
再次运行,发现依旧出现警告提示:

分析:

  1. 自己设置的终端没有生效。
  2. 自己设置的终端生效后,被再次切换成原来的Agg。
    在demo的每个import后输出当前的终端类型,看看是否猜想二成功。
    Mask R-CNN:UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot sho_第3张图片运行:Mask R-CNN:UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot sho_第4张图片
    果然如猜想2,引入coco后,更改成了agg。
    解决方式:
    在coco后引入matplotlib.pyplot包。
    Mask R-CNN:UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot sho_第5张图片成功。
    Mask R-CNN:UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot sho_第6张图片

你可能感兴趣的:(#,网络训练,Mask,R-CNN,demo,non-GUI,TkAgg)