YOLACT: 实时实例分割

news2024/11/25 14:20:13

论文:https://arxiv.org/abs/1904.02689

代码:https://github.com/dbolya/yolact

图 1:COCO 上各种实例分割方法的速度性能trade-off。据我们所知,我们是第一个在 COCO test-dev 上达到大约 30 个mask mAP 的实时(超过 30 FPS)方法。

0、摘要

        提出了一个简单、全卷积的实时实例分割模型,在COCO上实现29.8的mAP,在单张Titan XP显卡上实现33.5FPS,这速度显著超越了此前的所有SOTA。此外,只需一张显卡即可训练达到这种效果。作者将实例分割分为两个并行的子任务:一个分支生成一系列原型mask,也即prototype;另一个分支做目标检测同时对每个实例预测mask系数。如此,就可以利用prototype和mask系数信息,通过线性组合生成实例mask。这个过程不依赖于repooling,所以可以生成高质量mask,且表现出无消耗的时间稳定性。进一步的,作者还发现尽管使用的是全卷积,但prototype仍能够以平移不变的方式学习到实例的定位信息。最后,还提出了 Fast NMS,它是标准 NMS 的快速版,仅具有边际性能损失。

1、动机

"Boxes are stupid anyway though, I'm probably a true believer in masks except I can't get YOLO to learn them."  —— Joseph Redmon, YOLOv3

        可以看出,YOLACT是替Joseph Redmon圆梦的【此处应该有个狗头】~

        言归正传,此前的流行实例分割都是在目标检测的基础上增加mask分支,如Mask-RCNN、FCIS,他们主要关注性能而非速度。于是,为了填补这块空白,作者想做出一个类似SSD和YOLO级别的实例分割。

        在目标检测领域,SSD和YOLO通过移除像Faster RCNN那样的第二个阶段,并通过一些手段做弥补,可以达到不错的效果。然而实例分割领域却不能简单地如法炮制。此前流行的两阶段的实例分割通常都依赖于repool操作(如ROI Pooling、ROI Align)来做特征定位,然后将这些定位的特征送到mask预测分支,这种操作非常heavy且由于其串行特性而难以加速,再加上大量的后处理,故而难以实时。

        基于这些问题,作者提出了YOLACT,其丢弃了显式的定位步骤,取而代之的是在prototype中隐式学习实例的定位。在这种方式下,网络可自行学习到实例mask的定位,使得在视觉上、空间上、语义上相似的实例在prototype上能够区分开来,也即网络学习到了将相似的实例区分开的能力。

2、方法

2.1. 网络结构

        整体网络架构如图2所示:

图 2:YOLACT 架构

        网络结构简单描述一下:

  1. 输入图像,送入backbone,进行特征提取;
  2. backbone出来的feature map,P3~P7部分利用FPN进行特征融合,送入检测分支,生成cls、bbox、mask coff; P3部分则送入mask分支,通过一个FCN生成一组prototypes;
  3. 对NMS之后剩下的实例,利用mask coefficients和prototypes线性组合生成最终的分割mask;

        网络包含了几个要点:

  • 1)网络是在one-stage网络中添加mask分支来实现实时实例分割的,但这种方式不同于Mask-RCNN在Faster-RCNN基础上做的那样,YOLOACT没有显式定位操作,而是通过prototype来隐式学习;
  • 2)网络的两个分支:
  •         a. 目标检测分支:除了包含目标检测的常规内容(边框、置信度、类别等),还增加了mask系数;
  •         b. prototype分支:固定通道数的一组prototype,原图尺度、不依赖于实例类别;其通过分布式表达各个实例的特征,在预测时也会利用所有prototype对每个种类别的实例做分割;
  • 3)将实例mask的预测内容分解到两个分支是因为:可以利用擅长生成语义向量的FC层生成mask系数,利用擅长产生空间相关mask的卷积层来生成prototype,这样可以实现并行计算,从而保持一阶段且快速的特点。

