热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【目标检测重思考系列】一、目标检测的网络分解

本文转自:https://zhuanlan.zhihu.com/p/49605144本文主要将目标检测网络分为了若干个模块,并对每一块进行了概述,这样方便将各种不同网络的相同模块部

本文转自:https://zhuanlan.zhihu.com/p/49605144

本文主要将目标检测网络分为了若干个模块,并对每一块进行了概述,这样方便将各种不同网络的相同模块部分做比较,以获得对于不同部分更深刻的理解。本文可以看做一篇提纲,后续将不断丰满每一模块的内容。

 

目标检测分为两个阶段:

  • 训练
  • 测试

训练阶段重要的部分是:

  • data
    • 对于神经网络而言,所需要的不变性一般都会encode到数据中,比如需要神经网络对图像色彩畸变具有不变性,那么就要对图像做色彩畸变增强;需要神经网络对尺度具有不变性,那么就要对图像做尺度增强。
    • data是神经网络的练习题,不合理的练习题不利于神经网络学习,因此需要对练习题进行筛选,去掉不合理的数据。
  • network
    • network分为backbone和head。backbone用来学习图像特征,一般复用图像分类网络;head从图像特征中学习检测目标,例如框的坐标、类别等。
  • loss
    • 这里的loss是广义的,包括整个梯度回传的过程。

测试阶段重要的部分是:

  • postprocess
    • 即从head输出的特征图中获取最终输出框的过程。

综上,整个目标检测有四个重要的部分:

  1. data
  2. network
  3. loss
  4. postprocess

data

  • 数据增强
    • 图像色彩增强
      • 饱和度
      • 色相
      • 明度
    • random crop
    • 缩放
    • 随机翻转
    • random erase
    • 等等
  • 数据选择
    • 每个检测网络所能检测物体的尺度是范围的,超过这个范围的框,检测网络便无能无力,例如太大、太小。对于检测网络无能为力的框,喂给检测网络学习,不仅不能无助于检测网络的学习,还会适得其反,因此需要将超过检测网络能力范围的框丢弃。

#faceboxes

network

  • backbone
    • VGG
    • darknet
    • Resnet
    • inception
    • xception
    • mobilenet
    • 等等
  • head
    • 单尺度head
    • SSD head
    • FPN head

检测网络可以看作一条网路,信息在其中流动,检测网络的表达能力就像带宽一样,而带宽由网路中带宽最小的地方决定。检测网络也类似,backbone和head的带宽应该匹配,不然大带宽的部分便只能白白浪费资源。

资源利用率的角度来看,backbone和head带宽匹配会提高资源利用率。例如backbone表达能力很强,但是head表达能力很弱,那么整体检测网络表现会受head的表达能力所限,backbone大于head表达能力的部分便被浪费掉;或者backbone表达能力很弱,但是head表达能力很强,那么整体检测网络表现会被backbone限制住,head大于backbone表达能力的部分便被浪费掉。

检测网络整体表达能力的角度来看,backbone和head带宽匹配才能最大化整个检测网络的表达能力。比如,为了增强检测网络的表达能力,只是提高backbone的表达能力有时候并不会奏效,这个时候从head下手也许会事半功倍。

#DSSD

loss

  • anchor和gt的匹配策略
    • faster rcnn系列
    • yolo系列
  • loss函数的选择
    • 例如SmoothL1Loss函数用来计算坐标loss会比较稳定
  • 不平衡问题
    • loss之间不平衡
      • loss加权
    • loss内不平衡
      • 样本重采样
      • 样本加权
      • OHEM
      • focal loss

#light head

postprocess

  • 取框的策略
    • 即从检测网络输出的特征图中decode出检测框。
    • 之前优化pytorch版本的yolov2时,发现取框策略对mAP有一些影响。
  • 检测框去重
    • 经过上一步取框后,图像上一个目标上会有N个框,我们需要去掉重复的框
    • nms、soft nms、softer nms、iou-net、fitness nms、relation network

推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
author-avatar
书友10689978
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有