鞍山网站建设公司,hao1123网址之家,做背景图 网站,长沙网站收录开始涉及目标检测内容#xff0c;总结一下学习记录 1、目标检测的基本概念
#xff08;一#xff09;什么是目标检测
目标检测#xff08;Object Detection#xff09; 的任务是找出图像中所有感兴趣的目标#xff08;物体#xff09;#xff0c;不同于分类和回归问题…开始涉及目标检测内容总结一下学习记录 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显卡等硬件进行高效的计算。KerasKeras是一个高层次的深度学习框架它提供了简洁的API和模块化的设计使得模型的构建和训练变得更加容易。Keras支持多种后端如TensorFlow、Theano和CNTK可以轻松地扩展到不同的深度学习平台。TheanoTheano是一个Python库用于定义、优化和计算数学表达式特别是多维数组张量。它是一个强大的深度学习框架尤其适合处理大型多维数组数据。CaffeCaffe是一个快速开源深度学习框架适用于卷积神经网络CNN和循环神经网络RNN等模型。它的设计简洁直观易于使用和扩展。TensorRT针对 NVIDIA 系列显卡具有其他框架都不具备的优势如果运行在 NVIDIA 显卡上 TensorRT 一般是所有框架中推理最快的。一般的主流的训练框架如T ensorFlow 和 Pytorch 都能转换成 TensorRT 可运行的模型。当然了TensorRT 的限制就是只能运行在 NVIDIA 显卡上同时不开源 kernel。ONNXRuntime是可以运行在多平台 (WindowsLinuxMacAndroidiOS) 上的一款推理框架它接受 ONNX 格式的模型输入支持 GPU 和 CPU 的推理。唯一不足就是 ONNX 节点粒度较细推理速度有时候比其他推理框架如 TensorRT 较低。OpenVINO是 Intel 家出的针对 Intel 出品的 CPU 和 GPU 友好的一款推理框架同时它也是对接不同训练框架如 TensorFlowPytorchCaffe 等。不足之处可能是只支持 Intel 家的硬件产品。NCNNMNN不同于以上三款推理框架推理框架推理框架这两款框架都是针对手机端的部署。ncnn 是腾讯开源的MNN 是阿里开源。ncnn的 优势是开源较早有非常稳定的社区开源影响力也较高。MNN 开源略晚但也是目前比较有影响力的手机端推理框架。
3、深度学习模型 深度学习模型是由深度学习框架实现的各种算法模型如卷积神经网络CNN、循环神经网络RNN、转化器Transformer等。以下是一些常见的深度学习模型
CNNCNN是一种广泛应用于计算机视觉领域的深度学习模型它利用局部连接和卷积运算有效地捕捉图像或视频中的特征。经典的CNN模型包括LeNet、AlexNet、VGG、GoogLeNet和ResNet等。RNNRNN是一种适用于序列数据的深度学习模型它通过将前一个时间步长的隐藏状态输入到当前时间步长从而捕捉序列数据中的时间依赖关系。经典的RNN模型包括Vanilla RNN、LSTM和GRU等。TransformerTransformer是一种基于自注意力机制的深度学习模型它在处理长序列数据和全局信息时具有强大的能力。经典的Transformer模型包括Encoder-Decoder架构和Transformer Encoder等。BERTBERT是一种预训练的深度学习模型旨在解决自然语言理解任务中的两个核心问题语言的表示问题和语言的解码问题。它通过预训练的方式学习语言中的上下文信息并取得了在多项自然语言处理任务中的显著性能。GANGAN是一种生成式深度学习模型由两个神经网络组成生成器Generator和判别器Discriminator。生成器的目标是生成逼真的假数据而判别器的目标是区分真实数据和生成的数据。GAN在图像生成、数据补全和强化学习等领域具有广泛的应用。YOLO算法的全称是You Only Look Once这也正是它的特点所在只需一次前向传递即可完成目标检测任务。
4、框架与模型的关系 深度学习框架和模型之间存在明显的联系和区别。框架是一个开发环境提供了构建和训练深度学习模型的工具和接口而模型是针对特定任务的学习算法由框架实现和支持。
深度学习框架通常包括以下功能
模型的定义、构建和训练框架提供了各种API和工具来帮助用户定义、构建和训练各种深度学习模型。 优化器和损失函数框架提供了各种优化器和损失函数来帮助用户进行模型的训练和优化。 评估和测试框架提供了各种工具来评估模型的性能和进行模型的测试。 可视化和调试框架提供了各种可视化工具来帮助用户进行模型的调试和可视化。
5、总结
检测器通常能够被分为两类一类是two-stage检测器最具代表的为faster R-CNN另一类是one-stage检测器包括YOLOSSD等。一般来说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。 下面会慢慢学习具体内容。下一课讲解数据集