2.2. 关于prototype

        本工作最重要的工作是在实例分割中引入了prototype。

        prototypes是一组通过FCN生成的固定通道数的feature map,protonet网络结构见图3:

        prototypes的通道数与类别数无关,对每个类别,都会通过所有prototype跨类别组合来做分割。YOLACT中的prototype学习到的是一种分布式表示,每一个实例的分割mask都是多个prototype的组合,也即prototype是跨类别共享的。

        这种分布式的特征表示,使得每个prototype负责不同的特征:有的负责在空间上划分图像,有的负责定位实例,有的负责编码位置敏感的方向图(类似于FCIS中硬编码位置敏感的模块),而大部分prototype都是这些信息的组合表示。这种特性如图5所示:

图5:prototype特性

3、实验结果

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

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

相关文章

一文带你了解什么是“三渲二”?

一、什么是三渲二? 有没有在电子游戏或动漫作品中看到一些很独特的画面,里面的物体明明看起来是 3D 的模型,可是呈现出来的视觉效果却更偏向 2D 手绘。 这种技术被称为“三渲二”(celshading/toon shading)&#xff…

C++中图的存储

文章目录 0. 实例图1. 邻接矩阵2. 邻接矩阵2.1 链表数组2.2 链式前向星 3. 参考 0. 实例图 考虑下面这样一个图 1. 邻接矩阵 vis[i][j] 表示从i 到j有一条边。直接用二维数组就可以了。 using namespace std; int vertex_num 5; vector<vector<int>> graph(v…

网络中一些重要的协议和技术

全文目录 DNSDNS的基本概念&#xff1a;DNS的工作流程&#xff1a; ICMP 协议ICMP的基本概念&#xff1a;常见的ICMP消息类型&#xff1a;ICMP与IP的关系&#xff1a;为什么ICMP是重要的&#xff1f; NAT协议代理服务器正向代理和反向代理 NAT和代理服务器的区别 DNS DNS (域名…

sass制作一个简单的星空背景

最近遇到一个有意思的东西&#xff0c;需要制作一个如下图的背景&#xff1a; 如果使用js或者canvas应该是比较简单的&#xff0c;正好最近在使用sass&#xff0c;那么纯sass能否实现这种效果呢&#xff1f;来试一下 首先来生成这些点&#xff1a; <div class"conten…

浴池探秘:水疗之旅的魅力与奇妙体验

浴室装饰的时候&#xff0c;选择合适的颜色和瓷砖是至关重要的。设计师推出了一系列的瓷砖&#xff0c;这些瓷砖有着独特的纹理和颜色&#xff0c;适合用于浴室的地板和墙壁。这个系列包括三种不同的面层&#xff1a;Terra&#xff08;大地&#xff09;、Lava&#xff08;熔岩&…

【兔子王赠书第5期】ChatGPT速学通:文案写作+PPT制作+数据分析+知识学习与变现

文章目录 前言ChatGPT推荐图书作者简介内容简介推荐理由 粉丝福利尾声 前言 程序员如果有一天代码写不动了&#xff0c;还能干什么&#xff1f; 一位 80 后女程序员“兰猫”给出了她的答案——转型 AI 写手。兰猫从事程序员工作十余年&#xff0c;在繁重的工作压力下&#xf…

[补题记录] Codeforces Round 906 (Div. 2)(A~D)

URL&#xff1a;https://codeforces.com/contest/1890 目录 A Problem/题意 Thought/思路 Code/代码 B Problem/题意 Thought/思路 Code/代码 C Problem/题意 Thought/思路 Code/代码 D Problem/题意 Thought/思路 Code/代码 A Problem/题意 给出一个数组 A…

【基带开发】AD9361 Accumulator 累加器的用法

IP 核 acc_2048 累加多少个数据&#xff0c;计算方法&#xff1a;23-1211&#xff0c;2^11 2048 IP 使用 acc_2048 ACC1 (.B(12d1 ), // input [11 : 0] b.CLK(ad9361_l_clk ), // input clk.CE(1b1 ), // input ce.BYPASS(clk_gens1…

雪花算法:分布式ID生成的优雅解决方案(建议收藏)

在分布式系统中&#xff0c;唯一ID的生成和管理是一项重要而棘手的任务。雪花算法&#xff0c;由Twitter开源的一种分布式ID生成算法&#xff0c;为这个问题提供了一种优雅的解决方案。本文将详细介绍雪花算法的原理、设计和实现&#xff0c;并通过示例代码和图片帮助读者更好地…

Asterisk Ubuntu 安装

更新环境 sudo apt update sudo apt install wget build-essential git autoconf subversion pkg-config libtool sudo contrib/scripts/get_mp3_source.sh A addons/mp3 A addons/mp3/common.c A addons/mp3/huffman.h A addons/mp3/tabinit.c A addons/mp3/Ma…

竞赛选题 深度学习大数据物流平台 python

文章目录 0 前言1 课题背景2 物流大数据平台的架构与设计3 智能车货匹配推荐算法的实现**1\. 问题陈述****2\. 算法模型**3\. 模型构建总览 **4 司机标签体系的搭建及算法****1\. 冷启动**2\. LSTM多标签模型算法 5 货运价格预测6 总结7 部分核心代码8 最后 0 前言 &#x1f5…

TSN工业交换机惊艳亮相第十九届安博会,光路科技展示TSN技术的实际应用

光路科技在第十九届中国国际社会公共安全博览会&#xff08;CPSE安博会&#xff09;上大放异彩&#xff0c;赢得了全球观众的广泛关注。作为展示先进技术和创新解决方案的杰出平台&#xff0c;光路科技无疑成为了此次博览会的焦点之一。 2023CPSE安博会光路科技TSN交换机惊艳亮…

新品发布:信驰达TI CC1352P7双频段多协议模块RF-TI1352P2,支持Matter over Thread

近日&#xff0c;领先的无线物联网通信模块厂商深圳市信驰达科技推出了基于TI CC1352P7 为核心的双频段&#xff08;Sub-1 GHz 和 2.4 GHz&#xff09;多协议无线模块RF-TI1352P2。 RF-TI1352P2模块除了集成负责应用逻辑的高性能 48 MHz ARM Cortex- M4F 主处理器与一个专用于…

AI:48-基于卷积神经网络的气象图像识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌本专栏包含以下学习方向: 机器学习、深度学…

gcc在线升级

提示&#xff1a;本文在线升级需要服务器连接网络 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技…

第5天:基础入门-资产架构amp;端口amp;应用amp;CDNamp;WAFamp;站库分离amp;负载均衡

第5天&#xff1a;基础入门-资产架构&端口&应用&CDN&WAF&站库分离&负载均衡 #知识点&#xff1a;1. 资产架构-端口&目录&插件接口&多站点&多应用 2. 番外安全-域名&服务器本身&服务厂商&管理人员 3. 考虑阻碍-站库分离&am…

【flink】Task 故障恢复详解以及各重启策略适用场景说明

文章目录 一. 重启策略种类&#xff08;Restart Strategies&#xff09;1. Fixed Delay Restart Strategy2. Failure Rate Restart Strategy3. Fallback Restart Strategy4. No Restart Strategy 二. 故障恢复策略&#xff08;Failover Strategies&#xff09;1. &#xff08;全…

Pycharm 关闭项目卡住

1、升级到最新版本 2、清理缓存 全部勾上 3、修改本地索引 设置找到下面这个&#xff0c;改为&#xff1a;不下载&#xff0c;使用本地索引 4、有人说是和插件有关 pycharm v2023.1.2&#xff0c;我是清理缓存加本地索引解决的&#xff0c;之前 Pycharm 弹了一个窗&#xff0…

佳能R6 m2没有样本文件时的设置方法

佳能R6 m2使用了新的DEC标识和小块长度&#xff0c;一般情况下建议使用加载样本的方式进行处理&#xff0c;如果没有样本也可以使用以下方法。 适用程序:CHS零壹视频恢复程序标准版/专业版/高级版/佳能版 解决问题: 底层原始文件会识别出错&#xff0c;导致很多个小碎片。 …

学习笔记三十三:准入控制

ResourceQuota准入控制器 ResourceQuota准入控制器限制cpu、内存、pod、deployment数量限制存储空间大小 LimitRanger准入控制器在limit名称空间创建pod&#xff0c;不指定资源&#xff0c;看看是否会被limitrange规则自动附加其资源限制创建pod&#xff0c;指定cpu请求是100m&…