【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现

【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现

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


文章目录

  • 【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现
  • 前言
  • f-BRS模型运行环境安装
    • 1.下载源码并安装环境
    • 2.下载数据集和模型权重
    • 3.运行f-BRS代码
    • 4.训练f-BRS的模型
    • 5.评估f-BRS的模型
  • 总结


前言

f-BRS是由三星莫斯科人工智能中心的Konstantin Sofiiuk等人在《f-BRS: Rethinking Backpropagating Refinement for Interactive Segmentation [CVPR 2020]》【论文地址】一文中提出的模型,是一种新颖的反向传播优化方案,该方案可在网络的中间特征上运行,并且只需要对网络的一小部分进行正向和反向传递。
在详细解析f-BRS网络之前,首要任务是搭建f-BRS【Pytorch-demo地址】所需的运行环境,并模型完成训练和测试工作,展开后续工作才有意义。


f-BRS模型运行环境安装

1.下载源码并安装环境

在Windows10环境下装anaconda环境,方便搭建专用于f-BRS模型的虚拟环境,所有依赖包都安装在这个虚拟环境下。

# 创建虚拟环境
conda create -n fbrs python=3.7
# 查看新环境是否安装成功
conda env list
# 激活mivos虚拟环境
activate fbrs 

【安装合适的pytorch和torchvision(GPU版)】 pytorch版本>1.4.0就可以。

# 安装合适的pytorch和torchvision
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117

可能遇到以下问题:
【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现_第1张图片
解决流程:

python -m ensurepip
easy_install pip
python -m pip install --upgrade pip

下载源码,在requirements.txt所在目录下执行命令,安装所需的第三方包:

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

查看所有安装的包

# 查看所有安装的包
pip list
conda list

2.下载数据集和模型权重

在 SBD 数据集上训练所有模型,然后在 GrabCut、Berkeley、DAVIS、SBD 和 COCO_MVal 数据集上对其进行评估。

数据集 描述 下载地址
SBD 8498张图像共20172个实例用于训练;2857张图像共6671个实例用于测试 百度网盘[p3rl]
Grab Cut 50 张图像,每张图像一个对象 GrabCut.zip (11 MB)
Berkeley 96 张图片,100 个实例 Berkeley.zip (7 MB)
DAVIS 345 张图片,每张图片有一个对象 DAVIS.zip (43 MB)
COCO_MVal 800 个图像和800 个实例 COCO_MVal.zip (127 MB)

源码为交互方式拆分提供具有不同主干的训练模型。

Backbone 训练集 下载地址
ResNet-34 SBD resnet34_dh128_sbd.pth(89 MB)
ResNet-50 SBD resnet50_dh128_sbd.pth(120 MB)
ResNet-101 SBD resnet101_dh256_sbd.pth(223 MB)
HRNetV2-W18+OCR SBD hrnet18_ocr64_sbd.pth(39 MB)
HRNetV2-W32+OCR SBD hrnet32_ocr128_sbd.pth(119 MB)
ResNet-50 COCO+LVIS resnet50_dh128_lvis.pth(120 MB)
HRNetV2-W32+OCR COCO+LVIS hrnet32_ocr128_lvis.pth(119 MB)

修改config.yml文件上数据集的存放位置和源代码的提供的权重存放位置。
【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现_第2张图片
【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现_第3张图片

这里博主提供的SBD数据集需要进一步解压data目录下的benchmark.tgz,然后再找到dataset文件夹,这才是训练f-BRS所需的SBD数据集。

3.运行f-BRS代码

# --gpu 序号 --limit-longest-size 图片大小(默认800) --cpu 仅用cpu
python3 demo.py --checkpoint=<模型存放地址>--gpu=0
# eg:python demo.py --checkpoint=weights/resnet34_dh128_sbd.pth --gpu=0 --limit-longest-size=400

【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现_第4张图片

4.训练f-BRS的模型

# ResNet-34 model
# --gpus=0,1 多GPU --workers=4线程数 win下是0 
python train.py models/sbd/r34_dh128.py --gpus=0 --workers=0 --exp-name=first-try

# ResNet-50 model
python train.py models/sbd/r50_dh128.py --gpus=0 --workers=0 --exp-name=first-try

# ResNet-101 model
python train.py models/sbd/r101_dh256.py --gpus=0 --workers=0 --exp-name=first-try

以r50_dh128为例进行训练,记的在trian.py里自己设置batch_size大小:

# HRNetV2-W18+OCR model
python train.py models/sbd/hrnet18_ocr64.py --gpus=0 --workers=0 --exp-name=first-try

# HRNetV2-W32+OCR model
python train.py models/sbd/hrnet32_ocr128.py --gpus=0 --workers=0 --exp-name=first-try

# HRNetV2-W48+OCR model
python train.py models/sbd/hrnet48_ocr128.py --gpus=0 --workers=0 --exp-name=first-try

以r50_dh128为例进行训练,记的在trian.py里自己设置batch_size大小:
【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现_第5张图片
以下是hrnet的预训练权重地址,并修改config.yml文件上预训练权重的存放地址。

Backbone 训练集 下载地址
HRNet-W18-C ImageNet 百度云[r5xn]
HRNet-W32-C ImageNet 百度云[itc1]
HRNet-W48-C ImageNet 百度云[68g2]

【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现_第6张图片

resnet不需要单独下载在ImageNet数据集上训练好的预训练权重,是因为可以通过联网下载

修改config.yml文件上训练模型权重保存的位置。
【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现_第7张图片
【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现_第8张图片

5.评估f-BRS的模型

博主使用源代码提供的模型权重

# --datasets:测试数据集,默认测试所有数据集 --checkpoint:模型权重
python scripts/evaluate_model.py  --checkpoint=<checkpoint-name>
# evaluates ResNet-34 model 
python scripts/evaluate_model.py f-BRS-B --checkpoint=resnet34_dh128_sbd

# ResNet-50 model 
python scripts/evaluate_model.py RGB-BRS --checkpoint=resnet50_dh128_sbd --datasets=GrabCut,Berkeley

# ResNet-50 model 
python scripts/evaluate_model.py RGB-BRS --checkpoint=resnet50_dh128_lvis --datasets=GrabCut,Berkeley

# ResNet-101 model 
python scripts/evaluate_model.py DistMap-BRS --checkpoint=resnet101_dh256_sbd --datasets=DAVIS
# HRNetV2-W32+OCR model
python scripts/evaluate_model.py f-BRS-B --checkpoint=hrnet18_ocr64_sbd

# HRNetV2-W32+OCR model
python scripts/evaluate_model.py f-BRS-B --checkpoint=hrnet32_ocr128_sbd

# HRNetV2-W32+OCR model
python scripts/evaluate_model.py f-BRS-B --checkpoint=hrnet32_ocr128_lvis

以hrnet18_ocr64_sbd为例进行评估,测试所有数据集:
【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现_第9张图片

总结

尽可能简单、详细的介绍f-BRS的安装流程以及解决了安装过程中可能存在的问题。后续会根据自己学到的知识结合个人理解讲解f-BRS的原理和代码。

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