图像处理之目标检测入门总结

目标检测(Object Detection)学习笔记(概述与传统算法与基于深度学习算法) 目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),不同于分类和回归问题,目标检测还需要确定目标在图像中的位置(定位),而确定识别目标的类别和位置(分类和定位),是计算机视觉领域的核心问题之一。 阅读详情

点击上方“机器学习算法那些事,"星标置顶”

重磅干货,第一时间送达

本文首先介绍目标检测的任务,然后介绍主流的目标检测算法或框架,重点为Faster R-CNN,SSD,YOLO三个检测框架。本文内容主要整理自网络博客,用于普及性了解。

ps:由于之后可能会有一系列对象检测的论文阅读笔记,在论文阅读之前,先大致了解一下目前的研究现状,目标检测的各种主流方法的大致原理,以助于后面能更顺畅看懂论文,后续再通过论文阅读进行细节学习。由于尚未阅读相关论文原文,若有问题,欢迎指出!先献上一个RCNN系列的图(来自知乎:iker peng)。


Objection Detection Tasks

目前计算机视觉(CV,computer vision)与自然语言处理(Natural Language Process, NLP)及语音识别(Speech Recognition)并列为人工智能(AI,artificial intelligence)·机器学习(ML,machine learning)·深度学习(DL,deep learning)方向的三大热点方向 。

而计算机视觉又有四个基本任务(关于这个任务,说法不一,比如有些地方说到对象检测detection、对象追踪tracking、对象分割segmentation,不用拘泥),即图像分类,对象定位及检测,语义分割,实例分割。图示如下:

  • a)图像分类:一张图像中是否包含某种物体

  • b)物体检测识别:若细分该任务可得到两个子任务,即目标检测,与目标识别,首先检测是视觉感知得第一步,它尽可能搜索出图像中某一块存在目标(形状、位置)。而目标识别类似于图像分类,用于判决当前找到得图像块得目标具体是什么类别。

  • c)语义分割:按对象得内容进行图像得分割,分割的依据是内容,即对象类别。

  • d)实例分割:按对象个体进行分割,分割的依据是单个目标。

 

不管什么任务,目标检测应该是计算机视觉领域首先需要掌握的


Methods

传统的计算机视觉问题的解决思路:图像——预处理——人工特征(hand-crafted features)提取——分类。大部分研究集中在人工特征的构造和分类算法上,涌现了很多杰出的工作。但存在的问题是人工设计的特征可能适用性并不强,或者说泛化能力较弱,一类特征可能针对某类问题比较好,其他问题就效果甚微。

目前主流的深度学习解决思路:通过深度学习算法,进行端到端的解决,即输入图像到输出任务结果一步完成。但其实内部它还是分stages的,通常是图像——特征提取网络——分类、回归。

这里特征提取网络即各种深度神经网络结构,针对这一算法的研究很多,比如说各层的设计细节(激活函数,损失函数,网络结构等)、可视化等,为了能提取更加强壮有效的特征,研究者考虑各种问题,如尺度不变性问题(通常用于解决小目标的检测,如特征金字塔网络,Feature Pyramid Network,FPN),整个网络其实是分作两类的,前N个层为第一部分,用于特征的提取,输入的图片,输出的是特征图,这与传统的人工特征提取本质上没有太大区别,只是提取特征的算法变成了神经网络算法。而网络的后K层是作为第二部分,完成具体的分类或者回归任务,任务的输入是前一个部分得到的特征图,输出是任务的结果。所以显然后一部分其实是可以被替代的,也确实有很多框架的第二部分采用其他机器学习的算法替代,如SVM。

所以需要对自己有个认识!是做算法的研究(通常深度学习就是研究神经网络算法,如何让它特征提取更强大、分类更准确、速度更快,从网络结构、loss function、activation function等入手,需要强大的数学理论)?还是解决某个具体的问题(用已有的优秀的神经网络算法,侧重于研究解决问题的框架,当然很多时候需要对已有的算法做些微调)?

我粗浅的认为前者更纯理论,后者往往以工程为依托。

