【图像分割】【深度学习】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模型运行环境安装
代码运行这里提了要求,pytorch大于等于1.0.0,torchvision大于等于0.2.1,CUDA大于等于10.0,cudnn大于等于7.2。
- 查看主机支持的cuda版本(最高)
# 打开cmd,执行下面的指令查看CUDA版本号 nvidia-smi
- 安装GPU版本的torch【官网】
博主的cuda版本是12.2,但这里cuda版本最高也是12.1,博主选的11.8也没问题。
其他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
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并不是必选项目,只是为了方便对比。
将下载好的预训练权重resnet50-19c8e357.pth拷贝到backbone/resnet目录下,将训练好的权重PFNet.pth拷贝到infer.py的同级目录下。
PFNet训练与测试
- 训练:可以直接运行train.py,也可以根据硬件条件修改代码中部分训练参数epoch_num和train_batch_size修改训练次数和训练的batchsize,详细的代码内容将在后续博文中介绍。
正在训练,训练权重保存在ckpt/PFNet目录下:
- 测试:可以直接运行infer.py,也可以根据任务需求修改代码中部分测试参数OrderedDict的内容,选择性测试想要的数据集,而不是测试所有数据集。
测试结果保存到results/PFNet/xxx(对应数据集)下,可以对比查看效果:
总结
尽可能简单、详细的介绍了PFNet的安装流程以及PFNet的使用方法。后续会根据自己学到的知识结合个人理解讲解PFNet的原理和代码。