整合一下能够查到的资料,然后结合自己的理解,算是对这篇文章的一个小小的总结吧。这是CVPR2018的一篇关于小目标检测的文章,出发点是作者认为小目标的检测信息随着层数的增加而不断地丢失了,所以想利用语义分割强化浅层的特征信息(这里强化可能用得不准确,但是我是这么理解的)。整体的网络框架分为三个部分Detection Branch (这里简称DB)+ Segmentation Module (这里简称SM)+ Global Activation Module(这里简称GAM)。SM和GAM本质上都是采用的语义分割的方式增强语义信息并且随着SSD往更高层进行传递。

整体结构框图:

操作过程以DB为主框架:1、在浅层网络中选择SM增强low level特征的语义信息。SM模块的输入是DB主框架的con4_3输出以及用anchor定义的语义分割ground truth, 输出再返回到con4_3作为下一层的输入,这样就可以将低层的语义分割结果融合到高层特征信息中。2、高层通过GAM增强high level的特征语义信息,GAM本质上也就是attention的思想,首先计算特征权重然后根据权重来融合多尺度的特征信息。

SM模块是这篇论文中重点强调的一个模块,这个部分主要有两个作用,通俗点理解就是产生增强的语义信息并且通过训练使得输出的语义信息增强效果越来越好。其中H支路是输入x在经过4个atrous convolution(既保证了特征图的尺寸不变,也能减少卷积过程中的噪声)卷积之后经过H()函数操作得到类似attention中的mask z,最后x与z做点乘得到,且以为后续检测工作的输入。F支路的作用是利用损失函数训练H支路得到的attention,和分割算法类似,分割算法是针对每个像素点做分类,在F支路中训练所用的ground truth中的每个像素点的标签为对应ground truth框的标签,如果一个像素点同时在多个ground truth框中,则该点的标签为面积最小的那个框的标签,其他情况的点标签都是背景。

网上有一大堆对于sm模块的公式分析,关于通道数以及维度之类的,个人觉得文章中提到的一大串公式里,最能体现出和语义分割关系的是公式:

F支路最后的输出Y中每个点的通道数为N+1,这里的特征投影中每个点在所有的channel上的累加和为1,而且值最大的那个点对应的标签就是分割得到的图像中对应点的标签。

图4表示ground truth的生成方式,图像中像素的标签不需要额外再标注,图2表示segmentation module,A是输入图像,B是输出图像经过特征提取之后的feature map,C是对应的输出Z,D是B和C点乘之后的结果,也就是文章强调的需要增强的小目标的语义特征。

由GAM模块的计算公式就可以很直观的看出来和语义分割非常像,这个模块主要包含三个操作:spatial pooling相当于给输入的特征图做了归一化处理,而channel-wise learning则是利用两层激活函数突显了特征图的权重信息,最后的broadcasted multiplying将S和输入x点乘得到最后的输出,类似于attention的思想。

整个损失函数包括检测的损失函数和分割损失函数,分割的损失函数就是文章设计的SM模块中的训练损失函数。整体实验效果虽然比同年CVPR的另外一篇文章低一点,但是结果还是很好的。