针对你的任务,如何设计网络?当面对你的实际任务时,如果你的目标是解决该任务而不是发明新算法,那么不要试图自己设计全新的网络结构,也不要试图从零复现现有的网络结构。找已经公开的实现和预训练模型进行微调。去掉最后一个全连接层和对应softmax,加上对应你任务的全连接层和softmax,再固定住前面的层,只训练你加的部分。如果你的训练数据比较多,那么可以多微调几层,甚至微调所有层。


Algorithms

目标检测的基本思路:同时解决定位(localization) + 检测(detection)。 
多任务学习,带有两个输出分支。一个分支用于做图像分类,即全连接+softmax判断目标类别,和单纯图像分类区别在于这里还另外需要一个“背景”类。另一个分支用于判断目标位置,即完成回归任务输出四个数字标记包围盒位置(例如中心点横纵坐标和包围盒长宽),该分支输出结果只有在分类分支判断不为“背景”时才使用。

Region Proposal

为什么要有候选区域?既然目标是在图像中的某一个区域,那么最直接的方法就是滑窗法(sliding window approach),就是遍历图像的所有的区域,用不同大小的窗口在整个图像上滑动,那么就会产生所有的矩形区域,然后再后续排查,思路简单,但开销巨大。

候选区域生成算法通常基于图像的颜色、纹理、面积、位置等合并相似的像素,最终可以得到一系列的候选矩阵区域。这些算法,如selective search或EdgeBoxes,通常只需要几秒的CPU时间,而且,一个典型的候选区域数目是2k,相比于用滑动窗把图像所有区域都滑动一遍,基于候选区域的方法十分高效。另一方面,这些候选区域生成算法的查准率(precision)一般,但查全率(recall)通常比较高,这使得我们不容易遗漏图像中的目标。


Selective Search

“Segmentation as selective search for object recognition ”,ICCV,2011.

“Selective search for object recognition.” International journal of computer vision ,2013

论文应该是有两部分内容,一部分是Selective Search的方法寻找候选区域,第二部分为该区域上的特征提取及后续的分类。由于目前特征提取和分类都采用了深度学习方法,所以只是借鉴其候选区寻找算法Selective Search。

将图像划分成很多的小区域(regions)

如何将图像划分成很多的小区域? 划分的方式应该有很多种,比如:

  • 1)等间距划分grid cell,这样划分出来的区域每个区域的大小相同,但是每个区域里面包含的像素分布不均匀,随机性大;同时,不能满足目标多尺度的要求(当然,可以用不同的尺度划分grid cell,这称为Exhaustive Search, 计算复杂度太大)!

  • 2)使用边缘保持超像素划分;

  • 3)使用本文提出的Selective Search(SS)的方法来找到最可能的候选区域;

其实这一步可以看做是对图像的过分割,都是过分割,本文SS方法的过人之处在于预先划分的区域什么大小的都有(满足目标多尺度的要求),而且对过分割的区域还有一个合并的过程(区域的层次聚类),最后剩下的都是那些最可能的候选区域,然后在这些已经过滤了一遍的区域上进行后续的识别等处理,这样的话,将会大大减小候选区域的数目,提供了算法的速度.

下图说明目标的多尺度:

总体思路:假设现在图像上有n个预分割的区域,表示为R={R1, R2, …, Rn}, 计算每个region与它相邻region(注意是相邻的区域)的相似度,这样会得到一个n*n的相似度矩阵(同一个区域之间和一个区域与不相邻区域之间的相似度可设为NaN),从矩阵中找出最大相似度值对应的两个区域,将这两个区域合二为一,这时候图像上还剩下n-1个区域; 重复上面的过程(只需要计算新的区域与它相邻区域的新相似度,其他的不用重复计算),重复一次,区域的总数目就少1,知道最后所有的区域都合并称为了同一个区域(即此过程进行了n-1次,区域总数目最后变成了1).算法的流程图如下图所示:

  • step0:生成区域集R,具体参见论文《Efficient Graph-Based Image Segmentation》,基于图的图像分割,也就是说起点还是图像分割

  • step1:计算区域集R里每个相邻区域的相似度S={s1,s2,…}

  • step2:找出相似度最高的两个区域,将其合并为新集,添加进R

  • step3:从S中移除所有与step2中有关的子集

  • step4:计算新集与所有子集的相似度

  • step5:跳至step2,直至S为空

