Yolact

news2024/9/23 17:16:02

YOLACT

1.Abstract

原理:

  1. 生成一组 prototype masks (原型掩码)
    • 个数(nm)可自定义,基于protonet的最后一组卷积核个数
  2. 通过一组 coefficients (掩码系数) 预测每个 instance mask (输出mask)
    • 掩码系数由head层输出,shape为(cls, nm
    • prototype mask @ coefficient >> instance mask + upsample >> output mask

优势:

1. 不依赖于池化,所以能生成高质量mask(不存在量化,后续会讲)
2. 速度快且稳定

2.Introduction

问题:

  1. 速度: 二阶段需要做定位和分类,速度太慢,希望基于SSD和YOLO实现一个实时的分割网络
    • P1 为什么二阶段的分割速度慢 (附录)
  2. 一阶段在当时已有FCIS,但是时间仍然无法达到实时。
    • P2 FCIS (附录)

idea:

​ 1. prototype masks (原型掩码) + coefficients (掩码系数)

效果:

  1. the network learns how to localize instance masks on its own

    网络会自己定位mask实例

  2. Then producing a full-image in stance segmentation from these two components is simple:

    for each instance, linearly combine the prototypes using the corresponding predicted coeffificients and then crop with a predicted bounding box

    对于每个实例,只需要在预测框内线性组合 prototype masks (原型掩码) coefficients (掩码系数) 即可生成原图mask

  3. the number of prototype masks is independent of the number of categories

    原型掩码数量与类别数无关

  4. YOLACT learns a distributed representation in which each instance is segmented with a

    combination of prototypes that are shared across categories. This distributed representation leads to interesting emergent behavior in the prototype space: some prototypes spatially partition the image, some localize instances, some detect instance contours, some encode position-sensitive directional maps (similar to those obtained by hard-coding a position sensitive module in FCIS [24]), and most do a combination of these tasks (see Figure 5).

    原型掩码存在的意义:一部分学习空间特征,一部分学习位置特征,一部分学习轮廓特征,一部分学习编码特征

  5. in fact, the entire mask branch takes only ∼5 ms to evaluate.

    mask只需要5ms进行计算 (prototype mask @ coefficient)

  6. since the masks use the full extent of the image space without any loss of quality from repooling, our masks for large objects are signifificantly higher quality than those of other methods

    不需要repooling所需的特征损失(插值/量化)

  7. In contrast, our assembly step is much more lightweight (only a linear combination) and can be implemented as one GPU-accelerated matrix-matrix multiplication, making our approach very fast.

    实现矩阵乘法即可轻松GPU加速

3.YOLACT

YOLACT

在这里插入图片描述

  1. 模型:两个并行分支:1. 由FCN生成原型掩码 2.目标检测头中加入掩码系数分支

  2. 后处理:对于在NMS中存活下来的每个实例,线性组合这两个分支结构来为该实例构造一个掩码。(每个实例都是唯一的,并不依赖于任何输入的类别/位置等信息,可以理解为每个卷积核都是为了提取自己想要的特征,比如提取竖线和横线的卷积核更新参数过程,为了达到神经网络替代人工设计编码器的效果)

  3. 模型这样设计的目的:在由二阶段变为一阶段的过程中,仍然能保证空间一致性

    为什么不仅仅输出一个掩码系数,class box也要一起输出?

    仅仅将掩码系数作为输出时,认为模型丢失了实例的空间信息,fc-mask为无class,box一同输出的效果,AP为20.7,比一起输入低了9个点

在这里插入图片描述

 **空间一致性是什么**

 在图像分割中,图像中的某个点和其周围邻域中的点具有相同类别属性的概率较大,这一特性称为图像的空间一致特性。

 原文:由于conv层很自然的存在空间一致性,而FC层不存在,所以将cls,box加入FC层一起回归,保留了空间一致性

3.1. Prototype Generation

Protonet:最后一个1x1卷积控制原型掩码数量

从更深的主干特征中提取质子集可以产生更健壮的掩模,而更高分辨率的原型则可以产生更高质量的掩模,并在更小的物体上获得更好的性能。因此,我们使用FPN [26]是因为它最大的特征层(在我们的例子中是P3;参见图2)是最深的。然后,我们将其重新采样到输入图像维度的四分之一,以提高对小物体的性能。
在这里插入图片描述

在这里插入图片描述

3.2. Mask Coeffificients

For mask coeffificient prediction, we simply add a third branch in parallel that predicts k mask coeffificients, one corresponding to each prototype. Thus, instead of producing 4 + c coeffificients per anchor, we produce 4 + c + k Then for nonlinearity, we find it important to be able to subtract out prototypes from the final mask. Thus, we apply tanh to the k mask coeffificients, which produces more stable outputs over no nonlinearity. The relevance of this design choice is apparent in Figure 2, as neither mask would be constructable without allowing for subtraction.

  1. head输出4+c+k
  2. 为了使final masks和 prototypes 可以相减,使用tanh

3.3. Mask Assembly

[cls, k] @ [h, w, k].T.view(~)
在这里插入图片描述在这里插入图片描述

Loss: Lmask = BCE(M,Mgt)之间的像素级二值交叉熵。

Crop: 推理时会根据预测边界框裁剪finalmask,训练时根据groundtruth进行裁剪,并将Lmask除以地面真实边界框区域,以保留原型中的小物体。

在这里插入图片描述

3.4. Emergent Behavior(意外收获?)

结论

  1. 每个掩码都可以学习很多特征,可以重复但不是复制
  2. 掩码系数的作用是组合/管理/分配/利用各个掩码学习到的特征来生成finalmask
  3. K的改变不会对模型有大影响

在这里插入图片描述

4. Backbone Detector

ResNet-101 with FPN as our default feature backbone and a base image size of 550 × 550.

5. Other Improvements

Fast NMS

Semantic Segmentation Loss

P

P1 为什么二阶段的分割速度慢

img

img

问题:

二阶段意味着必须要在全连接和softmax之前进行feature maps生成和 proposals推荐,且输入的shape不是可变的,所以必须基于repooling,而repooling是很难进行加速的

解决方案:

repooling 可以让不同shape的feature map 编码为同一个shape输出给全连接

  • RoIPooling(进行两次量化)
  • RoIAlign(双线性插值)

P2 FCIS

这里写图片描述

One-stage methods that perform these steps in parallel like FCIS do exist, but they require signifificant amounts of post-processing after localization, and thus are still far from real-time.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务框架 SpringCloud微服务架构 微服务保护 32 隔离和降级 32.2 线程隔离

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 微服务保护 文章目录微服务框架微服务保护32 隔离和降级32.2 线程隔离32.2.1 线程隔离32.2.2 优缺点对比32 隔离和降级 32.2 线程隔离 32.…

算法7:平衡二叉树(AVLTree)

二叉排序树(BST, Binary Sort Tree)也称二叉查找树(Binary Search Tree), 或二叉搜索树。 定义:一颗二叉树,满足以下属性: 左子树的所有的值小于根节点的值右子树的所有值大于根节点的值左、右…

关键词(四)

关键词(四)一.具有争议的关键词—goto二.“空”的关键字—void1.void为什么不能定义变量2.void修饰函数返回值和参数3.void指针一.具有争议的关键词—goto goto语句非常灵活,其实就是从goto这个位置直接跳转到goto后面的那个数据(…

单例模式、工厂模式

单例模式、一、单例模式1.1 饿汉模式1.1.1 实现1.1.2 补充1.2 懒汉模式1.2.1 单线程版1.2.2 多线程版二、工厂模式一、单例模式 单例模式是校招中最常考的设计模式之一。 啥是设计模式? 设计模式好比象棋中的"棋谱":红方当头炮,黑…

软件测试人员究竟要掌握什么技能?顺便说下行业现状

最近团队内部产品在做性能测试中碰到一个问题,不仅仅这次性能测试,其实这在我这近10年工作过程中,经常碰到一些类似的事情,今天拿出来一件事说叨说叨。 1、事情经过 月中上线了一个功能,该功能会应对峰值流量&#x…

【安卓APP源码和设计报告(含PPT)——订餐系统

订餐系统实验报告 课程名称: Android程序设计 班 级: 学 号: 姓 名: 任课教师: 程序功能与环境(服务器,手机实物照片,自己拍) 程序功能 餐厅订餐系统服务器&#…

45. python %占位符格式化处理

45. %占位符格式化处理 文章目录45. %占位符格式化处理1.课题导入2. %占位符概念3. %d格式化为整数3.1 %d将整数格式化到指定位置3.2 %d将浮点数格式化为整数1. 知识回顾:用int函数将浮点数转换为整数2. 用%将浮点数格式化为整数4. %s格式化为字符串4.1 %s将整数格式…

论文笔记-时序预测-Triformer

论文标题: Triformer: Triangular, Variable-Specific Attentions for Long Sequence Multivariate Time Series Forecasting 论文链接: https://arxiv.org/abs/2204.13767v1 代码链接: https://github.com/razvanc92/triformer 摘要 各种现…

[附源码]计算机毕业设计基于JEE平台springbt技术的订餐系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Spring源码解析-环境变量

“不积跬步,无以至千里”。 今天聊一聊Spring中环境变量的动态添加和填充Bean属性的时候一些带“$”符号的属性值的解析问题。 因为最近做项目的时候发现了一个有意思的问题,之前也没关注过。因为项目中使用的容器类型是GenericXmlApplicationContext&a…

从GPT-3到CHAT-GPT(CHAT-GPT如何申请)

回顾2020年7月 2020年7月份有一个重大新闻,人工智能科研公司OpenAI,推出了它的新一代语言模型 GPT-3(Generative Pretrained Transformer 3),这个事情在社交媒体影响甚广,甚至有一篇文章《一个新型 AI 震惊…

动态代理详解

目录 一、动态代理_代理模式简介 二、动态代理_JDK动态代理 dynamic 三、动态代理_CGLib动态代理 四、JDK和CGLib动态代理的区别 一、动态代理_代理模式简介 代理模式是23种设计模式之一。设计模式是前人总结的,在软件开发过程遇到常用问题的解决方案&#xff0…

微服务框架 SpringCloud微服务架构 微服务保护 30 初识Sentinel 30.4 引入cloud-demo

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 微服务保护 文章目录微服务框架微服务保护30 初识Sentinel30.4 引入cloud-demo30.4.1 引入cloud-demo30.4.2 微服务整合Sentinel30 初识Sent…

尝试使用CubeMX做stm32开发之十三:Clock Configuration(时钟树配置)

参考《STM32中文参考手册_V10》,研究CubeMX中有关时钟树配置。 一、系统时钟配置 三种不同的时钟源可被用于驱动系统时钟(SYSCLK): HSI振荡器时钟HSE振荡器时钟PLL时钟 时钟源选择对应时钟配置寄存器(RCC_CFGR&…

Android -- 每日一问:修改 SharedPreferences 后两种提交方式有什么区别?

知识点 SharedPreferences 类是一个接口类,真正的实现类是 SharedPreferencesImpl 。修改 SharedPreferences 需要获取它的 Editor,在对Editor进行put操作后,最后通过 commit 或者 apply 提交修改到内存和文件。当然有了两种都可以提交的方法…

Java进程线程介绍创建和执行销毁并理解线程安全和线程池 Native Method

目录1.进程和线程2.多线程的核心3.操作系统的多任务--以非常小的时间间隔交替执行4.native 修饰的方法5.Thread创建线程的两种方式1.普遍采用实现Runnable接口的方式2.继承Thread方式6.自定义线程用 new Thread(Runnable target) 启动源码分析6.1-new Thread(myThread)6.2对实例…

mysql8.0.21安装配置方法图文教程

记录了mysql 8.0.21 的安装配置方法,分享给大家。 一、下载 1、下载安装包 mysql下载路径 2、解压压缩包 3、在此目录下新建my.ini配置文件 [mysqld] # 设置 3306 端口 port3306 # 设置 mysql 的安装目录 basedirD:\mysql-8.0.21-winx64 # 设置 mysql 数据…

破案了!不会讲笑话不会作诗的chatGPT!

热出圈的chatGPT, 必须亲手试试热出圈的chatGPT, 必须亲手试试1 猜猜我是谁2 问网传图片李白风格注释代码3 写个程序看看4 帮我猜猜世界杯(发了发了,偷笑脸)5 知道李白吗?6 那你会写诗吗?6 那你讲脑经急转弯吗&#xf…

linux服务器安装docker(学习中)

linux服务器安装docker1、docker官网寻找官方文档1.1、卸载之前的docker1.2、安装yum工具类1.3、配置docker下载源的地址1.4、安装最新稳定版的docker1.5、启动docker1.6、docker镜像下载加速2、docker-卷-映射和挂载2.1、nginx1、docker官网寻找官方文档 然后根据官网文档进行…

高性能零售IT系统的建设08-9年来在互联网零售O2O行业抗黑产、薅羊毛实战记录及打法

前言 2012年左右转入互联网应用,由于本身在学校时就涉足过远程医疗影像中的DICOM安全领域这块,因此也是机缘巧合我进入互联网第一年就遇上了一次亿级的DDOS攻击以及千万级CC攻击短信系统的对抗。那时在公司一战成名,直接从team leader升到了主…