【图像分割】【深度学习】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.系统用户管理:不管是…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

