基于深度学习的目标检测算法调研

2024-06-22 14:58

本文主要是介绍基于深度学习的目标检测算法调研,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 0 目标检测的任务概述
  • 1 基于深度学习的「目标检测」算法
    • 1.1 两刀流 R-CNN
      • 1.1.1 R-CNN / 2013
      • 1.1.2 SPP Net / 2014
      • 1.1.3 Fast R-CNN / 2015
      • 1.1.4 Faster R-CNN / 2015
      • 1.1.5 Mask R-CNN / 2017
      • 1.1.6 二刀流小结
    • 1.2 一刀流 YOLO
      • 1.2.1 YOLO / 2015
      • 1.2.2 SSD / 2015
      • 1.2.3 YOLO9000 / 2016
  • 2 总结
  • 参考:

0 目标检测的任务概述

如何从图像中解析出可供计算机理解的信息,是机器视觉的中心问题。理解图像,有三个主要的层次:

理解图像

  1. 一是分类(Classification),即是将图像结构化为某一类别的信息,用事先确定好的类别(string)来描述图片。这一任务是最简单、最基础的图像理解任务,也是深度学习模型最先取得突破和实现大规模应用的任务。
  2. 二是检测(Detection)。检测则关注特定的物体目标,要求同时获得这一目标的类别信息和位置信息。相比分类,检测需要从背景中分离出感兴趣的目标,并确定这一目标的类别和位置。
  3. 三是分割(Segmentation)。分割包括语义分割(semantic segmentation)和实例分割(instance segmentation),前者要求分离开具有不同语义的图像部分,而后者是检测任务的拓展,要求描述出目标的轮廓(相比检测框更为精细)。分割是对图像的像素级描述,它赋予每个像素类别意义,适用于理解要求较高的场景,如无人驾驶中对道路和非道路的分割。

1 基于深度学习的「目标检测」算法

深度学习时代来临后,「目标检测」算法大家族主要划分为两大派系,一个是 R-CNN 系两刀流派,另一个则是以 YOLO 为代表的一刀流派。下面分别解释一下 两刀流一刀流:

两刀流

顾名思义,两刀解决问题。其实两刀流 更符合人们解决图像问题的思路:

  1. 生成候选区域(Region Proposal)
  2. 放入分类器分类并微调边框位置

这种流派的算法都离不开 Region Proposal(候选区域生成) ,即是优点也是缺点,主要代表人物就是 R-CNN 系。

一刀流

顾名思义,一刀解决问题,直接对预测的目标物体进行回归
回归解决问题简单快速,主要代表人物是 YOLOSSD


两种流派的不同:

  • 两刀流主要倾向准,
  • 一刀流主要倾向快。

无论 两刀流 还是 一刀流,他们都是在同一个天平下选取一个平衡点、或者选取一个极端—— 要么准,要么快。

1.1 两刀流 R-CNN

R-CNN 其实是一个很大的家族,桃李满天下。在此,我们只探讨 R-CNN 直系亲属,他们的发展顺序如下:

R-CNN -> SPP Net -> Fast R-CNN -> Faster R-CNN -> Mask R-CNN`

下面对其分别简单介绍:

1.1.1 R-CNN / 2013

论文:Rich feature hierarchies for accurate object detection and semanti

这篇关于基于深度学习的目标检测算法调研的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1084617

相关文章

R语言中的正则表达式深度解析

《R语言中的正则表达式深度解析》正则表达式即使用一个字符串来描述、匹配一系列某个语法规则的字符串,通过特定的字母、数字及特殊符号的灵活组合即可完成对任意字符串的匹配,:本文主要介绍R语言中正则表达... 目录前言一、正则表达式的基本概念二、正则表达式的特殊符号三、R语言中正则表达式的应用实例实例一:查找匹配

C++ 右值引用(rvalue references)与移动语义(move semantics)深度解析

《C++右值引用(rvaluereferences)与移动语义(movesemantics)深度解析》文章主要介绍了C++右值引用和移动语义的设计动机、基本概念、实现方式以及在实际编程中的应用,... 目录一、右值引用(rvalue references)与移动语义(move semantics)设计动机1

Python实现快速扫描目标主机的开放端口和服务

《Python实现快速扫描目标主机的开放端口和服务》这篇文章主要为大家详细介绍了如何使用Python编写一个功能强大的端口扫描器脚本,实现快速扫描目标主机的开放端口和服务,感兴趣的小伙伴可以了解下... 目录功能介绍场景应用1. 网络安全审计2. 系统管理维护3. 网络故障排查4. 合规性检查报错处理1.

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

Java枚举类型深度详解

《Java枚举类型深度详解》Java的枚举类型(enum)是一种强大的工具,它不仅可以让你的代码更简洁、可读,而且通过类型安全、常量集合、方法重写和接口实现等特性,使得枚举在很多场景下都非常有用,本文... 目录前言1. enum关键字的使用:定义枚举类型什么是枚举类型?如何定义枚举类型?使用枚举类型:2.

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)