SegFix:预测边界和预测方向来修正边界

论文标题:SegFix: Model-Agnostic Boundary Refinement for Segmentation
论文地址:https://arxiv.org/pdf/2007.04269.pdf
代码地址:https://github.com/openseg-group/openseg.pytorch

两种loss监督

八种方向变回归问题为分类问题

代码地址:

1、使用sobel算子把边界点的方向换成分类问题

for id in range(1, len(label_list) + 1):labelmap_i = labelmap.copy()labelmap_i[labelmap_i != id] = 0labelmap_i[labelmap_i == id] = 1if labelmap_i.sum() < 100:continueif args.metric == 'euc':depth_i = distance_transform_edt(labelmap_i)elif args.metric == 'taxicab':depth_i = distance_transform_cdt(labelmap_i, metric='taxicab')else:raise RuntimeErrordepth_map += depth_idir_i_before = dir_i = np.zeros_like(dir_map)dir_i = torch.nn.functional.conv2d(torch.from_numpy(depth_i).float().view(1, 1, *depth_i.shape), sobel_ker, padding=ksize//2).squeeze().permute(1, 2, 0).numpy()# The following line is necessarydir_i[(labelmap_i == 0), :] = 0dir_map += dir_i

2、计算偏移量

def shift(x, offset):"""x: h x woffset: 2 x h x w"""h, w = x.shapex = torch.from_numpy(x).unsqueeze(0)offset = torch.from_numpy(offset).unsqueeze(0)coord_map = gen_coord_map(h, w)norm_factor = torch.FloatTensor([(w-1)/2, (h-1)/2])grid_h = offset[:, 0]+coord_map[0]grid_w = offset[:, 1]+coord_map[1]grid = torch.stack([grid_w, grid_h], dim=-1) / norm_factor - 1x = F.grid_sample(x.unsqueeze(1).float(), grid, padding_mode='border', mode='bilinear').squeeze().numpy()x = np.round(x)return x.astype(np.uint8)

3、重新计算label

class LabelTransformer:label_list = [7, 8, 11, 12, 13, 17, 19, 20,21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33]@staticmethoddef encode(labelmap):labelmap = np.array(labelmap)shape = labelmap.shapeencoded_labelmap = np.ones(shape=(shape[0], shape[1]), dtype=np.int) * 255for i in range(len(LabelTransformer.label_list)):class_id = LabelTransformer.label_list[i]encoded_labelmap[labelmap == class_id] = ireturn encoded_labelmap@staticmethoddef decode(labelmap):labelmap = np.array(labelmap)shape = labelmap.shapeencoded_labelmap = np.ones(shape=(shape[0], shape[1]), dtype=np.uint8) * 255for i in range(len(LabelTransformer.label_list)):class_id = iencoded_labelmap[labelmap ==class_id] = LabelTransformer.label_list[i]return encoded_labelmap

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/671927.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitOps介绍

基础设施即代码 IaC 在理解 GitOps 之前&#xff0c;需要先理解什么是基础设施即代码。 基础设施即代码&#xff08;Infrastructure as Code&#xff0c;简称IaC&#xff09;是一种软件工程实践&#xff0c;它将基础设施的管理和配置过程像管理代码一样进行版本控制、自动化和…

电源小白入门学习7——USB充电、供电、电源路径管理

电源小白入门学习7——USB充电、供电、电源路径管理 USB充电系统需要考虑的因素开关充电和线性充电充电路径管理输入限流路径管理&#xff08;动态功率管理&#xff09;理想二极管帮助提高电池利用率输入过充抑制 上期我们介绍了锂离子电池的电池特性&#xff0c;及充电电路设计…

websevere服务器从零搭建到上线(二)|Linux上的五种IO模型

文章目录 阻塞 blocking非阻塞 non-blockingIO复用 IO multiplexing信号驱动 signal-driven异步 asynchronous拓展知识 看过上篇文章英国基本能理解本文五张图的内容websevere服务器从零搭建到上线&#xff08;一&#xff09;&#xff5c;阻塞、非阻塞、同步、异步 本文要能够在…

关于冯诺依曼体系结构 和 操作系统(Operator System)的概念讲解(冯诺依曼体系结构,操作系统的作用等)

目录 一、冯诺依曼体系结构 二、操作系统 1. 概念 2. 设计操作系统的目的 3.系统调用和库函数概念 4.总结 三、完结撒❀ 一、冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。 截…

工业光源环形系列一平面无影光源特点

产品特点 ◆LED灯珠均匀排布经过漫射板特殊角度反射达到漫射效果&#xff1a; ◆光源均匀性高&#xff0c;漫射效果好。

Navicat for MySQL Mac:数据库管理与开发的理想工具

Navicat for MySQL Mac是一款功能强大的数据库管理与开发工具&#xff0c;专为Mac用户设计&#xff0c;旨在提供高效、便捷的数据库操作体验。 它支持创建、管理和维护MySQL和MariaDB数据库&#xff0c;通过直观的图形界面&#xff0c;用户可以轻松进行数据库连接、查询、编辑和…

20240507最新 ubuntu20.04安装ros noetic

ubuntu20.04安装ros 主要参考博客 【ROS】在 Ubuntu 20.04 安装 ROS 的详细教程_ubuntu20.04安装ros-CSDN博客 出现问题 1.ubuntu20.04 更换清华源报错 ubuntu20.04 更换清华源报错_gvfs metadata is not supported. fallback to teplme-CSDN博客 &#xff1f;&#xff1f…

基于Java.Web框架React、Vue.js技术开发的一套(C#医院体检系统成品源码、支持二开)

医院体检系统是一种专为体检中心/医院体检科等体检机构开发的全流程管理系统。该系统通过软件实现检测仪器数据的自动提取&#xff0c;内置多级医生工作台&#xff0c;细化工作并将体检检查结果汇总&#xff0c;生成体检报告登记到计算机系统中。此外&#xff0c;该系统还能进行…

Spring与AI结合-spring boot3整合AI组件

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 目录 写在前面 spring ai简介 单独整合al接口 整合Spring AI组件 起步条件 ​编辑 进行必要配置 写在最后 写在前面 本文介绍了springboot开发后端服务中&#xff0c;AI组件(Spring A…

Project Virtual Painter

先上实验效果&#xff1a; 画笔实验结果 实现画笔操作&#xff0c;提取颜色目标&#xff0c;绘制轮廓&#xff0c;显示画笔三步骤。 1、提取颜色目标 要实现画笔操作&#xff0c;首先要提取颜色目标&#xff0c;也就是画笔&#xff0c;我们需要得到int hmin , smin, vmin&…

cmake进阶:变量的作用域说明三(从函数作用域方面)

一. 简介 前一篇文章从函数作用域方面学习了 变量的作用域。文章如下&#xff1a; cmake进阶&#xff1a;变量的作用域说明一&#xff08;从函数作用域方面&#xff09;-CSDN博客cmake进阶&#xff1a;变量的作用域说明二&#xff08;从函数作用域方面&#xff09;-CSDN博客…

VTK —— 三、简单操作 - 示例3 - 将点投影到平面上(附完整源码)

代码效果 本代码编译运行均在如下链接文章生成的库执行成功&#xff0c;若无VTK库则请先参考如下链接编译vtk源码&#xff1a; VTK —— 一、Windows10下编译VTK源码&#xff0c;并用Vs2017代码测试&#xff08;附编译流程、附编译好的库、vtk测试源码&#xff09; 教程描述 本…