相似度计算:论文从四个方面考虑相似度度量——颜色、纹理、尺寸和空间交叠


EdgeBoxes

Edge Boxes: Locating Object Proposals from Edges ,ECCV2014

文章没有涉及到“机器学习”,采用的是纯图像的方法。

研究方法:利用边缘信息(Edge),确定box内的轮廓个数和与box边缘重叠的edge个数(知道一个box内完全包含的轮廓个数,那么目标有很大可能性,就在这个box中),基于此对box进行评分,进一步根据得分的高低顺序确定proposal信息(由大小,长宽比,位置构成)。而后续工作就是在proposal内部运行相关检测算法。

matlab 代码:https://github.com/pdollar/edges

建议参考博客:《Edge Boxes: Locating Object Proposals from Edges》读后感 :https://blog.youkuaiyun.com/wsj998689aa/article/details/39476551


R-CNN

“Rich feature hierarchies for accurate object detection and semantic segmentation.” CVPR 2014

卷积神经网络进入目标识别的里程碑,R-CNN,直接看图了解其结构! 

流程:原图——Selective Search得到2K Proposal Regions —— Warpped image region(?) —— ConvNet —— 分类(svm) + 回归(bounding box regression) 。

这里的Warpped Image Region应该是一种类似resize的操作,将不同大小的proposal region统一到相同的尺寸,用以输入相同的ConvNet,上面的Convnet是相同的,但SVM分类器是针对每一个类别单独训练好的,是不同的分类器。

R-CNN,是基于这样一种非常简单的想法,对于输入图像,通过selective search方法,先确定出例如2000个最有可能包含物体的窗口,对于这2000个窗口,我们希望它能够对待检测物体达到非常高的召回率。然后对这2000个中的每一个去用CNN进行特征提取和分类。对这2000个区域都要去跑一次CNN,那么它的速度是非常慢的,即使每次只需要0.5秒,2000个窗口的话也是需要1000秒,为了加速2014年的时候何凯明提出了SPP-net,其做法是对整个图跑一次CNN,而不需要每一个窗口单独做,但是这样有一个小困难,就是这2000个候选窗口每一个的大小都不一样,为了解决这个问题,SPP-net设计了spatial pyramid pooling,使得不同大的小窗口具有相同维度的特征。这个方法使得检测时不需要对每一个候选窗口去计算卷积,但是还是不够快,检测一张图像还是需要几秒的时间。

存在的不足:

1)多个候选区域对应的图像需要预先提取,占用较大的磁盘空间;

2)针对传统CNN需要固定尺寸的输入图像,crop/warp(归一化)产生物体截断或拉伸,会导致输入CNN的信息丢失;

3)每一个ProposalRegion都需要进入CNN网络计算,上千个Region存在大量的范围重叠,重复的特征提取带来巨大的计算浪费。


SPP-Net

Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition,ECCV 2014,Kaiming He

各个Proposal Region大小不一,全图只卷积一次的话,就不需要经过Wrapp,在特征图上找这些Region的时候还是存在大小不一的问题,由于维度不同,后面的全连接层FC的输入无法统一,故采用SPP,空间金字塔池化,这样不同尺寸的Region通过不同金字塔池化层,从而得到统一维度的输出,加速算法同时,兼顾了尺度问题。

在R-CNN中,要求输入固定大小的图片,因此需要对图片进行crop、wrap变换,改变尺寸引起的形变影响检测效果。此外,对每一个图像中每一个proposal进行一遍CNN前向特征提取,如果是2000个propsal,需要2000次前向CNN特征提取,这无疑将浪费很多时间。

该论文对R-CNN中存在的缺点进行了改进,基本思想是,输入整张图像,提取出整张图像的特征图,然后利用空间关系从整张图像的特征图中,在spatial pyramid pooling layer提取各个region proposal的特征。

1)取消了crop/warp图像归一化过程,解决图像变形导致的信息丢失以及存储问题;

2)采用空间金字塔池化(SpatialPyramid Pooling )替换了 全连接层之前的最后一个池化层(上图top),翠平说这是一个新词,我们先认识一下它。

