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

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

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



前言

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

可能遇到以下问题:

解决流程:

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 数据集上对其进行评估。

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

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

Backbone训练集下载地址
ResNet-34SBDresnet34_dh128_sbd.pth(89 MB)
ResNet-50SBDresnet50_dh128_sbd.pth(120 MB)
ResNet-101SBDresnet101_dh256_sbd.pth(223 MB)
HRNetV2-W18+OCRSBDhrnet18_ocr64_sbd.pth(39 MB)
HRNetV2-W32+OCRSBDhrnet32_ocr128_sbd.pth(119 MB)
ResNet-50COCO+LVISresnet50_dh128_lvis.pth(120 MB)
HRNetV2-W32+OCRCOCO+LVIShrnet32_ocr128_lvis.pth(119 MB)

修改config.yml文件上数据集的存放位置和源代码的提供的权重存放位置。

这里博主提供的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

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大小:

以下是hrnet的预训练权重地址,并修改config.yml文件上预训练权重的存放地址。

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

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

修改config.yml文件上训练模型权重保存的位置。

5.评估f-BRS的模型

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

# --datasets:测试数据集,默认测试所有数据集 --checkpoint:模型权重
python scripts/evaluate_model.py <brs-mode> --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为例进行评估,测试所有数据集:
在这里插入图片描述

总结

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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值