目标检测:1预备知识

开始涉及目标检测内容,总结一下学习记录

1、目标检测的基本概念

(一)什么是目标检测

目标检测(Object Detection) 的任务是找出图像中所有感兴趣的目标(物体),不同于分类和回归问题,目标检测还需要确定目标在图像中的位置 (定位),而确定识别目标的类别和位置 (分类和定位),是计算机视觉领域的核心问题之一。

(二)目标检测的任务

计算机视觉中关于图像识别有四大类任务:

(1)分类-Classification:解决“是什么?”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。

(2)定位-Location:解决“在哪里?”的问题,即定位出这个目标的的位置。

(3)检测-Detection:解决“在哪里?是什么?”的问题,即定位出这个目标的位置并且知道目标物是什么。

(4)分割-Segmentation:解决“每一个像素属于哪个目标物或场景”的问题。从像素级别回答了“在哪里?是什么”的问题

(如下图)

 

2、深度学习框架

        深度学习框架是进行深度学习研究和开发的必备工具,它提供了一组完整的工具和接口,帮助用户轻松构建和训练复杂的深度学习模型。以下是一些主流的深度学习框架:

  • TensorFlow:由Google开发的TensorFlow是一款支持分布式训练的深度学习框架,具有高度的灵活性和可扩展性。它支持使用Python、C++和Java等语言进行模型的开发和实现,并提供了丰富的API和工具来简化复杂的深度学习任务。
  • PyTorch:由Facebook开发的PyTorch是一款简单易用的深度学习框架,支持动态计算图,使得模型的调试和开发更加直观简单。PyTorch还支持GPU加速,可以充分利用NVIDIA显卡等硬件进行高效的计算。
  • Keras:Keras是一个高层次的深度学习框架,它提供了简洁的API和模块化的设计,使得模型的构建和训练变得更加容易。Keras支持多种后端(如TensorFlow、Theano和CNTK),可以轻松地扩展到不同的深度学习平台。
  • Theano:Theano是一个Python库,用于定义、优化和计算数学表达式,特别是多维数组(张量)。它是一个强大的深度学习框架,尤其适合处理大型多维数组数据。
  • Caffe:Caffe是一个快速开源深度学习框架,适用于卷积神经网络(CNN)和循环神经网络(RNN)等模型。它的设计简洁直观,易于使用和扩展。
  • TensorRT针对 NVIDIA 系列显卡具有其他框架都不具备的优势,如果运行在 NVIDIA 显卡上, TensorRT 一般是所有框架中推理最快的。一般的主流的训练框架如T ensorFlow 和 Pytorch 都能转换成 TensorRT 可运行的模型。当然了,TensorRT 的限制就是只能运行在 NVIDIA 显卡上,同时不开源 kernel。
  • ONNXRuntime是可以运行在多平台 (Windows,Linux,Mac,Android,iOS) 上的一款推理框架,它接受 ONNX 格式的模型输入,支持 GPU 和 CPU 的推理。唯一不足就是 ONNX 节点粒度较细,推理速度有时候比其他推理框架如 TensorRT 较低。
  • OpenVINO是 Intel 家出的针对 Intel 出品的 CPU 和 GPU 友好的一款推理框架,同时它也是对接不同训练框架如 TensorFlow,Pytorch,Caffe 等。不足之处可能是只支持 Intel 家的硬件产品。
  • NCNN,MNN不同于以上三款推理框架推理框架推理框架,这两款框架都是针对手机端的部署。ncnn 是腾讯开源的,MNN 是阿里开源。ncnn的 优势是开源较早,有非常稳定的社区,开源影响力也较高。MNN 开源略晚,但也是目前比较有影响力的手机端推理框架。

3、深度学习模型


        深度学习模型是由深度学习框架实现的各种算法模型,如卷积神经网络(CNN)、循环神经网络(RNN)、转化器(Transformer)等。以下是一些常见的深度学习模型:

  • CNN:CNN是一种广泛应用于计算机视觉领域的深度学习模型,它利用局部连接和卷积运算有效地捕捉图像或视频中的特征。经典的CNN模型包括LeNet、AlexNet、VGG、GoogLeNet和ResNet等。
  • RNN:RNN是一种适用于序列数据的深度学习模型,它通过将前一个时间步长的隐藏状态输入到当前时间步长,从而捕捉序列数据中的时间依赖关系。经典的RNN模型包括Vanilla RNN、LSTM和GRU等。
  • Transformer:Transformer是一种基于自注意力机制的深度学习模型,它在处理长序列数据和全局信息时具有强大的能力。经典的Transformer模型包括Encoder-Decoder架构和Transformer Encoder等。
  • BERT:BERT是一种预训练的深度学习模型,旨在解决自然语言理解任务中的两个核心问题:语言的表示问题和语言的解码问题。它通过预训练的方式学习语言中的上下文信息,并取得了在多项自然语言处理任务中的显著性能。
  • GAN:GAN是一种生成式深度学习模型,由两个神经网络组成:生成器(Generator)和判别器(Discriminator)。生成器的目标是生成逼真的假数据,而判别器的目标是区分真实数据和生成的数据。GAN在图像生成、数据补全和强化学习等领域具有广泛的应用。
  • YOLO算法的全称是You Only Look Once,这也正是它的特点所在:只需一次前向传递,即可完成目标检测任务。