SPP主要有两个特点:

  • 结合空间金字塔方法实现CNNs的对尺度输入。 
    一般CNN后接全连接层或者分类器,他们都需要固定的输入尺寸,因此不得不对输入数据进行crop或者warp,这些预处理会造成数据的丢失或几何的失真。SPP Net的第一个贡献就是将金字塔思想加入到CNN,实现了数据的多尺度输入。

    如下图所示,在卷积层和全连接层之间加入了SPP layer。此时网络的输入可以是任意尺度的,在SPP layer中每一个pooling的filter会根据输入调整大小,而SPP的输出尺度始终是固定的。

  • 只对原图提取一次卷积特征

    在R-CNN中,每个候选框先resize到统一大小,然后分别作为CNN的输入,这样是很低效的。所以SPP Net根据这个缺点做了优化:只对原图进行一次卷积得到整张图的feature map,然后找到每个候选框在feature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层。节省了大量的计算时间,比R-CNN有一百倍左右的提速。

存在的不足:

1)和RCNN一样,训练过程仍然是隔离的,提取候选框 | 计算CNN特征| SVM分类 | Bounding Box回归独立训练,大量的中间结果需要转存,无法整体训练参数;

2)SPP-Net在无法同时Tuning在SPP-Layer两边的卷积层和全连接层,很大程度上限制了深度CNN的效果;

3)在整个过程中,Proposal Region仍然很耗时。


Fast R-CNN

“Fast r-cnn.” ICCV 2015. Girshick, Ross.

R-CNN的进阶版Fast R-CNN就是在RCNN的基础上采纳了SPP Net方法,对RCNN作了改进,使得性能进一步提高。

Fast R-CNN借鉴了SPP-net的做法,在全图上进行卷积,然后采用ROI-pooling得到定长的特征向量,例如不管窗口大小是多少,转换成7x7这么大。Fast R-CNN还引入了一个重要的策略,在对窗口进行分类的同时,还会对物体的边框进行回归,使得检测框更加准确。前面我们说候选窗口会有非常高的召回率,但是可能框的位置不是很准,例如一个人体框可能是缺胳膊缺腿,那么通过回归就能够对检测框进行校准,在初始的位置上求精。Fast R-CNN把分类和回归放在一起来做,采用了多任务协同学习的方式。

ROI Pooling(region of interest pooling )

兴趣区域汇合旨在由任意大小的候选区域对应的局部卷积特征提取得到固定大小的特征,这是因为下一步的两分支网络由于有全连接层,需要其输入大小固定。其做法是,先将候选区域投影到卷积特征上,再把对应的卷积特征区域空间上划分成固定数目的网格(数目根据下一步网络希望的输入大小确定,例如VGGNet需要7×7的网格),最后在每个小的网格区域内进行最大汇合,以得到固定大小的汇合结果。和经典最大汇合一致,每个通道的兴趣区域汇合是独立的。 


Faster R-CNN

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks,NIPS 2015

之前的Fast R-CNN已经基本实现端到端的检测,而主要的速度瓶颈是在Selective Search算法实现的Region Proposal,故到了Faster R-CNN,主要是解决Region Proposal问题,以实现Real-Time检测。Faster R-CNN的主要思路是,既然检测工作是在卷积的结果Feature Map上做的,那么候选区域的选取是否也能在Feature Map上做?于是RPN网络(Region Proposal Network)应运而生。

候选框提取不一定要在原图上做,特征图上同样可以,低分辨率特征图意味着更少的计算量,基于这个假设,MSRA的任少卿等人提出RPN(RegionProposal Network),整体架构如下图所示

通过添加额外的RPN分支网络,将候选框提取合并到深度网络中,这正是Faster-RCNN里程碑式的贡献 !

RPN引入了所谓anchor box的设计,具体来说,RPN在最后一个卷积层输出的特征图上,先用3x3的卷积得到每个位置的特征向量,然后基于这个特征向量去回归9个不同大小和长宽比的窗口,如果特征图的大小是40x60,那么总共就会有大约2万多个窗口,把这些窗口按照信度进行排序,然后取前300个作为候选窗口,送去做最终的分类 。

