【图像分割】【深度学习】Windows10下PFNet官方代码Pytorch实现与源码讲解

【图像分割】【深度学习】Windows10下PFNet官方代码Pytorch实现与源码讲解

提示:最近开始在【图像分割】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。


文章目录

  • 【图像分割】【深度学习】Windows10下PFNet官方代码Pytorch实现与源码讲解
  • 前言
  • PFNet模型运行环境搭建
  • PFNet模型运行
    • 数据集与模型权重下载
    • PFNet训练与测试
  • 总结


前言

PFNet是由大连理工大学的Haiyang Mei等人在《Camouflaged Object Segmentation with Distraction Mining【CVPR-2021】》【论文地址】一文中提出的模型,它模仿了自然界的捕食过程,PFNet包含两个关键模块,即定位模块(PM)和聚焦模块(FM)。PM旨在模仿捕食中的检测过程,从全局角度定位潜在的目标对象,然后使用FM执行捕食中的识别过程,通过关注模糊区域来逐步细化粗略预测。
在详细解析PFNet网络之前,首要任务是搭建PFNet【Pytorch-demo地址】所需的运行环境,并完成模型训练和测试工作,展开后续工作才有意义。


PFNet模型运行环境搭建

【图像分割】【深度学习】Windows10下PFNet官方代码Pytorch实现与源码讲解_第1张图片

代码运行这里提了要求,pytorch大于等于1.0.0,torchvision大于等于0.2.1,CUDA大于等于10.0,cudnn大于等于7.2。

  • 查看主机支持的cuda版本(最高)
    # 打开cmd,执行下面的指令查看CUDA版本号
    nvidia-smi
    
    【图像分割】【深度学习】Windows10下PFNet官方代码Pytorch实现与源码讲解_第2张图片
  • 安装GPU版本的torch【官网】
    博主的cuda版本是12.2,但这里cuda版本最高也是12.1,博主选的11.8也没问题。 【图像分割】【深度学习】Windows10下PFNet官方代码Pytorch实现与源码讲解_第3张图片
    其他cuda版本的torch在【以前版本】找对应的安装命令。
  • 博主安装环境参考
    # 创建虚拟环境
    conda create -n PFNet python=3.9
    # 查看新环境是否安装成功
    conda env list
    # 激活环境
    conda activate PFNet 
    # 下载githup源代码到合适文件夹,并cd到代码文件夹内
    git clone https://github.com/Mhaiyang/CVPR2021_PFNet.git
    # 分别安装pytorch和torchvision
    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
    # 查看所有安装的包
    pip list
    conda list
    
    【图像分割】【深度学习】Windows10下PFNet官方代码Pytorch实现与源码讲解_第4张图片

PFNet模型运行

数据集与模型权重下载

名称 下载地址 说明
训练集 【谷歌云盘】【百度网盘:djq2】 CAMO和COD10K的训练集作为训练集
测试集 【谷歌云盘】【百度网盘:z83z】 CHAMELEON全部数据集、CAMO的测试集和COD10K的测试集作为测试集
resnet50-19c8e357.pth 下载地址 预训练权重,用于训练前为自己模型初始化
PFNet.pth 谷歌云盘 源码作者提供的训练好的网络权重,可以直接用于测试

下载完成后,需要按照一定的目录结构放置数据集和模型权重,查看config.py文件。

import os
# 预训练权重
backbone_path = './backbone/resnet/resnet50-19c8e357.pth'
# 数据集放置目录
datasets_root = './data'
# 训练集目录结构
cod_training_root = os.path.join(datasets_root, 'train')
# 测试集目录结构
chameleon_path = os.path.join(datasets_root, 'test/CHAMELEON')
camo_path = os.path.join(datasets_root, 'test/CAMO')
cod10k_path = os.path.join(datasets_root, 'test/COD10K')
# 没有这个数据集
# nc4k_path = os.path.join(datasets_root, 'test/NC4K')

将下载好的训练集解压并拷贝到data/train目录下,并分别将Imgs和GT重命名为Image和mask。

将下载好的测试集解压并拷贝到data/test/xxx(数据名)目录下,并分别将Imgs重命名为Image,GT并不是必选项目,只是为了方便对比。
【图像分割】【深度学习】Windows10下PFNet官方代码Pytorch实现与源码讲解_第5张图片
将下载好的预训练权重resnet50-19c8e357.pth拷贝到backbone/resnet目录下,将训练好的权重PFNet.pth拷贝到infer.py的同级目录下。
【图像分割】【深度学习】Windows10下PFNet官方代码Pytorch实现与源码讲解_第6张图片

PFNet训练与测试

  1. 训练:可以直接运行train.py,也可以根据硬件条件修改代码中部分训练参数epoch_num和train_batch_size修改训练次数和训练的batchsize,详细的代码内容将在后续博文中介绍。
    【图像分割】【深度学习】Windows10下PFNet官方代码Pytorch实现与源码讲解_第7张图片
    正在训练,训练权重保存在ckpt/PFNet目录下:
  2. 测试:可以直接运行infer.py,也可以根据任务需求修改代码中部分测试参数OrderedDict的内容,选择性测试想要的数据集,而不是测试所有数据集。
    【图像分割】【深度学习】Windows10下PFNet官方代码Pytorch实现与源码讲解_第8张图片
    测试结果保存到results/PFNet/xxx(对应数据集)下,可以对比查看效果:
    【图像分割】【深度学习】Windows10下PFNet官方代码Pytorch实现与源码讲解_第9张图片

总结

尽可能简单、详细的介绍了PFNet的安装流程以及PFNet的使用方法。后续会根据自己学到的知识结合个人理解讲解PFNet的原理和代码。

你可能感兴趣的:(深度学习,图像分割,深度学习,pytorch,人工智能)