4、框架与模型的关系


        深度学习框架和模型之间存在明显的联系和区别。框架是一个开发环境,提供了构建和训练深度学习模型的工具和接口;而模型是针对特定任务的学习算法,由框架实现和支持。

深度学习框架通常包括以下功能:

模型的定义、构建和训练:框架提供了各种API和工具来帮助用户定义、构建和训练各种深度学习模型。
优化器和损失函数:框架提供了各种优化器和损失函数来帮助用户进行模型的训练和优化。
评估和测试:框架提供了各种工具来评估模型的性能和进行模型的测试。
可视化和调试:框架提供了各种可视化工具来帮助用户进行模型的调试和可视化。

5、总结


检测器通常能够被分为两类,一类是two-stage检测器,最具代表的为faster R-CNN;另一类是one-stage检测器,包括YOLO,SSD等。一般来说,two-stage检测器具有高定位和识别准确性,而one-stage则有速度上的优势。其在结构上的区别就是two-stage检测器有一个生成region proposal的步骤,然后对其进行预测和分类;而one-stage则是直接对预测框进行回归和分类预测。

Two-stage模型:Faster RCNN、Cascade RCNN、MaskRCNN

One-stage模型:Yolo系列、SSD、RetinaNet、FCOS、CornerNet

一个完整的深度识别应该包含两个主要部分,即训练(training)和推理(inference)

训练(Training)

打个比方,你现在想要训练一个能区分苹果还是橘子的模型,你需要搜索一些苹果和橘子的图片,这些图片放在一起称为训练数据集(training dataset),训练数据集是有标签的,苹果图片的标签就是苹果,橘子亦然。一个初始神经网络通过不断的优化自身参数,来让自己变得准确,可能开始10张苹果的照片,只有5张被网络认为是苹果,另外5张认错了,这个时候通过优化参数,让另外5张错的也变成对的。这整个过程就称之为训练(Traning)。

推理(Inference)

你训练好了一个模型,在训练数据集中表现良好,但是我们的期望是它可以对以前没看过的图片进行识别。你重新拍一张图片扔进网络让网络做判断,这种图片就叫做现场数据(live data),如果现场数据的区分准确率非常高,那么证明你的网络训练的是非常好的。我们把训练好的模型拿出来遛一遛的过程,称为推理(Inference)。

部署(deployment)

想要把一个训练好的神经网络模型应用起来,需要把它放在某个硬件平台上并保证其能运行,这个过程称之为部署(deployment)。

下面会慢慢学习具体内容。下一课讲解数据集                      

                        

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/364207.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

react-virtualized实现行元素不等高的虚拟列表滚动

前言: 当一个页面中需要接受接口返回的全部数据进行页面渲染时间,如果数据量比较庞大,前端在渲染dom的过程中需要花费时间,造成页面经常出现卡顿现象。 需求:通过虚拟加载,优化页面渲染速度 优点&#xff1…

如何批量删除文件名里的多余文字?

如何批量删除文件名里的多余文字?删除文件名中多余的文字可以提高文件管理的效率和可读性。简洁性:删除多余的文字可以使文件名更简洁,减少冗余信息。这样可以更轻松地浏览和识别文件,尤其是当文件数量较多时。可读性:…

tcp/ip模型中,帧是第几层的数据单元?

在网络通信的世界中,TCP/IP模型以其高效和可靠性而著称。这个模型是现代互联网通信的基石,它定义了数据在网络中如何被传输和接收。其中,一个核心的概念是数据单元的层级,特别是“帧”在这个模型中的位置。今天,我们就…

代码随想录day17--二叉树的应用5

LeetCode654.最大二叉树 题目描述: 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后…

后端性能优化的一些总结

目录 1、背景 2、优化实现 2.1查询数据表速度慢 2.2调别人接口速度慢 2.3导入速度慢、 2.4导出速度慢的做出介绍 2.5统计功能速度慢 3、总结 1、背景 系统上线后,被用户反应系统很多功能响应时长很慢。用户页面影响速度有要求,下面针对查询数据表…

C#,入门教程(36)——尝试(try)捕捉(catch)不同异常(Exception)的点滴知识与源代码

上一篇: C#,入门教程(35)——哈希表(Hashtable)的基础知识与用法https://blog.csdn.net/beijinghorn/article/details/124236243 1、try catch 错误机制 Try-catch 语句包含一个后接一个或多个 catch 子句的 try 块,这…