Faster实现了端到端的检测,并且几乎达到了效果上的最优,但小物体的识别还存在问题,故SSD算法诞生;速度方向的改进仍有余地,于是YOLO诞生了。


SSD

SSD算法是一种直接预测目标类别和bounding box的多目标检测算法。与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度。针对不同大小的目标检测,传统的做法是先将图像转换成不同大小(图像金字塔),然后分别检测,最后将结果综合起来(NMS)。而SSD算法则利用不同卷积层的 feature map 进行综合也能达到同样的效果。算法的主网络结构是VGG16,将最后两个全连接层改成卷积层,并随后增加了4个卷积层来构造网络结构。对其中5种不同的卷积层的输出(feature map)分别用两个不同的 3×3 的卷积核进行卷积,一个输出分类用的confidence,每个default box 生成21个类别confidence;一个输出回归用的 localization,每个 default box 生成4个坐标值(x, y, w, h)。此外,这5个feature map还经过 PriorBox 层生成 prior box(生成的是坐标)。上述5个feature map中每一层的default box的数量是给定的(8732个)。最后将前面三个计算结果分别合并然后传给loss层。


YOLO

2015年出现了一个名为YOLO的方法,其最终发表在CVPR 2016上。这是一个蛮奇怪的方法,对于给定的输入图像,YOLO不管三七二十一最终都划分出7x7的网格,也就是得到49个窗口,然后在每个窗口中去预测两个矩形框。这个预测是通过全连接层来完成的,YOLO会预测每个矩形框的4个参数和其包含物体的信度,以及其属于每个物体类别的概率。YOLO的速度很快,在GPU上可以达到45fps。

YOLO的处理步骤为:把输入图片缩放到448×448大小;运行卷积网络;对模型置信度卡阈值,得到目标位置与类别。对VOC数据集来说,YOLO就是把图片统一缩放到448×448,然后每张图平均划分为7×7=49个小格子,每个格子预测2个矩形框及其置信度,以及20种类别的概率。舍弃了Region proposal阶段,加快了速度,但是定位精度比较低,与此同时带来的问题是,分类的精度也比较低。在各类数据集上的平均表现大概为54.5%mAP。


总结一下RCNN系列算法的步骤: 

RCNN

  1. 在图像中确定约1000-2000个候选框 (使用选择性搜索)

  2. 每个候选框内图像块缩放至相同大小,并输入到CNN内进行特征提取

  3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类

  4. 对于属于某一特征的候选框,用回归器进一步调整其位置

Fast RCNN

  1. 在图像中确定约1000-2000个候选框 (使用选择性搜索)

  2. 对整张图片输进CNN,得到feature map

  3. 找到每个候选框在feature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层

  4. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类

  5. 对于属于某一特征的候选框,用回归器进一步调整其位置

Faster RCNN

  1. 对整张图片输进CNN,得到feature map

  2. 卷积特征输入到RPN,得到候选框的特征信息

  3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类

  4. 对于属于某一特征的候选框,用回归器进一步调整其位置

三者比较

方法创新缺点改进
R-CNN (Region-based Convolutional Neural Networks)1、SS提取RP;2、CNN提取特征;3、SVM分类;4、BB盒回归。1、 训练步骤繁琐(微调网络+训练SVM+训练bbox);2、 训练、测试均速度慢 ;3、 训练占空间1、 从DPM HSC的34.3%直接提升到了66%(mAP);2、 引入RP+CNN
Fast R-CNN (Fast Region-based Convolutional Neural Networks)1、SS提取RP;2、CNN提取特征;3、softmax分类;4、多任务损失函数边框回归。1、 依旧用SS提取RP(耗时2-3s,特征提取耗时0.32s);2、 无法满足实时应用,没有真正实现端到端训练测试;3、 利用了GPU,但是区域建议方法是在CPU上实现的。1、 由66.9%提升到70%;2、 每张图像耗时约为3s。
Faster R-CNN (Fast Region-based Convolutional Neural Networks)1、RPN提取RP;2、CNN提取特征;3、softmax分类;4、多任务损失函数边框回归。1、 还是无法达到实时检测目标;2、 获取region proposal,再对每个proposal分类计算量还是比较大。1、 提高了检测精度和速度;2、 真正实现端到端的目标检测框架;3、 生成建议框仅需约10ms。

