hrnet相关的两篇文章
CVPR2019   Deep High-Resolution Representation Learning for Human Pose Estimation
 
 
 
        提出了一种新的架构,即高分辨率网络(HRNet),它能够在整个过程中维护高分辨率的表示。我们从高分辨率子网作为第一阶段始,逐步增加高分辨率到低分辨率的子网(gradually add high-to-low resolution subnetworks),形成更多的阶段,并将多分辨率子网并行连接。在整个过程中,我们通过在并行的多分辨率子网络上反复交换信息来进行多尺度的重复融合,使得每一个高分辨率到低分辨率的表征都从其他并行表示中反复接收信息,从而得到丰富的高分辨率表征.
 
网络示意图如下:

本文的贡献点:
1)我们的方法是,平行地连接从高到底分辨率的子网络,与目前绝大多数串联连接的网络不同。因此,我们的网络可以维持高分辨率特征,而不是通过一个从低到高的操作来恢复出一个高分辨率特征。 因此,预测的热图(heatmap)在空间上可能更精确。
2) 大多数现有的融合方案都是聚合低层(low-level)和高层(high-level)的表示( representations)。而本文提出的网络,使用重复的多尺度融合, 利用相同深度和相似级别的低分辨率表示来提高高分辨率表示。
(i) Our approach connects high-to-low resolution subnetworks in parallel rather than in series as done in most existing solutions. Thus, our approach is able to maintain the high resolution instead of recovering the resolution through a low-to-high process, and accordingly the predicted heatmap is potentially spatially more precise. 
(ii)Most existing fusion schemes aggregate low-level and highlevel representations. Instead, we perform repeated multiscale fusions to boost the high-resolution representations with the help of the low-resolution representations of the same depth and similar level, and vice versa, resulting in that high-resolution representations are also rich for pose estimation. Consequently, our predicted heatmap is potentially more accurate.
 
 
网络结构如下图所示。

高分辨率与低分辨率的融合方式如下:

高分辨需要先用一个或者若干个连续的stride=2的3x3卷积(2个连续的stride=2的3x3卷积为 4倍的 downsampling)降低到与低分辨率相同,然后使用element wise sum,对不同分辨率进行求和。
低分辨率要先用一个上采样(Upsample,使用最近邻插值,使用2倍或者4倍的上采样率)的方式提升到与高分辨相同,然后使用1x1卷积使得通道数与高分辨一致,然后再进行sum操作。
 
最终不同分辨率的输出融合方式如下图:

 
 
最后在coco 人形关键点检测的结果如下:

附录:
 
各种网络的不同分辨率的组合融合方式

High-to-low and low-to-high.

      high-to-low process的目标是生成低分辨率和高分辨率的表示,low-to-high process的目标是生成高分辨率的表示[4,11,23,72,40,62]。这两个过程可能会重复多次,以提高性能[77,40,14]。
 
      具有代表性的网络设计模式包括:
 
      (i)Symmetric high-to-low and low-to-high processes。Hourglass及其后续论文[40,14,77,31]将low-to-high proces设计为high-to-low process的镜子。
 
      (ii)Heavy high-to-low and light low-to-high。high-to-low process是基于ImageNet分类网络,如[11,72]中使用的ResNet,low-to-high process是简单的几个双线性上采样[11]或转置卷积[72]层。
 
      (iii)Combination with dilated convolutions。在[27,51,35]中,ResNet或VGGNet在最后两个阶段都采用了扩张性卷积来消除空间分辨率的损失,然后采用由light lowto-high process来进一步提高分辨率,避免了仅使用dilated convolutions的昂贵的计算成本[11,27,51]。图2描述了四种具有代表性的姿态估计网络。

Multi-scale fusion.

最直接的方法是将多分辨率图像分别送入多个网络,并聚合输出响应映射[64]。Hourglass[40]及其扩展[77,31]通过跳过连接,将high-to-low process中的低级别特征逐步组合为low-to-high process中的相同分辨率的高级别特性。在cascaded pyramid network[11]中,globalnet将high-to-low process中的低到高级别特征low-to-high level feature逐步组合到low-to-high process中,refinenet将通过卷积处理的低到高特征进行组合。我们的方法重复多尺度融合,部分灵感来自深度融合及其扩展[67,73,59,80,82]。
 
 
 
 
 
 

