Task2:利用 Basnet 将Task1中的所有图片转化为显著性图片

Task2:利用 Basnet 将Task1中的所有图片转化为显著性图片

1. 什么是显著性检测?

显著性检测的目的是识别图像中最吸引人注意的区域(显著性区域)。对于你的任务,就是将普通图片转换为突出主要对象的显著性图。

输入:普通图片 → 输出:显著性热力图(黑白或彩色)

2. BASNet 简介

BASNet (Boundary-Aware Salient Object Detection) 是一个先进的显著性检测模型:

  • 优点:边缘保持好,细节丰富
  • 适用性:适用于各种类型的图像
  • 预训练模型:已有在大型数据集上训练好的模型

3.具体操作

代码链接:https://github.com/NathanUA/BASNet.

联想截图_20250911184442

这里我把BASNet文件下载下来放在D盘,然后我在Anaconda Prompt中创建虚拟环境,先用/d D:\MyJupyter\TASK\BASNet转到BASNet目录下,采用conda activate basnet命令创建besnet虚拟环境,然后打开jupyter notebook

联想截图_20250912120522

联想截图_20250912101509

我的网络无法正常访问 PyPI 官方服务器(pypi.org),SSL 证书验证失败。

在虚拟环境中使用国内镜像源来安装:

pip install numpy scikit-image torch torchvision pillow -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

联想截图_20250912102354

这个错误是输出目录不存在导致的。程序试图保存结果图片,但是指定的目录路径不存在。经过检查是save_output函数有问题

联想截图_20250912103247

def save_output(image_name, pred, d_dir):
    predict = pred
    predict = predict.squeeze()
    predict_np = predict.cpu().data.numpy()

    im = Image.fromarray(predict_np*255).convert('RGB')
    
    # 读取原始图像获取尺寸
    original_image = io.imread(image_name)
    
    # 调整到原始图像尺寸
    imo = im.resize((original_image.shape[1], original_image.shape[0]), resample=Image.BILINEAR)
    
    # 创建输出目录(如果不存在)
    os.makedirs(d_dir, exist_ok=True)
    
    # 提取纯文件名(不带路径)
    img_basename = os.path.basename(image_name)
    output_filename = os.path.splitext(img_basename)[0] + '.png'
    
    # 保存文件
    output_path = os.path.join(d_dir, output_filename)
    imo.save(output_path)
    print(f"Saved: {output_path}")

将原本的代码改成如上。

接下来直接在jupyter中运行BASNet_test.ipynb(在BASNet/demo/中 ),直接运行第五个单元格。

可以在test_images中添加自己的图片,进行测试。

联想截图_20250912142624

posted @ 2025-09-12 14:48  LWX浪味仙  阅读(18)  评论(0)    收藏  举报