import torch
import torchvision.transforms as transforms
from torchvision import models
from PIL import Image
import matplotlib.pyplot as plt
import os
import numpy as np
# 定义图像转换
transform = transforms.Compose([
transforms.Resize((256, 256)), # 调整大小
transforms.ToTensor(), # 转换为张量
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) # 标准化
])
# 加载并转换图像
path_img = os.path.join(os.path.dirname(os.path.abspath(__file__)), "imgs", "lena.png")
image = Image.open(path_img).convert("RGB")
input_tensor = transform(image).unsqueeze(0) # 添加批次维度
# 加载预训练的DeepLabV3模型
model = models.segmentation.deeplabv3_resnet101(pretrained=True)
model.eval()
# 进行图像分割
with torch.no_grad():
output = model(input_tensor)['out'][0]
output_predictions = output.argmax(0)
# 将预测结果转换为彩色图像
def decode_segmap(image, nc=21):
label_colors = np.array(