HRNET网络结构简单分析的更多相关文章

  1. 简单分析JavaScript中的面向对象

    初学JavaScript的时候有人会认为JavaScript不是一门面向对象的语言,因为JS是没有类的概念的,但是这并不代表JavaScript没有对象的存在,而且JavaScript也提供了其它的方 ...

  2. CSipSimple 简单分析

    简介 CSipSimple是一款可以在android手机上使用的支持sip的网络电话软件,可以在上面设置使用callda网络电话.连接使用方式最好是使用wifi,或者3g这样上网速度快,打起电话来效果 ...

  3. C#中异常:“The type initializer to throw an exception(类型初始值设定项引发异常)”的简单分析与解决方法

    对于C#中异常:“The type initializer to throw an exception(类型初始值设定项引发异常)”的简单分析,目前本人分析两种情况,如下: 情况一: 借鉴麒麟.NET ...

  4. 透过byte数组简单分析Java序列化、Kryo、ProtoBuf序列化

    序列化在高性能网络编程.分布式系统开发中是举足轻重的之前有用过Java序列化.ProtocolBuffer等,在这篇文章这里中简单分析序列化后的byte数组观察各种序列化的差异与性能,这里主要分析Ja ...

  5. 简单分析Java的HashMap.entrySet()的实现

    关于Java的HashMap.entrySet(),文档是这样描述的:这个方法返回一个Set,这个Set是HashMap的视图,对Map的操作会在Set上反映出来,反过来也是.原文是 Returns ...

  6. Ffmpeg解析media容器过程/ ffmpeg 源代码简单分析 : av_read_frame()

    ffmpeg 源代码简单分析 : av_read_frame() http://blog.csdn.net/leixiaohua1020/article/details/12678577 ffmpeg ...

  7. FFmpeg的HEVC解码器源码简单分析:解析器(Parser)部分

    ===================================================== HEVC源码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpeg ...

  8. FFmpeg资料来源简单分析:libswscale的sws_getContext()

    ===================================================== FFmpeg库函数的源代码的分析文章: [骨架] FFmpeg源码结构图 - 解码 FFmp ...

  9. wp7之换肤原理简单分析

    wp7之换肤原理简单分析 纠结很久...感觉勉强过得去啦.还望各位大牛指点江山 百度找到这篇参考文章http://www.cnblogs.com/sonyye/archive/2012/03/12/2 ...

随机推荐

  1. PHP 根据二维数组中的某个字段进行排序

    <?php $data = array( array( 'id' => 5698, 'first_name' => 'Bill', 'last_name' => 'Gates' ...

  2. Scyther攻击输出图的解释(之二)

    下面对 Needham-Schroeder 协议形式化分析 的攻击输出图 做一个解释: Needham-Schroeder使用ns3表示, ns3 协议形式化描述结果如下: /*  * Needham ...

  3. 持续集成工具FinalBuilder使用心得

    FinalBuilder 使用这款自动化创建和发布管理工具,软件开发者可以定义和维护一个可靠的以及可重复创建的程序.FinalBuilder包括集成的带有版本的控制系统,文件和目录选项,重复器,源代码 ...

  4. bitset 来计算位

    在stl中提供了 bitset<N> 来计算位,非常方便. 尤其是计算键盘的状态时游泳 ; bitset<> bs = s; cout<<bs[]<<e ...

  5. (四)AppScan用外部设备(ios,安卓)录制app脚本进行安全测试

    一.打开AppScan,选择外部设备/客户机,点击下 二.记录代理设置,可以手动输入需要的端口号,也可以自动选择. 手机配置代理: 1.连接wifi 2.找到该wifi--高级设置--配置代理: 三. ...

  6. ES使用org.elasticsearch.client.transport.NoNodeAvailableException: No node available

    1) 端口错 client = new TransportClient().addTransportAddress(new InetSocketTransportAddress(ipAddress, ...

  7. Vue-main.js中的一些配置

    import Vue from 'vue' import App from './App.vue' import router from './router' import store from '. ...

  8. investigate issues of real time interrupted

    Issues: customer report that real time will interrupted frequently as below: Root Cause: some storm ...

  9. Mysql建表+创建索引

    创建表时可以直接创建索引,这种方式最简单.方便.其基本形式如下: CREATE TABLE 表名( 属性名 数据类型[完整性约束条件], 属性名 数据类型[完整性约束条件], ...... 属性名 数 ...

  10. Codeforces Round #571 (Div. 2)

    A. Vus the Cossack and a Contest 签. #include <bits/stdc++.h> using namespace std; int main() { ...