深度学习(7)--Keras项目详解(卷积神经网络)

目录 一.项目介绍 二.卷积神经网络构造 2.1.判断是否是channels first的back end 2.2.卷积层构造 2.3.添加激活函数 2.4.池化层构造 2.5.全连接FC层构造 三.完整代码 3.1.学习率衰减设置 四.首次运行结果 五.数据增强对结果的影响 六.BatchNormalization对结果的影…

LeetCode: 160.相交链表(令人赞叹的优雅)

160. 相交链表 - 力扣(LeetCode) 目录 官方双指针解法: 博主的辣眼代码: 每日一表情包: 博主还未学习哈希表,所以介绍的是双指针法,此题的哈希表解法时O(nm)空O&…

R语言入门笔记2.0

1.创建数据框 在R语言中,可以使用data.frame函数来创建数据框。以下是一个简单的示例,这段R语言代码创建了一个名为student的数据框,其中包含了学生的ID、性别、姓名和出生日期,首先创建一个包含学生出生日期的向量,再…

网络时间协议NTP

网络时间协议NTP(Network Time Protocol)是TCP/IP协议族里面的一个应用层协议。NTP用于在一系列分布式时间服务器与客户端之间同步时钟。NTP的实现基于IP和UDP。NTP报文通过UDP传输,端口号是123。 随着网络拓扑的日益复杂,整个网络内设备的时钟同步将变得十分重要。如果依靠…

Skywalking的Trace Profiling 代码级性能剖析功能应用详解

代码级性能剖析 Skywalking 提供了Trace Profiling功能对具体出现问题的span进行代码级性能剖析。 代码级性能剖析就是利用方法栈快照,并对方法执行情况进行分析和汇总。并结合有限的分布式追踪 span 上下文,对代码执行速度进行估算。性能剖析激活时&a…

配置支持 OpenAPI 的 ASP.NET Core 应用

写在前面 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 本文记录如何配置基于Swagger 的 ASP.NET Core 应用程序的 OpenAPI 规范。 需要从NuGet 安装 Swashbuckle.AspNetCore 包 代码实现 var builder WebApplicati…

ChatLaw:基于LLaMA微调的法律大模型

文章目录 动机数据组成模型框架模型评估 北大团队发布首个的中文法律大模型落地产品ChatLaw,为大众提供普惠法律服务。模型支持文件、语音输出,同时支持法律文书写作、法律建议、法律援助推荐。 github地址:https://github.com/PKU-YuanGroup…

纯html+css+js静态汽车商城

首页代码 <!DOCTYPE html> <html class"no-js" lang"zxx"><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&qu…

【前端】快速掌握CSS-flex布局

文章目录 一、标准流二、浮动1. 基本使用2. 产品区域布局(1) HTML标签(2) CSS样式 3. 清除浮动(1) 场景搭建(2) 额外标签法(3) 单伪元素法(4) 双伪元素法(5) overflow法 三、Flex布局1. Flex组成2. 主轴对齐方式3. 侧轴对齐方式4. 修改主轴方向5. 弹性伸缩比6. 弹性盒子换行7. …

手写栈【解析数学表达式,重复字符串解码】

目录 解析数学表达式 字符串解码/智能重复 解析数学表达式 const stock []; // 先进后出&#xff0c;每一次出栈&#xff0c;即一对 () const parenthesesPairPosition {}// 剔除两侧空格 const removeBlank (expression, l, r) > {while (expression[l] ) {l}while…

【算法详解 | 二分查找】详解二分查找 \ 折半查找高效搜索算法 | 顺序数组最快搜索算法 | 递归循环解决二分查找问题

二分查找 by.Qin3Yu 本文需要读者掌握 顺序表 的操作基础&#xff0c;完整代码将在文章末尾展示。 顺序表相关操作可以参考我的往期博文&#xff1a; 【C数据结构 | 顺序表速通】使用顺序表完成简单的成绩管理系统.by.Qin3Yu 文中所有代码使用 C 举例&#xff0c;且默认已使用…

Windows存储空间不足局域网文件共享 Dism备份系统空间不足

问题情景 在日常使用中难免遇到Windows的空间不足的情况&#xff0c;常用办法是清理垃圾释放空间&#xff0c;部分场景例如我们需要使用Dism备份完整系统&#xff0c;所以需要非常大的存储空间不够&#xff0c;如果空间不够什么才是最有效的方案呢&#xff1f; 我们假设身边没有…

【HarmonyOS 4.0 应用开发实战】TypeScript入门之模块化详讲

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

如何在Raspberry Pi上启用SSH并结合cpolar内网穿透实现公网远程访问本地树莓派

文章目录 如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar4.2 cpolar进行token认证4.3 配置cpolar服务开机自启动4.4 查看映射到公网的隧道地址4.5 ssh公网…