当前位置: 首页 > news >正文

【图像分割】【深度学习】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 数据集上对其进行评估。

数据集描述下载地址
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的原理和代码。

相关文章:

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

【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现 提示:最近开始在【图像分割】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现前言f-BRS模型运行环境安装1.下载源码并…...

2023/5/4总结

刷题&#xff1a; 第二周任务 - 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多窗口中&#xff0c;pinia的状态同步&#xff0c;但你会发现&#xff0c;如果我们在一个窗口里面修改了状态&#xff0c;然后再打开…...

java基础入门-05-【面向对象进阶(static继承)】

Java基础入门-05-【面向对象进阶&#xff08;static&继承&#xff09;】 13、面向对象进阶&#xff08;static&继承&#xff09;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数据报分片 以太网包头&#xff08;链路层协议&#xff09; IP包头 IP网的意义 当互联网上的主机进行通信时&#xff0c;就好像在一个网络上通信一样&#xff0c;看不见互联的各具体的网络异构细节&#xff1b; 如果在这种覆盖…...

蓝牙耳机哪款性价比高?2023蓝牙耳机性价比排行

随着蓝牙耳机的使用愈发频繁&#xff0c;蓝牙耳机产品也越来越多&#xff0c;蓝牙耳机的功能、价格、外观设计等都不尽相同。接下来&#xff0c;我来给大家推荐几款性价比高的蓝牙耳机&#xff0c;感兴趣的朋友一起来看看吧。 一、南卡小音舱Lite2蓝牙耳机 参考价&#xff1a…...

关于C语言的一些笔记

文章目录 May4,2023常量问题基本数据类型补码printf的字符格式控制关于异或、异或的理解赋值运算i和i的区别关系运算符 &#xff2d;ay5,2023逻辑运算中‘非’的理解逗号运算运算符的优先级问题三目运算 摘自加工于C技能树 May4,2023 常量问题 //定义常量 const float PI; PI…...

【Python入门知识】NumPy数组迭代及连接

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 数组迭代 迭代意味着逐一遍历元素&#xff0c;当我们在 numpy 中处理多维数组时&#xff0c; 可以使用 python 的基本 for 循环来完成此操作。 如果我们对 1-D 数组进行迭代&#xff0c;它将逐一遍历每个元素。 实例 迭…...

我们公司的面试,有点不一样!

我们公司的面试&#xff0c;有点不一样&#xff01; 朋友们周末愉快&#xff0c;我是鱼皮。因为我很屑&#xff0c;所以大家也可以叫我屑老板。 自从我发了自己创业的文章和视频后&#xff0c;收到了很多小伙伴们的祝福&#xff0c;真心非常感谢&#xff01; 不得不说&#…...

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 【放松身心亲近自然 自驾露营成旅游新风尚】今年“五一”假期&#xff0c;我国旅游业的快速恢复催生自驾露营休闲游、短途游、夜游等新型旅游产品提质升级。快速发展的新兴旅游业态&#xff0c;在促进旅游消费、培育绿色健康生活方式等方面发挥了积极作用&#xf…...

C++之编程规范

目录 谷歌C风格指南&#xff1a;https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/ 编码规则&#xff1a; • 开闭原则&#xff1a;软件对扩展是开放的&#xff0c;对修改是关闭的 • 防御式编程&#xff1a;简单的说就是程序不能崩溃 •…...

ChatGPT做PPT方案,10组提示词方案!

今天我们要搞定的PPT内容是&#xff1a; 活动类型&#xff1a;节日活动、会员活动、新品活动分析类型&#xff1a;用户分析、新品立项、项目汇报内容类型&#xff1a;内容规划、品牌策划 用到的工具&#xff1a; mindshow 邀请码 6509097ChatGPT传送门&#xff08;免费使用…...

分布式夺命12连问

分布式理论 1. 说说CAP原则&#xff1f; CAP原则又称CAP定理&#xff0c;指的是在一个分布式系统中&#xff0c;Consistency&#xff08;一致性&#xff09;、 Availability&#xff08;可用性&#xff09;、Partition tolerance&#xff08;分区容错性&#xff09;这3个基本…...

sourceTree离线环境部署

目录 1、下载sourceTree安装包&#xff0c;打开之后弹出注册界面&#xff08;需要去国外网站注册&#xff09;2、使用技术手段跳过注册步骤3、打开安装包进行安装 注&#xff1a;建议提前安装好git 1、下载sourceTree安装包&#xff0c;打开之后弹出注册界面&#xff08;需要去…...

6.1.1 图:基本概念

一&#xff0c;基本概念 1.基本定义 &#xff08;1&#xff09;图的定义 顶点集不可以是空集&#xff0c;但边集可以是空集。 &#xff08;2&#xff09; 有向图的表示&#xff1a; 圆括号 无向图的表示&#xff1a; 尖括号 简单图、多重图&#xff1a; 简单图&#xff1a;…...

SlickEdit for Windows and Linux crack

SlickEdit for Windows and Linux crack 现在可以在“新建注释”对话框中对颜色进行排序&#xff0c;使调色板中的颜色阵列看起来更符合逻辑。 在拆分或扩展行注释时添加了撤消步骤&#xff0c;这样您只需点击“撤消”一次即可撤消行注释扩展。 已更新VHDL颜色编码&#xff0c;…...

ChatGPT实现stackoverflow 解释

stackoverflow 解释 ChatGPT 公开服务以来&#xff0c;程序员们无疑是最早深入体验和"测试"的一批人。出色的效果也引发了一系列知识产权上的争议。著名的 stackoverflow 网站&#xff0c;就宣布禁止用户使用 ChatGPT 生成的内容来回答问题&#xff0c;一经发现&…...

第五章 作业(123)【编译原理】

第五章 作业【编译原理】 前言推荐第五章 作业123 随堂练习课前热身04-17随堂练习04-17课前热身04-24 最后 前言 2023-5-3 22:12:46 以下内容源自《【编译原理】》 仅供学习交流使用 推荐 第四章 作业&#xff08;123&#xff09;【编译原理】 第五章 作业 1 1.令文法G为…...

基于Vue的个性化网络学习笔记系统

1&#xff0e;系统登录&#xff1a;系统登录是用户访问系统的路口&#xff0c;设计了系统登录界面&#xff0c;包括用户名、密码和验证码&#xff0c;然后对登录进来的用户判断身份信息&#xff0c;判断是管理员用户还是普通用户。 2&#xff0e;系统用户管理&#xff1a;不管是…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景

Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知&#xff0c;帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量&#xff0c;能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度&#xff0c;还为机器人、医疗设备和制造业的智…...

比较数据迁移后MySQL数据库和ClickHouse数据仓库中的表

设计一个MySQL数据库和Clickhouse数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

开源项目实战学习之YOLO11:12.6 ultralytics-models-tiny_encoder.py

👉 欢迎关注,了解更多精彩内容 👉 欢迎关注,了解更多精彩内容 👉 欢迎关注,了解更多精彩内容 ultralytics-models-sam 1.sam-modules-tiny_encoder.py2.数据处理流程3.代码架构图(类层次与依赖)blocks.py: 定义模型中的各种模块结构 ,如卷积块、残差块等基础构建…...

2025-06-08-深度学习网络介绍(语义分割,实例分割,目标检测)

深度学习网络介绍(语义分割,实例分割,目标检测) 前言 在开始这篇文章之前&#xff0c;我们得首先弄明白&#xff0c;什么是图像分割&#xff1f; 我们知道一个图像只不过是许多像素的集合。图像分割分类是对图像中属于特定类别的像素进行分类的过程&#xff0c;即像素级别的…...