我面临的问题是,matplotlib图显示来自之前运行的python脚本。我的意思是,脚本不再运行,但我仍然有图显示“随机”。可能每次我运行不同的python脚本时都会保存matplotlib图,但不完全确定。
详细信息:
- 这些脚本是从vscode集成终端执行的。
- 我可以看到我的gpu上的进程或使用
top
命令时,图显示,但我一关闭图窗口的进程消失,并将重新出现后。
代码片段:
from pytorch_grad_cam import GradCAM
from pytorch_grad_cam.utils.model_targets import ClassifierOutputTarget
from pytorch_grad_cam.utils.image import show_cam_on_image
from torchvision.models import resnet50
import torch
import matplotlib.pyplot as plt
model = resnet50(pretrained=True)
target_layers = [model.layer4[-1]]
# load an image an put it in a pytorch tensor
input_tensor = torch.rand(1, 3, 224, 224)
# Create an input tensor image for your model..
# Note: input_tensor can be a batch tensor with several images!
# Construct the CAM object once, and then re-use it on many images:
cam = GradCAM(model=model, target_layers=target_layers, use_cuda=True)
targets = [ClassifierOutputTarget(281)]
# You can also pass aug_smooth=True and eigen_smooth=True, to apply smoothing.
grayscale_cam = cam(input_tensor=input_tensor, targets=targets)
# In this example grayscale_cam has only one image in the batch:
grayscale_cam = grayscale_cam[0, :]
rgb_img = input_tensor[0, :].permute(1, 2, 0).cpu().numpy()
visualisation = show_cam_on_image(rgb_img, grayscale_cam, use_rgb=True)
plt.figure()
plt.imshow(visualisation)
plt.show()
plt.close('all')
操作系统:Ubuntu 20.043.9.16
到目前为止我已经尝试过:
- 当它出现时就终止进程
- 重启pc
- 在我的虚拟环境中卸载并重新安装matplotlib
- 查看使用
pstree
的父进程并杀死它。 - 重新运行脚本并添加
plt.clf()
。
它可能与在有问题的脚本中尝试使用plt.ion()
有关。或者与在here的pytorch_grad_cam包的后台使用的opencv库有关。
- 更新:**-似乎触发数字的是在我的vscode编辑器中保存文件... *
- 在pstree提示符中,链接到matplotlib图的Python进程有一个code(即vscode)父进程
1条答案
按热度按时间ddarikpa1#
我的脚本被触发是因为文件名以test_* 开头,加载的python环境包含pytest包。我不知道当启用vs code python扩展时,pytest是通过保存修改后的文件触发的。