mask rcnn解读

2024-08-24 18:08
文章标签 mask 解读 rcnn

本文主要是介绍mask rcnn解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上一篇中介绍faster rcnn,这次mask 基本在上次的基础上加了点代码,参考和引用1. mask rcnn slides 2. kaiming he maskrcnn 3. Ardian Umam mask rcnn,欢迎fork简版mask rcnn

整体框架

这里写图片描述

RoIAlign

问题

  1. 做segment是pixel级别的,但是faster rcnn中roi pooling有2次量化操作导致了没有对齐
    这里写图片描述

  2. 两次量化,第一次roi映射feature时,第二次roi pooling时(这个图参考了youtube的视频,但是感觉第二次量化它画错了,根据上一讲ross的源码,不是缩小了,而是部分bin大小和步长发生变化)
    这里写图片描述

  3. RoIWarp,第一次量化了,第二次没有,RoIAlign两次都没有量化
    这里写图片描述

解决方案

和上一讲faster rcnn举的例子一样,输出7*7

  1. 划分7*7的bin(我们可以直接精确的映射到feature map来划分bin,不用第一次量化)
    这里写图片描述

  2. 每个bin中采样4个点,双线性插值
    这里写图片描述

  3. 对每个bin4个点做max或average pool

# pytorch
# 这是pytorch做法先采样到14*14,然后max pooling到7*7
pre_pool_size = cfg.POOLING_SIZE * 2
grid = F.affine_grid(theta, torch.Size((rois.size(0), 1, pre_pool_size, pre_pool_size)))
crops = F.grid_sample(bottom.expand(rois.size(0), bottom.size(1), bottom.size(2), bottom.size(3)), grid, mode=mode)
crops = F.max_pool2d(crops, 2, 2)
# tensorflow
pooled.append(tf.image.crop_and_resize(feature_maps[i], level_boxes, box_indices, self.pool_shape,method="bilinear"))

sigmoid代替softmax

利用分类的结果,在mask之路,只取对应类别的channel然后做sigmoid,减少类间竞争,避免出现一些洞之类(个人理解)

FPN

详见我的另一篇博客FPN解读

更多

前面我们介绍RoI Align是在每个bin中采样4个点,双线性插值,但也是一定程度上解读了mismatch问题,而旷视科技PLACES instance segmentation比赛中所用的是更精确的解决这个问题,对于每个bin,RoIAlign只用了4个值求平均,而旷视则直接利用积分(把bin中所有位置都插值出来)求和出这一块的像素值和然后求平均,这样更精确了但是很费时。

这里写图片描述

这里写图片描述

来源旷视科技peng chao分享的video和slides

Detectron部分代码细节点

  1. 无bn,因为batch太小了,使用affine channel
  2. mask分支,只使用fg_rois,只用前景的rois
  3. faster rcnn的rpn部分,是生成9*2=18个channel,然后每个格子对应9个anchor,2是前景和背景,使用softmax loss而Detectron中rpn是9个channel,使用sigmoid loss
  4. 所有的gt box都默认送到后面的fast rcnn和mask等分支中
  5. 准备gt_masks时,不是用gt_boxes去全图mask上扣,然后resize到28*28,而是用预测出来的fg_rois去全图的mask上扣然后resize到28*28,这样才能正常训练的mask分支,不然gt_masks的位置根本不对。这和我们采用gt_classes去抽取对应channel的score map做sigmoid一样,目的都是为了能让mask分支受到正常的监督,因为我们自己预测的类别可能是错的,这样抽取错误的channel去做sigmoid然后与gt_masks做loss,是错误的监督。

这篇关于mask rcnn解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1103213

相关文章

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

LLM系列 | 38:解读阿里开源语音多模态模型Qwen2-Audio

引言 模型概述 模型架构 训练方法 性能评估 实战演示 总结 引言 金山挂月窥禅径,沙鸟听经恋法门。 小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖铁观音的小男孩,今天这篇小作文主要是介绍阿里巴巴的语音多模态大模型Qwen2-Audio。近日,阿里巴巴Qwen团队发布了最新的大规模音频-语言模型Qwen2-Audio及其技术报告。该模型在音频理解和多模态交互

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

速通GPT-3:Language Models are Few-Shot Learners全文解读

文章目录 论文实验总览1. 任务设置与测试策略2. 任务类别3. 关键实验结果4. 数据污染与实验局限性5. 总结与贡献 Abstract1. 概括2. 具体分析3. 摘要全文翻译4. 为什么不需要梯度更新或微调⭐ Introduction1. 概括2. 具体分析3. 进一步分析 Approach1. 概括2. 具体分析3. 进一步分析 Results1. 概括2. 具体分析2.1 语言模型

Open-Sora代码详细解读(1):解读DiT结构

Diffusion Models专栏文章汇总:入门与实战 前言:目前开源的DiT视频生成模型不是很多,Open-Sora是开发者生态最好的一个,涵盖了DiT、时空DiT、3D VAE、Rectified Flow、因果卷积等Diffusion视频生成的经典知识点。本篇博客从Open-Sora的代码出发,深入解读背后的原理。 目录 DiT相比于Unet的关键改进点 Token化方

Transformer从零详细解读

Transformer从零详细解读 一、从全局角度概况Transformer ​ 我们把TRM想象为一个黑盒,我们的任务是一个翻译任务,那么我们的输入是中文的“我爱你”,输入经过TRM得到的结果为英文的“I LOVE YOU” ​ 接下来我们对TRM进行细化,我们将TRM分为两个部分,分别为Encoders(编码器)和Decoders(解码器) ​ 在此基础上我们再进一步细化TRM的

过滤器:活性碳过滤器的技术参数详细解读

活性碳过滤器是一种罐体的机械过滤器,外壳一般为不锈钢或者玻璃钢,内部填充活性炭,用来过滤水中的游离物、微生物、部分重金属离子,并能有效降低水的色度。活性炭过滤器是一种较常用的水处理设备,作为水处理脱盐系统前处理能够吸附前级过滤中无法去除的余氯,可有效保证后级设备使用寿命,提高出水水质,防止污染,特别是防止后级反渗透膜,离子交换树脂等的游离态余氧中毒污染。同时还吸附从前级泄漏过来的小分子有机物等