堆叠沙漏网络(stacked hourglass network)学习

news/2024/9/18 12:49:37/ 标签: 人工智能

定义

Stacked Hourglass Networks是2016年密歇根大学提出的经典网络架构。是曾经最具代表性的姿态识别SOTA之一。

hourglass network

hourglass network 本身其实可以理解成是一个encoder-decoder的结构,encoder最大程度的提取图像在每一个scale的特征以及空间信息(spatial information),decoder则是将网络在不同分辨率下提取的特征进行综合,最后得到一个与输入图像大小一致的heatmap。值得注意的是,很多情况网络会以一个或者多个全连接成作为最后的输出层,但是hourglass 网络使用了一个1x1的卷积层来代替了全连接层,这样做的目的是为了让网络可以接受不同维度的输入。

stacked hourglass network

Stacked Hourglass Module的架构很通俗易懂。首先它通过卷积层下采样,再通过最近邻的方法上采样。Upsampling的过程中,再将直接下采样过程中对应大小的特征图直接加到上采样的特征图上。通过最后一个上采样层,从而恢复回原来图像大小。最后,再加上一些1*1的卷积层,输出最终的heatmap。如果需要堆叠许多这样的沙漏模块的话,也可以等到堆叠完总网络,再最后再加上这些小卷积。
十分类似UNet
在这里插入图片描述

小点

stacked hourglass network 使用的是 immediate supervision,因为它是由很多个hourglass network组合而成,在每一个hourglass network输出之后就计算损失,而不是到跑完所有的hourglass networks都跑完之后在计算损失。
在这里插入图片描述
在这里插入图片描述

伪代码

#一个Stacked Hourglass模块,里面把普通的卷积层用残差卷积模块来替代了,u型架构则采用了递归实现
#(此代码只负责讲清楚思路,因此只包含了最基本的网络,而具体工程实现比这个要来的复杂,会加入更多卷积以及归一化层)
class Hourglass(nn.Module):def __init__(self, n, channel, increase=0):super(Hourglass, self).__init__()#先池化降分辨率self.pool = Pool(2, 2)#用residual_module来Downsampleself.conv = Residual(channel, channel)self.n = n# Recursive hourglass: 使用递归的方式完成u型结构,每次向内递归一层,直到n=1不能再套u型层,此时就通过卷积层。if self.n > 1:self.smaller_hourglass = Hourglass(n-1, channel)else:self.smaller_hourglass = Residual(channel, channel)#最近邻上采样,恢复分辨率,对应于self.pool的池化层self.up2 = nn.Upsample(scale_factor=2, mode='nearest')def forward(self, x):#先池化降低分辨率,完成下采样pool = self.pool(x)#用residual_module来Downsampleconv  = self.conv(pool)#hourglass,不过参数n=n-1low = self.smaller_hourglass(conv)#最近邻上采样up  = self.up(low)#将原图像和操作后图像相加,完成u型结构return x + up

参考文章

堆叠沙漏网络(stacked hourglass network)
Stacked Hourglass Networks精讲(含代码分析+Colab)- 姿态估计论文精读——文章不错,里面有Hourglass的贡献及可以改进的地方


http://www.ppmy.cn/news/1525563.html

相关文章

漫谈设计模式 [21]:备忘录模式

引导性开场 菜鸟:老鸟,我最近在一个项目中遇到了一个问题。我需要实现一个功能,能够让用户在修改数据后撤销或恢复到之前的状态。你有什么好的建议吗? 老鸟:这听起来像是一个很经典的问题。你有没有听说过设计模式中…

个性化、持续性阅读 学生英语词汇量自然超越标准

2024年秋季新学年,根据2022版《义务教育英语课程标准》全新修订的英语新版教材开始投入使用,标志着我国英语教育迈入了一个以应用为导向、注重综合素养培养的新阶段。 新版教材的变革不仅仅是一次词汇量的简单增加,更是一场从应试到应用的深…

Windows Python 指令补全方法

网络上搜集的补全代码 # python startup file import sys import readline import rlcompleter import atexit import os# tab completion readline.parse_and_bind(tab: complete) # history file histfile os.path.join(os.environ[HOMEPATH], .pythonhistory) try:readline…

数学分析原理答案——第三章 习题18

【第三章 习题18】 把习题16中的递推公式换成 x n 1 p − 1 p x n α p x n − p 1 x_{n 1} \frac{p - 1}{p}x_{n} \frac{\alpha}{p}x_{n}^{- p 1} xn1​pp−1​xn​pα​xn−p1​ 这里 p p p是固定的正整数,描述该序列的性质 【解】 若 x 1 > x p x…

Linux命令分享 三 (ubuntu 16.04)

1、‘>’ >>输出重定向 用法:命令 参数 > 文件 ls > a.txt ‘>’ 将一个命令的结果不输出到屏幕上,输出到文件中,如果文件不存在就创建文件,如果存在就覆盖文件。 ls >> a.txt ‘>>’ 如果文件不存…

注册安全分析报告:熊猫频道

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

JS设计模式之装饰者模式:优雅的给对象增添“魔法”

引言 在前端开发中,我们经常会遇到需要在不修改已有代码的基础上给对象添加新的行为或功能的情况。而传统的继承方式并不适合这种需求,因为继承会导致类的数量急剧增加,且每一个子类都会固定地实现一种特定的功能扩展。 装饰者模式则提供了…