Single-Shot Object Detection with Enriched Semantics的更多相关文章

  1. Single Shot Multibox Detection (SSD)实战(下)

    Single Shot Multibox Detection (SSD)实战(下) 2. Training 将逐步解释如何训练SSD模型进行目标检测. 2.1. Data Reading and In ...

  2. A Convolution Tree with Deconvolution Branches: Exploiting Geometric Relationships for Single Shot Keypoint Detection

    作者:嫩芽33出处:http://www.cnblogs.com/nenya33/p/6817781.html 版权:本文版权归作者和博客园共有 转载:欢迎转载,但未经作者同意,必须保留此段声明:必须 ...

  3. Single Shot Multibox Detection (SSD)实战(上)

    Single Shot Multibox Detection (SSD)实战(上) 介绍了边界框.锚框.多尺度对象检测和数据集.现在,我们将利用这些背景知识构建一个目标检测模型:单次多盒检测(SSD) ...

  4. deep learning on object detection

    回归工作一周,忙的头晕,看了两三篇文章,主要在写各种文档和走各种办事流程了-- 这次来写写object detection最近看的三篇文章吧.都不是最近的文章,但是是今年的文章,我也想借此让自己赶快熟 ...

  5. SSD: Single Shot MultiBox Detector

    By Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexande ...

  6. SSD: Single Shot MultiBoxDetector英文论文翻译

    SSD英文论文翻译 SSD: Single Shot MultiBoxDetector 2017.12.08    摘要:我们提出了一种使用单个深层神经网络检测图像中对象的方法.我们的方法,名为SSD ...

  7. Object Detection︱RCNN、faster-RCNN框架的浅读与延伸内容笔记

    一.RCNN,fast-RCNN.faster-RCNN进化史 本节由CDA深度学习课堂,唐宇迪老师教课,非常感谢唐老师课程中的论文解读,很有帮助. . 1.Selective search 如何寻找 ...

  8. 谷歌开源的TensorFlow Object Detection API视频物体识别系统实现教程

    视频中的物体识别 摘要 物体识别(Object Recognition)在计算机视觉领域里指的是在一张图像或一组视频序列中找到给定的物体.本文主要是利用谷歌开源TensorFlow Object De ...

  9. object detection[content]

    近些年,随着DL的不断兴起,计算机视觉中的对象检测领域也随着CNN的广泛使用而大放异彩,其中Girshick等人的<R-CNN>是第一篇基于CNN进行对象检测的文献.本文欲通过自己的理解来 ...

随机推荐

  1. C++ 构造函数的执行过程(一) 无继承

      引言 C++ 构造函数的执行过程(一) 无继承 本篇介绍了在无继承情况下, C++构造函数的执行过程, 即成员变量的构建先于函数体的执行, 初始化列表的数量和顺序并不对构造函数执行顺序造成任何影响 ...

  2. JAVA netty 简单使用

    实现一个功能,客户端和服务器 轮流对一个数加+1 服务器 public class Server { public static void main(String[] args) { NioEvent ...

  3. Xbim.GLTF源码解析(一):简介

    原创作者:flowell,转载请标明出处:https://www.cnblogs.com/flowell/p/10838972.html 简介 Xbim.GLTF是将IFC文件转换成GLTF文件的一个 ...

  4. github实用的搜索小技巧

    查资源,学习优秀的框架,搜索是一种能力! 作为程序猿开发中最大的同性交友网站,github当之无愧,里面有很多优秀的开源框架,各种技术大佬混迹其中,有他们总结的学习教程,造好的轮子(开发的各种工具,技 ...

  5. 四、docker 仓库(让我们的镜像有处可存)

    前言 前面讲完了docker 镜像和容器,以及通过Dockerfile 定制属于我们自己的镜像,那那现在就是需要将我们自己定制的镜像存放到仓库中供他们使用.这一套流程才算是正式走完了.从获取镜像,操作 ...

  6. Flask数据库基本操作

    数据库基本操作 在Flak-SQLAlchemy中,插入.修改.删除操作,均由数据库会话管理. 会话用db.session表示.在准备把数据写入数据库前,需要先将数据添加到会话中然后调用commit( ...

  7. [BZOJ2821][Luogu4135] 作诗

    由于BZOJ这题要contact lydsy2012@163.com,所以就放个洛谷的传送门(我木有BZOJ权限号啊0.0) 诶?这不是莫队裸题?? 等等--这题强制在线欸,没办法莫队了,肿么破? 之 ...

  8. [考试反思]0927csp-s模拟测试53:沦陷

    很喜欢Yu-shi说过的一句话 在OI里,菜即是原罪 对啊. 都会.谁信呢? 没有分数,你说话算什么呢? 你就是菜,你就是不对,没有别的道理. 最没有用的,莫过于改题大神,这就是菜的借口. 但是其实这 ...

  9. permu 莫队 总结

    由于每次询问静态区间里完整值域段的最大大小 貌似很好用莫队转移,所以考虑怎么转移 当给它扩展一个数时,就是给值域添加了一个值 这个值可能已经存在,也可能是新的 有的神仙做法是维护了一个并查集,然而我这 ...

  10. vue引入百度地图 --BMap is not defined ,eslint BMap报错

    在mounted初始化地图的时候,因为异步问题会导致BMap is not defined,也就是百度的api还没完全引入或者加载完成,就已经进行地图初始化了 解决方法: 1.创建一个map.js e ...