转自:https://blog.youkuaiyun.com/f290131665/article/details/81012556

 End 

声明:部分内容来源于网络,仅供读者学术交流之目的。文章版权归原作者所有。如有不妥,请联系删除。

目标检测概述 目录目标检测概述目标检测常用的开源数据集PASCAL VOC数据集MS COCO数据集常用的评价指标IOUmAP(*Mean Average Precision*)NMS(非极大值抑制)目标检测方法分类总结 目标检测概述 学习目标 了解目标检测的任务 知道目标检测的常用数据集 知道目标检测算法的评价指标 掌握非极大值NMS算法的应用 了解常用的目标检测算法分类 目标检测 目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标,并确定它们的类别和位置。 目标检测中能检测出来的物体 阅读详情

相关推荐

目标检测:介绍常用模型及实现方法

目标检测是计算机视觉领域中的一个重要研究方向,其目标是在图像或视频中精准地定位和识别出感兴趣的目标物体。本文将对目标检测的概念及其常见模型进行总结,并给出相应的Python代码实现。本文对目标检测的概念及其常见模型进行了总结,并给出了相应的Python代码实现。基于深度学习的目标检测方法已成为目前目标检测研究的主流方向。目标检测是一种将物体识别技术和图像处理技术有机结合起来的技术,其主要任务是在图像中检测出目标物体的位置和种类。常见的目标检测方法包括基于深度学习的方法和传统机器学习的方法。

uote_e的博客 695

目标检测简介(Object Detection)

目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。计算机视觉中关于图像识别有四大类任务:(1)分类-Classification:解决“是什么?”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。(2)定位-Location:解决“在哪里?”的问题,即定位出这个目标的的位置。

u013250861的博客 8612

目标检测YOLO系列从入门到精通技术详解100篇-【图像处理】目标检测

假设一个具有有 10 个红细胞的图像,模型只找到这 10 个中正确标记的一个,因为“RBC”具有完美的精度(因为它做出的每一个猜测都是正确的),但并不同时具有完美的召回(仅发现十个 RBC 细胞中的一个)。在上图中,红色绘制的是对 IoU 的最高要求(可能是 90%),橙色线绘制的是对 IoU 的最低要求(可能是 10%),要绘制的线数通常由挑战设置。我们还将注意该指标是按对象类划分的,这告诉我们,白细胞比血小板和红细胞更容易检测,这是有道理的,因为它们比其他细胞大得多,并且不同。

getusushu的博客 875

YOLOv4目标检测:原理与源码解析

需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:原理与源码解析》,课程链接 https://edu.youkuaiyun.com/course/detail/29865【为什么要学习这门课】 Linux创始人Linus Torvalds有一句名言:Talk is cheap. Show me the code. 冗谈不够,放码过来!  代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。【课程内容与收获】 本课程将解析YOLOv4的实现原理和源码,具体内容包括:- YOLOv4目标检测原理- 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算- 代码阅读工具及方法- 深度学习计算的利器:BLAS和GEMM- GPU的CUDA编程方法及在darknet的应用- YOLOv4的程序流程- YOLOv4各层及关键技术的源码解析本课程将提供注释后的darknet的源码程序文件。【相关课程】 除本课程《YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括:《YOLOv4目标检测实战:训练自己的数据集》《YOLOv4-tiny目标检测实战:训练自己的数据集》《YOLOv4目标检测实战:人脸口罩佩戴检测》《YOLOv4目标检测实战:中国交通标志识别》建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。【YOLOv4网络模型架构图】 下图由白勇老师绘制  

目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】数字图像处理

随着高清采集、高清传输、高清解码和显示设备的不断升级,极大地满足了人们对高清画质的需求。高清设备带来的高分辨率提升了视频清晰度,但仍不能保证在所有情况下都能看的清楚,看的明白,比如雨天、雾霾等恶劣天气或者夜间低照度环境下,虽百万像素也只能望图兴叹,无可奈何了;又如为了节省带宽而采用高压缩比编码带来的分块效应,造成图像质量下降。