使用Let’s Encrypt 配置 SSL 证书去除浏览器不安全告警

Let’s Encrypt是什么 https://letsencrypt.org/zh-cn/about/如何操作进行配置实现ssl认证 使用 certbot 获取 Let’s Encrypt 的免费 SSL 证书 更新系统软件包 sudo yum update -y安装 EPEL 仓库(Certbot 通常位于 EPEL 仓库中): sudo yum

使用Pandas高效读取和处理Excel数据

目录 引言 安装必要的库 示例代码 注 引言 在数据科学和数据分析领域,Excel文件是一种常见的数据存储格式。由于其易于编辑和分享的特点,Excel成为了许多企业和组织中数据记录的标准工具。然而,在进行大规模的数据分析时,手动处理…

栈OJ题——用栈实现队列

文章目录 一、题目链接二、解题思路三、解题代码 一、题目链接 用栈实现队列 二、解题思路 三、解题代码 class MyQueue {public Stack<Integer> stack1 ;public Stack<Integer> stack2;public MyQueue() {stack1 new Stack<>();stack2 new Stack<&g…

网络药理学:2、文章基本思路、各个数据库汇总与比对、其他相关资料(推荐复现的文章、推荐学习视频、论文基本框架、文献基本知识及知网检索入门)

一、文章基本思路&#xff08;待更&#xff09; 一篇不含分子对接和实验的纯网络药理学文章思路如下&#xff1a; 即如下&#xff1a; 二、 各个数据库&#xff08;待更&#xff09; 三、其他相关资料 1.推荐复现的文章 纯网络药理学分子对接&#xff1a;知网&#xff1…

[项目] - Calc计算器

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天来尝试模拟windows 下的clac计算器 绘制计算器 拖动工具箱的Edit Control输入框、Button按钮 制作计算器界面需要将Edit Control输入框 拉长&#xff0c;将多行、只读 设置为True整体计算机的控件ID&#xff1a;I…

算法题:找出一个数组中,出现次数为奇数次的数。详细解析,加个人理解。

数组中&#xff0c;出现奇数次的数 从一个数组中找出出现了奇数次的数字&#xff0c;要求&#xff1a; 时间复杂度&#xff1a;O(n)空间复杂度&#xff1a;O(1) 题目 从数组中找出一个出现奇数次的数字&#xff0c;如&#xff1a; {1, 2, 2, 1, 3, 1, 1, 3, 3}&#xff0c;结…

如何下载各个版本的tomcat-比如tomcat9

1&#xff0c;找到tomcat官网https://tomcat.apache.org/ Apache Tomcat - Welcome! 找到tomcat9&#xff0c;或者archives 1.1&#xff0c;找到对应版本 1.2&#xff0c;找到小版本 1.3&#xff0c;找到bin 2&#xff0c;Index of /dist/tomcat/tomcat-9/v9.0.39/bin 2.1&a…

【网络】TCP/IP五层网络模型:应用层

互联网中&#xff0c;主流的是 TCP/IP 五层协议 5 G/4 G 上网&#xff0c;是有自己的协议栈&#xff0c;要比 TCP/IP 更复杂&#xff08;能够把 TCP/IP 的一部分内容给包含进去了&#xff09; 应用层 可以代表我们所编写的应用程序&#xff0c;只要应用程序里面用到了网络通…

2024桥梁科技两江论坛——第二届桥梁工程安全与韧性学术会议

文章目录 一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询 一、会议详情 二、重要信息 大会官网&#xff1a;https://ais.cn/u/vEbMBz提交检索&#xff1a;EI Compendex、IEEE Xplore、Scopus 三、大会介绍 2024年桥梁科技两江论坛——第二届桥梁工程…

用Postman调试是英文导致系统语言变成英文,SQL语句查询不出来对应的字段,出现SAP系统里面调试是有值的,但是外部调用是没有值的!

用Postman调试是英文导致系统语言变成英文&#xff0c;SQL语句查询不出来对应的字段&#xff0c;出现SAP系统里面调试是有值的&#xff0c;但是外部调用是没有值的&#xff01;后面调试了非常久&#xff0c;一直以为是有特殊字符导致的&#xff0c;后面处理了特殊字符之后还是不…

视觉检测中的深度学习应用

引言 视觉检测是计算机视觉的一个重要领域&#xff0c;涉及到对图像或视频流进行分析和理解。随着深度学习技术的迅猛发展&#xff0c;视觉检测领域发生了革命性的变化。深度学习通过使用复杂的神经网络模型&#xff0c;尤其是卷积神经网络&#xff08;CNNs&#xff09;&#…

Python爬虫案例六:抓取某个地区某月份天气数据并保存到mysql数据库中

测试链接&#xff1a;https://lishi.tianqi.com/guangzhou/202003.html源码&#xff1a; import requests, pymysql from lxml import etree class ThSpider(object):def __init__(self):# 初始化self.month_list [202101, 202102, 202103, 202104, 202105, 202106, 202107, 2…

数据结构应用实例(六)——最短路径

Content: 一、题目描述二、算法思想三、代码实现四、小结 一、题目描述 实现求最短路径的两种算法&#xff1a;Dijsktra 算法和 Floyd 算法&#xff1b; 二、算法思想 Dijkstra算法 求一个点到图中其余节点的最短路径&#xff1b; 首先设置三个辅助数组&#xff1a;   (1) f…