【图像分割】【深度学习】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
可能遇到以下问题:

解决流程:
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文件上数据集的存放位置和源代码的提供的权重存放位置。


这里博主提供的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-C | ImageNet | 百度云[r5xn] |
| HRNet-W32-C | ImageNet | 百度云[itc1] |
| HRNet-W48-C | ImageNet | 百度云[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的原理和代码。
相关文章:
【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现
【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现 提示:最近开始在【图像分割】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现前言f-BRS模型运行环境安装1.下载源码并…...
2023/5/4总结
刷题: 第二周任务 - Virtual Judge (vjudge.net) 这一题用到了素筛,然后穷举即可 #include<stdio.h> #define Maxsize 500000 int a[Maxsize]; long long b[Maxsize]; long long max0; int sushu() {a[0]a[1]0;int i,j,k;for(i2,k0;i<Maxsize;i){if(a[i…...
electron+vue3全家桶+vite项目搭建【17】pinia状态持久化
文章目录 引入问题演示实现效果展示、实现步骤1.封装状态初始化函数2.封装状态更新同步函数3.完整代码 引入 上一篇文章我们已经实现了electron多窗口中,pinia的状态同步,但你会发现,如果我们在一个窗口里面修改了状态,然后再打开…...
java基础入门-05-【面向对象进阶(static继承)】
Java基础入门-05-【面向对象进阶(static&继承)】 13、面向对象进阶(static&继承)1.1 如何定义类1.2 如何通过类创建对象1.3 封装1.3.1 封装的步骤1.3.2 封装的步骤实现 1.4 构造方法1.4.1 构造方法的作用1.4.2 构造方法的…...
day12 IP协议与ethernet协议
目录 IP包头 IP网的意义 IP数据报的格式 IP数据报分片 以太网包头(链路层协议) IP包头 IP网的意义 当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互联的各具体的网络异构细节; 如果在这种覆盖…...
蓝牙耳机哪款性价比高?2023蓝牙耳机性价比排行
随着蓝牙耳机的使用愈发频繁,蓝牙耳机产品也越来越多,蓝牙耳机的功能、价格、外观设计等都不尽相同。接下来,我来给大家推荐几款性价比高的蓝牙耳机,感兴趣的朋友一起来看看吧。 一、南卡小音舱Lite2蓝牙耳机 参考价:…...
关于C语言的一些笔记
文章目录 May4,2023常量问题基本数据类型补码printf的字符格式控制关于异或、异或的理解赋值运算i和i的区别关系运算符 May5,2023逻辑运算中‘非’的理解逗号运算运算符的优先级问题三目运算 摘自加工于C技能树 May4,2023 常量问题 //定义常量 const float PI; PI…...
【Python入门知识】NumPy数组迭代及连接
前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 数组迭代 迭代意味着逐一遍历元素,当我们在 numpy 中处理多维数组时, 可以使用 python 的基本 for 循环来完成此操作。 如果我们对 1-D 数组进行迭代,它将逐一遍历每个元素。 实例 迭…...
我们公司的面试,有点不一样!
我们公司的面试,有点不一样! 朋友们周末愉快,我是鱼皮。因为我很屑,所以大家也可以叫我屑老板。 自从我发了自己创业的文章和视频后,收到了很多小伙伴们的祝福,真心非常感谢! 不得不说&#…...
C++之初识STL—vector
文章目录 STL基本概念使用STL的好处容器vector1.vector容器简介2.vector对象的默认构造函数3.vector对象的带参构造函数4.vector的赋值5.vector的大小6.vector容器的访问方式7.vector的插入 STL基本概念 STL(Standard Template Library,标准模板库)STL 从广义上分为: 容器(con…...
资讯汇总230503
230503 12:21 【放松身心亲近自然 自驾露营成旅游新风尚】今年“五一”假期,我国旅游业的快速恢复催生自驾露营休闲游、短途游、夜游等新型旅游产品提质升级。快速发展的新兴旅游业态,在促进旅游消费、培育绿色健康生活方式等方面发挥了积极作用…...
C++之编程规范
目录 谷歌C风格指南:https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/ 编码规则: • 开闭原则:软件对扩展是开放的,对修改是关闭的 • 防御式编程:简单的说就是程序不能崩溃 •…...
ChatGPT做PPT方案,10组提示词方案!
今天我们要搞定的PPT内容是: 活动类型:节日活动、会员活动、新品活动分析类型:用户分析、新品立项、项目汇报内容类型:内容规划、品牌策划 用到的工具: mindshow 邀请码 6509097ChatGPT传送门(免费使用…...
分布式夺命12连问
分布式理论 1. 说说CAP原则? CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)这3个基本…...
sourceTree离线环境部署
目录 1、下载sourceTree安装包,打开之后弹出注册界面(需要去国外网站注册)2、使用技术手段跳过注册步骤3、打开安装包进行安装 注:建议提前安装好git 1、下载sourceTree安装包,打开之后弹出注册界面(需要去…...
6.1.1 图:基本概念
一,基本概念 1.基本定义 (1)图的定义 顶点集不可以是空集,但边集可以是空集。 (2) 有向图的表示: 圆括号 无向图的表示: 尖括号 简单图、多重图: 简单图:…...
SlickEdit for Windows and Linux crack
SlickEdit for Windows and Linux crack 现在可以在“新建注释”对话框中对颜色进行排序,使调色板中的颜色阵列看起来更符合逻辑。 在拆分或扩展行注释时添加了撤消步骤,这样您只需点击“撤消”一次即可撤消行注释扩展。 已更新VHDL颜色编码,…...
ChatGPT实现stackoverflow 解释
stackoverflow 解释 ChatGPT 公开服务以来,程序员们无疑是最早深入体验和"测试"的一批人。出色的效果也引发了一系列知识产权上的争议。著名的 stackoverflow 网站,就宣布禁止用户使用 ChatGPT 生成的内容来回答问题,一经发现&…...
第五章 作业(123)【编译原理】
第五章 作业【编译原理】 前言推荐第五章 作业123 随堂练习课前热身04-17随堂练习04-17课前热身04-24 最后 前言 2023-5-3 22:12:46 以下内容源自《【编译原理】》 仅供学习交流使用 推荐 第四章 作业(123)【编译原理】 第五章 作业 1 1.令文法G为…...
基于Vue的个性化网络学习笔记系统
1.系统登录:系统登录是用户访问系统的路口,设计了系统登录界面,包括用户名、密码和验证码,然后对登录进来的用户判断身份信息,判断是管理员用户还是普通用户。 2.系统用户管理:不管是…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...
前端调试HTTP状态码
1xx(信息类状态码) 这类状态码表示临时响应,需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分,客户端应继续发送剩余部分。 2xx(成功类状态码) 表示请求已成功被服务器接收、理解并处…...
算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...
【汇编逆向系列】六、函数调用包含多个参数之多个整型-参数压栈顺序,rcx,rdx,r8,r9寄存器
从本章节开始,进入到函数有多个参数的情况,前面几个章节中介绍了整型和浮点型使用了不同的寄存器在进行函数传参,ECX是整型的第一个参数的寄存器,那么多个参数的情况下函数如何传参,下面展开介绍参数为整型时候的几种情…...