getusushu的博客 1452

目标检测YOLO系列从入门到精通技术详解100篇-【图像处理】Transformer

paper对新手不友好,简单的事情用了公式来解释,非常繁琐。希望本文能比原文容易理解一点。

getusushu的博客 1065

计算机视觉入门:从图像处理到目标检测

计算机视觉是计算机科学、人工智能和图像处理的交叉领域,旨在使计算机能够理解和解释视觉信息。它通过各种算法和技术,让计算机能够处理和分析大量的图像和视频数据,从而实现图像识别、目标检测、图像分割等功能。计算机视觉是一门充满挑战和乐趣的技术,它为解决复杂的视觉理解问题提供了强大的工具。对于零基础的初学者来说,从图像处理基础入手,逐步深入到目标检测和图像分割等高级应用,能够帮助你更好地理解和掌握计算机视觉的核心要点。

2501_91624122的博客 1247

Windows/Linux双平台指南:3种方法快速释放被占用的GPU内存(含任务管理器替代方案)

本文详细介绍了在Windows和Linux双平台下快速释放被占用GPU内存的3种方法,包括任务管理器替代方案。从基础操作到高阶技巧,帮助用户彻底解决GPU内存驻留问题,提升计算资源利用率。特别适用于深度学习开发者和服务器管理员处理显存泄漏等常见问题。

j0k1l2m3n的博客 262

如何快速入门计算机视觉:图像处理与目标检测完整指南

计算机视觉是人工智能领域中最令人兴奋的分支之一,它使计算机能够"看懂"世界。本指南将为初学者提供一条清晰的学习路径,帮助你快速掌握图像处理与目标检测的核心知识和实践技能,让你从零基础逐步成长为能够构建计算机视觉应用的开发者。 ## 计算机视觉的核心概念与应用领域 🚀 计算机视觉是一门研究如何使计算机从图像或视频中获取高级理解的学科。它结合了计算机科学、数学、物理学和神经科学等多个领域的知识,

gitblog_00323的博客 724

Drools vs URule:5个真实项目场景告诉你如何选择开源规则引擎

本文通过电商风控、物流计费、会员体系、保险定价和物联网告警五个真实项目场景,深度对比了Drools与URule两款开源规则引擎。分析了两者在规则复杂度、性能表现、开发运维及适用场景上的核心差异,为技术选型提供基于实战的决策指南。

k6l7m8n9的博客 945

Unity Spine 3.8 (URP) 踩坑(Shader报错修改)

提供了新思路,打算尝试一下URP。但美术使用的spine版本是3.8,项目用的Unity2021.3.11f1c2,直接导入spine URP包,shader报错:half4 不能转成 SurfaceData2D;Spine-Sprite-StandardPass-URP-2D.hlsl 也报这个错,也是同样的改法即可。今天搜索spine优化,看到一篇文章。

hrlr1230的博客 4570

图像处理之目标检测的入门总结

1 背景介绍目标检测,object detection,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。目标检测要解决的问题有两个:物体在哪里,物体是什么的整个流程问题。目标...

算法channel 3835

保姆级教程:在紫光同创Titan2 FPGA上实现PCIe DMA,实测带宽接近理论极限

本文详细介绍了在紫光同创Titan2 FPGA上实现PCIe DMA性能调优的全过程,通过参数优化和架构设计,实测带宽达到6.91GB/s,接近理论极限。涵盖开发环境搭建、PCIe IP核定制、DMA引擎设计、驱动开发及性能调优等关键步骤,为FPGA开发者提供实用指南。

weixin_30954817的博客 336

如何入门计算机视觉?那如何入门图像处理呢?那如何入门特征提取呢?那如何入门目标检测呢?

如何入门计算机视觉?那如何入门图像处理呢?那如何入门特征提取呢?那如何入门目标检测呢?

2301_77854234的博客 276

ADSP-21565的SigmaStudio图形化编程实战:从FW工程改造到音频通道打通

本文详细介绍了如何将ADSP-21569的SigmaStudio图形化编程固件工程改造,以适配ADSP-21565的纯片内SRAM内存架构。通过修改内存映射和链接文件,打通了音频输出通道,并成功利用SigmaStudio进行图形化编程,实现了从白噪声生成到音频输出的完整验证流程。

