热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

目标检测入门记2——achor和典型网络结构

本文依旧属于目标检测入门系列,是学习DataWhale的动手学CV-PyTorch版的总结与感悟。 一个目标检测网络的诞生 咱也目标检测刚入门,咱也没研究过其他网络&#x

本文依旧属于目标检测入门系列,是学习DataWhale的动手学CV-PyTorch版的总结与感悟。


一个目标检测网络的诞生

咱也目标检测刚入门,咱也没研究过其他网络,这里就拿Datawhale教程中的SSD网络改动版Tiny-Detector来举例,其他网络应该也是差不多的。

与其他的深度神经网络算法类似,目标检测网络中也需要用CNN提取特征,提取特征可以用各种在分类任务上效果出众的网络作为backbone,比如用VGG16作为Backbone,去除后面的全连接层的分类部分,输入一张大小为224x224的图像,经过特征提取后得到一个7x7的特征图,如下图:
在这里插入图片描述

Anchor

无论搞没搞过目标检测,只要是CV领域的,大家对anchor都应该有所耳闻,因为很多公众号文章都会提到这个词。那么anchor到底是什么?

所谓anchor即先验框,这是人为给定的一组具有不同形状、不同大小的框。因为它形状多样,所以可以基本满足很多目标的boundingbox(边界框)的形状;因为它大小多样,所以可以满足多尺度的检测需求。下图中就展示了一组以狗为中心的anchor。

在这里插入图片描述
再回到刚才的问题,如何从7x7的特征图上得到图像上目标的位置呢?我们事先会定义一组anchor,然后在每个位置上全部用一遍这组anchor,每个anchor在一个位置上都会根据事先定义的框的大小生成一组图,这组图反映了以当前位置为中心的一组anchor所框区域。我们就是要利用anchor生成的这组位置,来计算里面包含的目标信息,以及通过回归的方式调整边界框,让其能与实际目标的边界框尽可能重合。

回归的方式主要就到目标检测入门记1中边界框坐标的两种表示的第二种啦,具体为何要这样计算,我认为更多的可能是在数值计算上更容易回归吧。
boundingbox坐标的表示方式

分类头和回归头

用特征提取网络获得特征图之后,需要再通过两个卷积层,分别输出分类头和回归头,分类头对应图中目标的类别信息,回归头对应目标的边界框。
在这里插入图片描述

回归头

它的作用是预测anchor框和bbox_gt之间的偏移量

用backbone进行特征提取之后,再用3x3的卷积进行计算,得到的特征图大小不变,但通道数变了,比如原来backbone输出特征图上每个点处生成9个候选框,每个候选框输出偏移量gcx,gcy,gx,ghg_{cx},g_{cy},g_{x},g_{h}gcx,gcy,gx,gh,那么输出特征图的通道数就为36,每4个为一组代表一个候选框的输出偏移量回归值。

分类头

分类头也是用backbone提取特征,然后再用3x3的卷积进行运算,输入和输出特征图的尺寸相同。如果总共有21类,则输出特征图的通道数为21*9,每21个元素代表一个候选框输出的类别的one-hot编码

实际使用中,分类头和会国土的输出并非上面这样。采用7x7x(anchor_num*elem_num)的方式比较直观,但希望每个anchor的输出独自成为一个维度,因此通常将7x7xanchor_num展平成一个元素,再接一个elem_num的维度作为这个anchor的输出。

目标检测网络全貌

在这里插入图片描述


推荐阅读
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • 智能车间调度研究进展
    本文综述了基于强化学习的智能车间调度策略,探讨了车间调度问题在资源有限条件下的优化方法。通过数学规划、智能算法和强化学习等手段,解决了作业车间、流水车间和加工车间中的静态与动态调度挑战。重点讨论了不同场景下的求解方法及其应用前景。 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 2017年人工智能领域的十大里程碑事件回顾
    随着2018年的临近,我们一同回顾过去一年中人工智能领域的重要进展。这一年,无论是政策层面的支持,还是技术上的突破,都显示了人工智能发展的迅猛势头。以下是精选的2017年人工智能领域最具影响力的事件。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 本题探讨了在大数据结构背景下,如何通过整体二分和CDQ分治等高级算法优化处理复杂的时间序列问题。题目设定包括节点数量、查询次数和权重限制,并详细分析了解决方案中的关键步骤。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 随着生活节奏的加快和压力的增加,越来越多的人感到不快乐。本文探讨了现代社会中导致人们幸福感下降的各种因素,并提供了一些改善建议。 ... [详细]
  • 由二叉树到贪心算法
    二叉树很重要树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。单就面试而言,在 ... [详细]
  • 如何使用 CleanMyMac X 2023 激活码解锁完整功能
    本文详细介绍了如何使用 CleanMyMac X 2023 激活码解锁软件的全部功能,并提供了一些优化和清理 Mac 系统的专业建议。 ... [详细]
  • 本文档旨在帮助开发者回顾游戏开发中的人工智能技术,涵盖移动算法、群聚行为、路径规划、脚本AI、有限状态机、模糊逻辑、规则式AI、概率论与贝叶斯技术、神经网络及遗传算法等内容。 ... [详细]
  • 在上一篇文章中,我们初步探讨了神经网络的基础概念,并通过一个简单的例子——将摄氏度转换为华氏度——介绍了单个神经元的工作原理。本文将继续探索神经网络的应用,特别是如何构建一个基本的分类器。 ... [详细]
  • 在Ubuntu 16.04中使用Anaconda安装TensorFlow
    本文详细介绍了如何在Ubuntu 16.04系统上通过Anaconda环境管理工具安装TensorFlow。首先,需要下载并安装Anaconda,然后配置环境变量以确保系统能够识别Anaconda命令。接着,创建一个特定的Python环境用于安装TensorFlow,并通过指定的镜像源加速安装过程。最后,通过一个简单的线性回归示例验证TensorFlow的安装是否成功。 ... [详细]
  • 回顾与学习是进步的阶梯。再次审视卷积神经网络(CNNs),我对之前不甚明了的概念有了更深的理解。本文旨在分享这些新的见解,并探讨CNNs在图像识别和自然语言处理等领域中的实际应用。 ... [详细]
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社区 版权所有