热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

resnet,retinanet,fpn网络结构及pytorch实现代码

关于resnet,其巧妙地利用了shortcut连接,解决了深度网络中模型退化的问题。网络结构如下FPN的目的熟悉fasterrcnn的人都知道,fasterrcnn利用的是vgg

关于resnet,其巧妙地利用了shortcut连接,解决了深度网络中模型退化的问题。网络结构如下

resnet,retinanet,fpn网络结构及pytorch实现代码

FPN的目的

熟悉faster rcnn的人都知道,faster rcnn利用的是vgg的最后卷积特征,大小是7*7*512.而这造成了一个问题,经过多次卷积之后的特征通常拥有很大的感受野,它们比较适合用来检测大物体,或者说,它们在检测小物体任务上效果很差,所以像ssd和fpn这样的网络思想就是将前面和后面的卷积层都拿出来,组成一个multiscale 结果,既能检测大物体,也能检测小物体。

基于这个思想,fpn从resnet 34层模型构造了一组新的特征,p2,p3,p4,p5,每一个p_i都是resnet中不同卷积层融合的结果,这保证了他们拥有多尺度信息,他们拥有相同的维度,都是256。

resnet,retinanet,fpn网络结构及pytorch实现代码

bottom-up就是简单的使用了ResNet34,主要是top-down中的思想。
在上文中我们提到c2-c5的大小和维度分别是56x56x64,28x28x128,14x14x256,7x7x512,所以在top-down中,先用了一个1x1x256的卷积将c5:7x7x512 变成了m5:7x7x256, 每一个m之后都接了一个3x3x256卷积用来消除不同层之间的混叠效果,其实也就是缓冲作用。
关于p4的构造,我们先将m5的feature map加倍,用简单的nearest neighbour upsamping方法就行,这样m5就变成了m5’:14x14x256,同时c4:14x14x256经过1x1x256得到c4’:14x14x256, 将m5’+c4’, element-wisely,就可以得到m4:14x14x256。

所以最后的p2-p5大小分别是
56x56x256。,28x28x256,14x14x256,7x7x256。

在理解了fpn的基本操作之后,我们来看看RetineNet里面,多层次特征是怎么得到的。

首先,retinanet中使用的是resnet50,上面的图片已经给出了resnet50的结构了,其与resnet34大同小异,如何用c2-c5构造p_i是retinanet的一个特点。特别地,在retinanet中新增了p6和p7,原文解释假如p6和p7就是为了让模型更好地检测大物体,因为感受野大,而不用p2的原因是p2的feature map太大导致计算量太大。

所以如果想检测小物体,理论上有两种方法,一种是加入p2然后去掉p6和p7,但是这个代价是引入了128*128的feature map,这样在p2这一层生成的anchor数目是128*128*9=147456,有点过错了,算起来很慢的。另一种方法就是在设置anchor的base size和ratios还有scales让anchor尽量小一点。

 

 


推荐阅读
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
  • 对于众多创业公司而言,选择小程序或小视频的发展方向至关重要。本文将深入分析小程序和小视频的特点、优势及局限,帮助创业者做出更明智的选择。 ... [详细]
  • Panabit应用层流量管理解决方案
    Panabit是一款国内领先的应用层流量管理解决方案,提供高度开放且免费的专业服务,尤其擅长P2P应用的精准识别与高效控制。截至2009年3月25日,该系统已实现对多种网络应用的全面支持,有效提升了网络资源的利用效率和安全性。 ... [详细]
  • 三角测量计算三维坐标的代码_双目三维重建——层次化重建思考
    双目三维重建——层次化重建思考FesianXu2020.7.22atANTFINANCIALintern前言本文是笔者阅读[1]第10章内容的笔记,本文从宏观的角度阐 ... [详细]
  • Ping 命令的高级用法与技巧
    本文详细介绍了 Ping 命令的各种高级用法和技巧,帮助读者更好地理解和利用这一强大的网络诊断工具。 ... [详细]
  • 微信小程序详解:概念、功能与优势
    微信公众平台近期向200位开发者发送了小程序的内测邀请。许多人对微信小程序的概念还不是很清楚。本文将详细介绍微信小程序的定义、功能及其独特优势。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 蚂蚁课堂:性能测试工具深度解析——JMeter应用与实践
    蚂蚁课堂:性能测试工具深度解析——JMeter应用与实践 ... [详细]
  • 题目解析给定 n 个人和 n 种书籍,每个人都有一个包含自己喜好的书籍列表。目标是计算出满足以下条件的分配方案数量:1. 每个人都必须获得他们喜欢的书籍;2. 每本书只能分配给一个人。通过使用深度优先搜索算法,可以系统地探索所有可能的分配组合,确保每个分配方案都符合上述条件。该方法能够有效地处理这类组合优化问题,找到所有可行的解。 ... [详细]
  • Android平台下的人脸识别应用:FaceU的深度解析与技术探讨
    FaceU是一款由今日头条脸萌团队开发的拍照相机应用,支持iOS和Android平台。自2014年底启动开发以来,FaceU通过其创新的人脸识别技术和丰富的滤镜效果,在2015年9月迅速获得了用户的广泛认可。本文将深入解析FaceU的技术架构和实现方法,探讨其在Android平台下的应用前景和优化策略。 ... [详细]
  • 在序章二中,我们了解到Bingo是一位重度强迫症患者,对细节有着极致的追求。他不仅能在深夜专注编程,还能在假期留校进行项目布局,甚至会在凌晨骑行上山观赏日出,与朋友一同畅游钱塘江。他的性格豪爽大方,乐于与他人分享自己的经验和心得,撰写了一本名为《从零开始》的著作。 ... [详细]
  • 在2019年寒假强化训练中,我们深入探讨了二分算法的理论与实践应用。问题A聚焦于使用递归方法实现二分查找。具体而言,给定一个已按升序排列且无重复元素的数组,用户需从键盘输入一个数值X,通过二分查找法判断该数值是否存在于数组中。输入的第一行为一个正整数,表示数组的长度。这一训练不仅强化了对递归算法的理解,还提升了实际编程能力。 ... [详细]
  • 本文深入解析了 Kuangbin 数学训练营中的经典问题——Ekka Dokka,并通过详细的代码示例和数学推导,探讨了该问题的多种解法及其应用场景。通过对算法的优化和扩展,本文旨在为读者提供全面的理解和实用的参考。 ... [详细]
  • 经过两天的努力,终于成功解决了半平面交模板题POJ3335的问题。原来是在`OnLeft`函数中漏掉了关键的等于号。通过这次训练,不仅加深了对半平面交算法的理解,还提升了调试和代码实现的能力。未来将继续深入研究计算几何的其他核心问题,进一步巩固和拓展相关知识。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
author-avatar
尹子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有