weixin_29169505的博客 381

基于Matlab的自动泊车系统开发:利用模糊控制实现智能停车解决方案的详细教程

Matlab是一种广泛应用于科学计算、工程建模与仿真的编程语言,其强大的工具箱和简洁的编程语法,使其成为开发自动泊车系统的理想选择。在开始编写代码之前,我们需要搭建Matlab的工作环境,并熟悉相关的工具箱,如Fuzzy Logic Toolbox,用于实现模糊控制。首先,确保你已经安装了Matlab软件,并加载了必要的工具箱。接下来,我们将逐步讲解如何在Matlab中实现自动泊车系统。

qq_38334677的博客 664

python目标检测入门基础知识_图像处理之目标检测的入门总结

1 背景介绍目标检测,object detection,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。 目标检测要解决的问题有两个:物体在哪里,物体是什么的整个流程问题。目标检测问题的难点:物体的尺寸变化范围很大;摆放物体的角度,姿态不定;而且可以出现在图片的任何地方;物体还可以是多个类别。 目前主要算法分两类:1) 候选区域/框 + 深度学习分类;2) 基于深度学习的回归方法目标检...

weixin_39933713的博客 883

self‑improving‑agent 安装与配置指南(OpenClaw)

长期记忆错误反思用户偏好学习持续进化AI → 反思 → 学习 → 改进。

tiantiantbtb的博客 1342

OpenCV-Python入门1——OpenCV简介与常用图像处理,目标检测

opencv入门介绍

weixin_42229001的博客 2574

在轻量化与精度之间取得平衡:YOLOv8 + GhostNet 的设计与实验分析

摘要: GhostNet系列(GhostNet、GhostNetv2、GhostNeXt)通过“幽灵特征图”技术,以极低计算量生成丰富特征,为YOLOv8提供轻量化改造方案。该技术能在减少参数量与计算量的同时保持或提升检测精度,适用于边缘设备部署。实现时需替换YOLOv8的Backbone为GhostNet模块,并通过消融实验验证其有效性。实验数据表明,改造后的模型在参数量降低30%的同时,推理速度提升28.6%,mAP@0.5最高提升1.9个百分点,平衡了轻量化与精度,为毕设提供技术创新性与工程落地性的双

m0_64661770的博客 196

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

图像处理入门:目标检测和图像检索综述

目标检测和识别发展史: 目标检测,通俗的理解其目的是定位目标,并确定目标位置及大小。相比于图像目标检查,视频检测是比单张图片检测多了时间上下文的信息;相比于传统目标检测,深度学习目标检测算法越来越成熟 https://www.cnblogs.com/houjun/p/8424893.html https://handong1587.github.io/deep_learning/2015/1...

M_Z_G_Y的博客 3404

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

于殿泓 图像检测与处理技术_图像处理之目标检测的入门总结

1 背景介绍目标检测,object detection,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。目标检测要解决的问题有两个:物体在哪里,物体是什么的整个流程问题。目标检测问题的难点:物体的尺寸变化范围很大;摆放物体的角度,姿态不定;而且可以出现在图片的任何地方;物体还可以是多个类别。目前主要算法分两类:1) 候选区域/框 + 深度学习分类;2) 基于深度学习的回归方法...

weixin_39958019的博客 480

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

计算机视觉新手指南:用OpenCV实现图像处理与目标检测

本文介绍了计算机视觉领域中的开源库OpenCV,并提供了几个简单的实战项目,帮助新手快速掌握其基本用法。文章首先简要介绍了OpenCV的功能和优势,接着详细说明了环境搭建步骤,包括Python和OpenCV的安装。随后,通过代码示例展示了图像处理的基础操作,如读取、显示、转换和滤波图像。最后,文章深入讲解了如何使用预训练的SSD模型进行目标检测,并绘制检测结果。通过这些项目,读者可以初步了解OpenCV的强大功能,为后续的计算机视觉学习打下基础。

2501_91624122的博客 945
上一篇: 无痛涨点!大白话讲解 Generalized Focal Loss
下一篇: 漂亮,LSTM模型结构的可视化
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值