YOLOの详细解析

YOLO详解 本文参考知乎 https://zhuanlan.zhihu.com/p/25236464 1. YOLO的创新点 YOLO将物体检测作为回归问题求解。基于一个单独的end-to-end网络,完成从原始图像的输入到物体位置和类别的输出。 从网络设计上,YOLO与two steps的目标检测方法如RCNN、Fast RCNN和Faster RCNN的区别如下: YOLO训练和检测均是在一个单独网... 阅读详情

由于最近要换一份工作,遂作此文,挖坑,一周以内填满。

YOLO V1

Network

Our network has 24 convolutional layers followed by 2 fully connected layers. Instead of the inception modules used by GoogLeNet, we simply use 1*1 reduction layers followed by 3*3 convolutional layers.

Loss

It is to make the grid points containing objects have more weight in the loss function, so that the model "pays more attention" to the loss caused by the grid points containing objects. λcoord   and λnoob j  are 5 and 0.5, respectively.

Train

Backbone -> ImageNet 1000-class Darknet

Head -> Detection 448*448

We normalize the bounding box width and height by the image width and height so that they fall between 0 and 1. We parameterize the bounding box x and y coordinates to be offsets of a particular grid cell location so they are also bounded between 0 and 1.

Leaky relu 0.1

Infer

Pr⁡Class  i∣ Object )*Pr⁡(  Object )*  IOU  pred truth =Pr⁡Class  i  *  IOU  pred truth 

It divides the image into an S*S grid and for each grid cell predicts B bounding boxes, confidence for those boxes, and C class probabilities. These predictions are encoded as a S×S×B*5+C  tensor.

S×S=Grid

B=x1,y1,x2,y2,confidence

C=0.1,0.2…. all class

NMS, remove the extra boxes.

Evaluation

  • YOLO does not perform well in detecting objects that are close to each other (when they are next to each other and their midpoints fall on the same grid). The same grid cell detects the same object class.
  • When objects appear unusually width and height will hard to detect.
  • YOLOv1 only uses high-level features for positioning, while low-level features are good for positioning and high-level features are good for classification, the effect is not very good.
  • End-to-end training. The back propagation of the loss function can run through the entire network, which is also the advantage of the one-stage detection algorithm
  • In this network, the learning of each grid is carried out separately, which leads to the need for a large number of training images in order for the loss to be transmitted to each grid.

YOLO V2

Network

Darknet-19, We modify this network for detection by removing the last convolutional layer and instead adding on three 3*3 convolutional layers with 1024 filters each followed by a final 1*1 convolutional layer with the number of outputs we need for detection.

Improvement

1. Batch Normalization

The BN layer is added on the basis of V1, which is behind the Conv layer, and the Dropout is removed. After adding the BN layer, it brings a 2% improvement to YOLO's mAP, which also illustrates the important role of BN.

2. High Resolution Classifier 448*448

3. Convolutional With Anchor Boxes

At the same time, in order to further increase the number of candidate frames, the last feature map size used for prediction in YOLO V2 is 1/32 of the original image (YOLO V1 is 1/64). Since 448/32 = 14, the image center point is 4 points, this will cause the center point of the object in the center of the image to fall in the 4 Grid Cells, which is inconvenient to allocate, so the author changed the size of the input image to 416 (416/32 = 13) There is only one center point.  After adding the Anchor concept, mAP was reduced from 69.5% to 69.2%, but Recall increased from 81% to 88%, which also provided the possibility for subsequent optimization.

4 Dimension Clusters

Clustering with k=5 uses a clustering (K-means) strategy to select the most representative 5 sizes as the size of the Anchor candidate frame.

d(box, centroid) = 1 - IOU(box; centroid)

5 Direct Location Prediction

The blue is the position that needs to be predicted, the black dashed line is the Anchor position, the output istx,ty,tw,th , and σ  is the sigmoid function

6. Fine-Grained Features

7. Multi-Scale Training

Selection of scale: from 320 to 608, {320, 352... 608}, select a scale every 32 pixel.

YOLO V3

Network

Improvement

  • Bounding Box Prediction
  • Class Prediction
  • Predictions Across Scales
  • Feature Extractor

Bounding Box Prediction

其中,cx , cy 是feature map中grid cell的左上角坐标,在yolov3中每个grid cell在feature map中的宽和高均为1 这也就解释了为什么用sigmoid的原因。如下图1的情形时,这个bbox边界框的中心属于第二行第二列的grid cell,它的左上角坐标为(1,1),故cx =1, cy =1.公式中的pw 、ph 是预设的anchor box映射到feature map中的宽和高

bx&=σtx+cxby&=σty+cybw&=pwetwbh&=pheth

最终得到的边框坐标值是bx,by,bw,bh即边界框bbox相对于feature map的位置和大小,是我们需要的预测输出坐标。但我们网络实际上的学习目标是tx,ty,tw,th这4个offsets,其中tx,ty是预测的坐标偏移值,tw,th是尺度缩放,在第一步的缩放是有灰度填充的。(128, 128, 128)

YOLO3为每种FPN预测特征图(13*13,26*26,52*52)设定3种anchor box,总共聚类出9种尺寸的anchor box。在COCO数据集这9个anchor box是:(10x13),(16x30),(33x23),(30x61),(62x45),(59x119),(116x90),(156x198),(373x326)。这些坐标是相对于(416,416)来说的。

在Fast-RCNN中公式如下,

tx&=Gx-Px/Pwty&=Gy-Py/Phtw&=log⁡Gw/Pwth&=log⁡Gh/Ph

Pw、Ph是预设的anchor box的在feature map上的宽和高。至于Gx、Gy、Gw、Gh自然就是ground truth在这个feature map的4个坐标了Gx-Px/Pw 而大的anchor box肯定更能容忍大点的偏移量,小的anchor box对小偏移都很敏感,故除以宽和高可以权衡不同尺度下的预测坐标偏移量。

这里就有个重要的疑问了,一个尺度的feature map有三个anchors,那么对于某个ground truth框,究竟是哪个anchor负责匹配它呢?和YOLOv1一样,对于训练图片中的ground truth,若其中心点落在某个cell内,那么该cell内的3个anchor box负责预测它,具体是哪个anchor box预测它,需要在训练中确定,即由那个与ground truth的IOU最大的anchor box预测它,而剩余的2个anchor box不与该ground truth匹配。

YOLOv3需要假定每个cell至多含有一个grounth truth,而在实际上基本不会出现多于1个的情况。与ground truth匹配的anchor box计算坐标误差、置信度误差(此时target为1)以及分类误差,而其它的anchor box只计算置信度误差(此时target为0)。在训练过程中划分正负样本是非常重要的,因为anchor很多,只有对一大堆anchor box划分了正负样本,才能有效地用正样本参与损失函数训练。

但问题是三个检测层,那么多anchor box,如果只把gt匹配一个anchor,那么正样本数量会极其稀少,训练会极为不利。那么究竟是如何划分正负样本呢?假设iou阈值为0.7,所有瞄点框与真实标签进行匹配,需要构造 IOU 矩阵,每一行代表一个瞄点框,行数代表anchor box数量,每一列代表一个真值框,列数代表gt的个数。

然后执行 3 个标准:1.对于任何一个瞄点框,与所有标签的最大 IOU 小于 0.3,则视为负样本;2.对于任何一个真值,与其有最大 IOU 的瞄点框视为正样本;3.对于任何一个瞄点框,与所有真值框的最大 IOU 大于 0.7 则视为正样本。这样的三个标准顺序不能变动,保证了多个瞄点框对应一个真值,而一个真值框不能对应多个瞄点框。

有了平移(tx,ty)和尺度缩放(tw,th)才能让anchor box经过微调与grand truth重合。如图3,红色框为anchor box,绿色框为Ground Truth,平移+尺度缩放可实线红色框先平移到虚线红色框,然后再缩放到绿色框。边框回归最简单的想法就是通过平移加尺度缩放进行微调嘛。

边框回归为何只能微调?当输入的 Proposal 与 Ground Truth 相差较小时,,即IOU很大时(RCNN 设置的是 IoU>0.6), 可以认为这种变换是一种线性变换, 那么我们就可以用线性回归(线性回归就是给定输入的特征向量 X, 学习一组参数 W, 使得经过线性回归后的值跟真实值 Y(Ground Truth)非常接近. 即Y≈WX )来建模对窗口进行微调, 否则会导致训练的回归模型不work(当 Proposal跟 GT 离得较远,就是复杂的非线性问题了,此时用线性回归建模显然就不合理了)

Log函数明显不满足线性函数, 但是为什么当Proposal 和Ground Truth相差较小的时候, 就可以认 为是一种线性变换呢? 大家还记得这个公式不? 参看高数 1 .

limz=0 log⁡(1+x)=x

现在回过来看公式:

tw=log⁡Gw/Pw=log⁡Gw+Pw-PwPw=log⁡1+Gw-PwPw

当且仅当 Gw-Pw=0  的时候, オ会是线性函数, 也就是宽度和高度必须近似相等。那么训练时用的ground truth的4个坐标去做差值和比值得到tx,ty,tw,th,测试时就用预测的bbox就好了,公式修改就简单了,把Gx和Gy改为预测的x,y,Gw、Gh改为预测的w,h即可。

网络可以不断学习tx,ty,tw,th偏移量和尺度缩放,预测时使用这4个offsets求得bx,by,bw,bh这个公式tx,ty为何要sigmoid一下啊,因为yolo设定一个物体的中心只能落在一个cell中。

Loss

而在yolov2和v3里,损失函数进行了改进,不再简单地加根号了,而是用scale = 2 - groundtruth.w * groundtruth.h加大对小框的损失。

Confidence

confidence是什么,Pr(Object) ∗ IOU(pred&groundtruth)如果某个grid cell无object则Pr(Object) =0,否则Pr(Object) =1,则此时的confidence=IOU,即预测的bbox和ground truth的IOU值作为置信度。因此这个confidence不仅反映了该grid cell是否含有物体,还预测这个bbox坐标预测的有多准。

YOLO V4

CSP

论文提出Cross Stage Partial(CSP)结构,其初衷是减少计算量并且增强梯度的表现。主要思想是:在输入block之前,将输入分为两个部分,其中一部分通过block进行计算,另一部分直接通过一个shortbut进行concatenate。

Network

Improvement

  • 输入端:采用Mosaic数据增强
  • Backbone:采用了CSPDarknet53、Mish激活函数、Dropblock等方式
  • Neck:采用了SPP(按照DarknetAB的设定)、FPN+PAN结构
  • 输出端:采用CIOU_Loss、DIOU_Nms操作

A complete Object detection framework

Input: Image, Patches, Image Pyramid

Backbones: VGG16, ResNet-50, SpineNet, EfficientNet-B0/B7 [75], CSPResNeXt50, CSPDarknet53

Neck:

Additional blocks: SPP, ASPP, RFB, SAM

Path-aggregation blocks: FPN, PAN, NAS-FPN, Fully-connected FPN, BiFPN, ASFF, SFAM

Heads:

Dense Prediction (one-stage):

  1. anchor based

RPN, SSD, YOLO, RetinaNet

  1. anchor free

CornerNet, CenterNet, MatrixNet, FCOS

Sparse Prediction (two-stage):

  1. anchor based

Faster R-CNN, R-FCN, Mask RCNN

  1. anchor free

RepPoints

YOLO V5

FPN, PAN

Feature Pyramid Networks for Object Detection自顶向下,将高层的强语义特征传递下来

Path Aggregation Network for Instance Segmentation 路径聚合网络 自底向上的,对FPN补充,将低层的强定位特征传递上去

Network

Improvement

  1. Data Augmentation

YOLO V4使用了多种数据增强技术的组合,对于单一图片,使用了几何畸变,光照畸图像,遮挡(Random Erase,Cutout,Hide and Seek,Grid Mask ,MixUp)技术,对于多图组合,作者混合使用了CutMix与Mosaic 技术。除此之外,作者还使用了Self-Adversarial Training (SAT)来进行数据增强。

YOLOV5会通过数据加载器传递每一批训练数据,并同时增强训练数据。数据加载器进行三种数据增强:缩放,色彩空间调整和马赛克增强。据悉YOLO V5的作者Glen Jocher正是Mosaic Augmentation的创造者

  1. Backbone

YOLO V5和V4都使用CSPDarknet作为Backbone从输入图像中提取丰富的信息特征。CSPNet解决了其他大型卷积神经网络框架Backbone中网络优化的梯度信息重复问题,具体做法是:将梯度的变化从头到尾地集成到特征图中,减少了模型的参数量和FLOPS数值,既保证了推理速度和准确率,又减小了模型尺寸。

CSPNe思想源于Densnet,复制基础层的特征映射图,通过dense block 发送副本到下一个阶段,从而将基础层的特征映射图分离出来。这样可以有效缓解梯度消失问题(通过非常深的网络很难去反推丢失信号) ,支持特征传播,鼓励网络重用特征,从而减少网络参数数量。CSPNet思想可以和ResNet、ResNeXt和DenseNet结合,目前主要有CSPResNext50 and CSPDarknet53两种改造Backbone网络。

  1. Neck

Yolov5与Yolov4不同点在于,Yolov4中只有主干网络使用了CSP结构,而Yolov5中设计了两种CSP结构,以Yolov5s网络为例,以CSP1_X结构应用于Backbone主干网络,另一种CSP2_X结构则应用于Neck中。

YOLO V5和V4都使用PANET作为Neck来聚合特征。Neck主要用于生成特征金字塔,增强模型对于不同缩放尺度对象的检测,从而能够识别不同大小和尺度的同一个物体。

在PANET之前,一直使用FPN(特征金字塔)作为对象检测框架的特征聚合层,PANET在借鉴 Mask R-CNN 和 FPN 框架的基础上,加强了信息传播。

PANET基于 Mask R-CNN 和 FPN 框架,同时加强了信息传播。该网络的特征提取器采用了一种新的增强自下向上路径的 FPN 结构,改善了低层特征的传播。第三条通路的每个阶段都将前一阶段的特征映射作为输入,并用3x3卷积层处理它们。输出通过横向连接被添加到自上而下通路的同一阶段特征图中,这些特征图为下一阶段提供信息。同时使用自适应特征池化(Adaptive feature pooling)恢复每个候选区域和所有特征层次之间被破坏的信息路径,聚合每个特征层次上的每个候选区域,避免被任意分配。

  1. Head

最后三个特征图是不同缩放尺度的Head被用来检测不同大小的物体,每个Head一共(80个类 + 1个概率 + 4坐标) * 3锚定框,一共255个channels。

  1. Activation Function

yolo5的作者使用了 Leaky ReLU 和 Sigmoid 激活函数。yolo5中中间/隐藏层使用了 Leaky ReLU 激活函数,最后的检测层使用了 Sigmoid 形激活函数。而YOLO V4使用Mish激活函数。

  1. Optimization Function

YOLO V5的作者提供了两个优化函数Adam和SGD(默认),并都预设了与之匹配的训练超参数。YOLO V4使用SGD。

YOLO V5的作者建议是,如果需要训练较小的自定义数据集,Adam是更合适的选择,尽管Adam的学习率通常比SGD低。但是如果训练大型数据集,对于YOLOV5来说SGD效果比Adam好。

  1. Cost Function

YOLO 系列的损失计算是基于 objectness score, class probability score,和 bounding box regression score. YOLO V5使用 GIOU Loss作为bounding box的损失。YOLO V5使用二进制交叉熵和 Logits 损失函数计算类概率和目标得分的损失。同时我们也可以使用fl_gamma参数来激活Focal loss计算损失函数。

YOLO V4使用 CIOU Loss作为bounding box的损失,与其他提到的方法相比,CIOU带来了更快的收敛和更好的性能。

YOLO X

YOLOX: Exceeding YOLO Series in 2021

Yolox-Nano,网络参数只有0.91M。Yolox-Tiny,Yolox-Darknet53是在Yolov3-SPP的基础上进行的改进Yolox-s

是在Yolov5-s的基础上进行的改进,Yolox-m,Yolox-l,Yolox-x

Network

Improvement SPP

  • 添加了EMA权值更新、Cosine学习率机制等训练技巧
  • 使用IOU损失函数训练reg分支,BCE损失函数训练cls与obj分支
  • 添加了RandomHorizontalFlip、ColorJitter以及多尺度数据增广,移除了RandomResizedCrop

Data Augmentation Mosaic+Mixup

通过随机缩放、随机裁剪、随机排布的方式进行拼接,对于小目标的检测效果提升

主要来源于2017年,顶会ICLR的一篇论文《mixup: Beyond Empirical Risk Minimization》

先读取一张图片,图像两侧填充,缩放到640*640大小,即Image_1,人脸检测框为红色框。再随机选取一张图片,图像上下填充,也缩放到640*640大小,即Image_2,人脸检测框为蓝色框。然后设置一个融合系数,比如上图中,设置为0.5,将Image_1和Image_2,加权融合,最终得到右面的Image。从右图可以看出,人脸的红色框和蓝色框是叠加存在的。

我们知道,在Mosaic和Mixup的基础上,Yolov3 baseline增加了2.4个百分点。

在训练的最后15个epoch,这两个数据增强会被关闭掉。而在此之前,Mosaic和Mixup数据增强,都是打开的,这个细节需要注意。

Neck

如下图所示,FPN自顶向下,将高层的特征信息,通过上采样的方式进行传递融合,得到进行预测的特征图。

Decoupled Head

我们先来看一下Decoupled Head,目前在很多一阶段网络中都有类似应用,比如RetinaNet、FCOS等。而在Yolox中,作者增加了三个Decoupled Head,俗称“解耦头”作者想继续改进,比如输出端改进为End-to-end的方式(即无NMS的形式)。

而在2020年12月份,旷视科技发表的《End-to-End Object Detection with Fully Convolution Network》中。在对FCOS改进为无NMS时,在COCO上,达到了与有NMS的FCOS,相当的性能。为什么在Yolo上改进,会下降这么多?在偶然间,作者将End-to-End中的Yolo Head,修改为Decoupled Head的方式。

不单单是精度上的提高。替换为Decoupled Head后,网络的收敛速度也加快了。目前Yolo系列使用的检测头,表达能力可能有所欠缺,没有Decoupled Head的表达能力更好。

从图上可以看出,Concat前总共有三个分支:

  • cls_output:主要对目标框的类别,预测分数。因为COCO数据集总共有80个类别,且主要是N个二分类判断,因此经过Sigmoid激活函数处理后,变为202080大小。
  • obj_output:主要判断目标框是前景还是背景,因此经过Sigmoid处理好,变为20201大小。
  • reg_output:主要对目标框的坐标信息(x,y,w,h)进行预测,因此大小为20204。

最后三个output,经过Concat融合到一起,得到20*20*85 的特征信息。当然,这只是Decoupled Head①的信息,再对Decoupled Head②和③进行处理。Decoupled Head②输出特征信息,并进行Concate,得到40*40*85 特征信息。Decoupled Head③输出特征信息,并进行Concate,得到80*80*85 特征信息。再对①②③三个信息,进行Reshape操作,并进行总体的Concat,得到8400*85 的预测信息。这里的8400,指的是预测框的数量,而85是每个预测框的信息(reg,obj,cls)。

Anchor Free

在前面Anchor Based中,每个Feature map的单元格,都有3个大小不一的锚框。Yolox-Darknet53,将前面Backbone中,下采样的大小信息引入进来。比如上图中,最上面的分支,下采样了5次,2的5次方为32。当有了8400个预测框的信息,每张图片也有标注的目标框的信息。

这时需要做的,就是将8400个锚框,和图片上所有的目标框进行关联,挑选出正样本锚框。而相应的,正样本锚框所对应的位置,就可以将正样本预测框,挑选出来。这里采用的关联方式,就是标签分配。

SimOTA

① 初步筛选

初步筛选的方式主要有两种:根据中心点来判断、根据目标框来判断;

这部分的代码,在models/yolo_head.py的get_in_boxes_info函数中。

② 精细化筛选

而在精细化筛选中,就用到论文中提到的SimOTA了

cij=Lijcls+λLijreg

然后,对于gt gi,我们选择固定中心区域内成本最低的前k个预测作为其正样本。 最后,这些正预测的相应网格被指定为正,而其余的网格是负。 请注意,k 值因不同的真实情况而异。

Multi Positives

问题:对于每个object,如果只将其center location视为正样本,那就只有1个正样本而忽略了其它高质量的prediction。

潜力:对这些高质量prediction进行优化,可能带来beneficial gradient,这可能会缓解training过程中正/负采样的极端不平衡

center sampling:如FCOS的center sampling,本文将每个object的center region(3×3)中的所有location作为正样本

Label Assignment

第一步:设置候选框数量

首先按照cost值的大小,新建一个全0变量matching_matrix,这里是[3,1000]。通过上面第二行代码,设置候选框数量为10。再通过第三行代码,从前面的pair_wise_ious中,给每个目标框,挑选10个iou最大的候选框。因为前面假定有3个目标,因此这里topk_ious的维度为[3,10]。

第二步:通过cost挑选候选框

下面再通过topk_ious的信息,动态选择候选框。代码如dynamic_k_matching函数中,下图所示这里的topk_ious,是3个目标框和预测框中,最大iou的10个候选框:

经过torch.clamp函数,得到最终右面的dynamic_ks值。我们就知道,目标框1和3,给他分配3个候选框,而目标框2,给它分配4个候选框。那么基于什么标准分配呢?这时就要利用前面计算的cost值,即[3,1000]的损失函数加权信息。在for循环中,针对每个目标框挑选,相应的cost值最低的一些候选框。

比如右面的matching_matrix中,cost值最低的一些位置,数值为1,其余位置都为0。因为目标框1和3,dynamic_ks值都为3,因此matching_matrix的第一行和第三行,有3个1。而目标框2,dynamic_ks值为4,因此matching_matrix的第二行,有4个1。

第三步:过滤共用的候选框

不过在分析matching_matrix时,我们发现,第5列有两个1。这也就说明,第五列所对应的候选框,被目标检测框1和2,都进行关联。因此对这两个位置,还要使用cost值进行对比,选择较小的值,再进一步筛选。

首先第一行代码,将matching_matrix,对每一列进行相加。

这时anchor_matching_gt中,只要有大于1的,说明有共用的情况。上图案例中,表明第5列存在共用的情况。再利用第三行代码,将cost中,第5列的值取出,并进行比较,计算最小值所对应的行数,以及分数。我们将第5列两个位置,假设为0.4和0.3。

经过第三行代码,可以找到最小的值是0.3,即cost_min为0.3,所对应的行数,cost_argmin为2。

经过第四行代码,将matching_matrix第5列都置0。再利用第五行代码,将matching_matrix第2行,第5列的位置变为1。最终我们可以得到3个目标框,最合适的一些候选框,即matching_matrix中,所有1所对应的位置。

Loss

a. 在前面精细化筛选中,使用了reg_loss和cls_loss,筛选出和目标框所对应的预测框。因此这里的iou_loss和cls_loss,只针对目标框和筛选出的正样本预测框进行计算。而obj_loss,则还是针对8400个预测框。

b.在Decoupled Head中,cls_output和obj_output使用了sigmoid函数进行归一化,但是在训练时,并没有使用sigmoid函数,原因是训练时用的nn.BCEWithLogitsLoss函数,已经包含了sigmoid操作。而在推理过程中,是使用Sigmoid函数的。

Improvement Darknet53

  • 输入端:Strong augmentation数据增强
  • BackBone主干网络:主干网络没有什么变化,还是Darknet53
  • Neck:没有什么变化,Yolov3 baseline的Neck层还是FPN结构
  • Prediction:Decoupled Head、Anchor-free、Multi positives、SimOTA
  • 终于结束【本文参考了江大白的blog 十分感谢】!!!
卷积神经网络之Yolo详解 IoU用于衡量预测框与真实框的重叠程度,是目标检测中的基础评估指标。置信度反映了模型对于其预测框包含物体的信心。精确率衡量了预测为目标的框中,实际是目标的比例。召回率衡量了模型能够找到的真实目标的比例。精确率与召回率之间通常存在权衡,需要根据实际需求选择合适的指标。读到这里大家可能对tp tn fp fn仍有疑问,不要着急下面更详细的来了:在机器学习和目标检测中,TPFPTN和FN是用来衡量模型性能的四个基本概念,它们主要用于评估分类任务的准确性。 阅读详情

相关推荐

YOLO系列算法

目录YOLO系列算法yolo算法Yolo算法思想Yolo的网络结构网络输入网络输出7X7网格30维向量Yolo模型的训练训练样本的构建损失函数模型训练模型预测yolo总结yoloV2预测更准确(better)batch normalization使用高分辨率图像微调分类模型采用Anchor Boxes聚类提取anchor尺度边框位置的预测细粒度特征融合多尺度训练速度更快(Faster)识别对象更多yoloV3算法简介多尺度检测网络模型结构先验框logistic回归yoloV3模型的输入与输出yoloV4总结

最白の白菜的博客 3万+

YOLO系列算法全家桶——YOLOv1-YOLOv9详细介绍 !!

本文详细介绍了从YOLOv1-YOLOv9的网络结构,以及各个版本之间的迭代。YOLOv1-YOLOv8之间的对比ModelAnchorInputBackboneNeckYOLOv1锚框(训练是224*224,测试是448*448;GoogLeNet;Dropout防止过拟合;最后一层使用线性激活函数,其余层都使用ReLU激活函数无;一个网格只预测了2个框,并且都属于同一类;全连接层直接预测bbox的坐标值;YOLOv2锚框(通过k-means选择先验框。

不要给自己设限,尝试更多可能(思所向 皆可往) 7万+

从零开始:使用PacBio HiFi和ONT超长读取组装基因组(保姆级教程)

本文提供了一份从零开始的基因组组装保姆级教程,详细讲解了如何融合PacBio HiFi高精度读长与ONT超长读长数据。内容涵盖数据质控、预处理、混合组装策略选择、结果评估及Hi-C支架构建等关键步骤,旨在帮助研究人员获得高质量的完整基因组。

weixin_29266647的博客 202

从零开始掌握YOLO——实时目标检测的技术详解

在当今的计算机视觉领域,目标检测技术扮演着至关重要的角色,随着深度学习技术的迅速发展,目标检测在安防监控、自动驾驶、医疗影像等多个领域得到了广泛应用。传统的目标检测方法通常需要复杂的手工特征设计和分类器训练,不仅效率较低,还存在难以推广的瓶颈。近年来,基于卷积神经网络(CNN)的目标检测方法,尤其是YOLO(You Only Look Once),彻底改变了这一现状。

iShare_Carlos的博客 5万+

从放弃到再入门之拉格朗日对偶问题推导

普通同学的解法 无约束条件:求导就可以了 等式约束:代入消元,再求导 不等式约束:分情况讨论(在边界上和不在边界上),分别对应1,2的情况 然而发现,有些情况消元特别复杂,甚至不能求解 聪明同学的解法 发现:在最优点的情况下,约束曲面的法向量和目标函数的梯度反向必相同或相反 拉格朗日乘子法如何理解? (在2维里可以形象的解释为z=f(x,y)在约束条件g(x,y)=c中,极值...

qq_34564612的博客 1万+

2021年秋招面经分享·字节跳动【芯片工程师-系统架构】

前言 如果想参考本人背景情况的可见这篇概述 ============================ 正文开始 ============================== 【时间线】 7.29 字节一面 8.4 字节二面 8.11 字节三面 PS:红字表示我当时没答出来的问题,蓝字表示面试官的解答。 面经分享 一面·技术面【1小时5分钟】   面试官京腔重,聊high了所以没时间撕代码了,但是华为应该不会这样。 自我介绍; 介绍一下APB; APB中3个状态的跳转是怎么跳转的; AXI中va

qq_43132308的博客 5611

YOLOv1~~v7の全系

YOLOv1-v7不同版本各有特色,在不同场景,不同上下游环境,不同资源支持的情况下,如何从容选择使用哪个版本,甚至使用哪个特定部分,都需要我们对YOLOv1-v7有一个全面的认识。故Rocky将YOLO系列每个版本都表示成下图中的五个部分,逐一进行解析,并将每个部分带入业务侧,竞赛侧,研究侧进行延伸思考,探索更多可能性。。So,enjoy(与本文的BGM一起食用更佳哦):----【目录】----YOLO系列中Neck结构的由来以及作用YOLOv1-v3 Neck侧解析。...

whaosoft143ai的博客 2396

不用U盘也能装Ubuntu?手把手教你用EasyUEFI搞定双系统(附企业版资源)

本文详细介绍了无需U盘即可安装Ubuntu双系统的方法。通过使用EasyUEFI工具,在Windows环境下创建虚拟启动分区并配置UEFI引导,即可直接从硬盘启动Ubuntu安装程序。该方法特别适合开发者或技术爱好者快速搭建Linux开发环境,操作安全便捷,无需额外物理介质。

weixin_29215391的博客 286

YOLO系列模型の部署、精度对齐与int8量化加速

发来大佬的贴啊 帮大佬推广推广海滨大佬的-Yolo系列模型在TensorRT上的部署与量化加速,目前以通过视频的形式在B站发布(不收费,只图一个一剑三连)。麻雀虽小但五脏俱全,本项目系统介绍了YOLO系列模型在TensorRT上的量化方案,工程型较强,我们给出的工具可以实现不同量化方案在Yolo系列模型的量化部署,无论是工...

weixin_29970399的博客 205

从‘裸纤’到成品:手把手拆解光纤阵列(FA)的装配、点胶与端面研磨全流程

本文详细拆解了光纤阵列(FA)从裸纤到成品的全流程,包括装配、点胶与端面研磨等关键工艺。通过实战经验和数据对比,揭示了5G基站、数据中心等场景中FA的精密制造要点与常见故障解决方案,为光通信器件生产提供专业指导。

weixin_42652674的博客 744

Nuclei漏洞扫描:从零到精通的Windows实战指南

本文详细介绍了Nuclei漏洞扫描工具在Windows平台上的安装与使用教程,从基础安装到高级实战技巧全面覆盖。通过具体案例展示如何利用Nuclei的模板库快速检测常见漏洞,并提供自定义POC开发指南,帮助安全从业者高效开展漏洞扫描工作。

weixin_28683689的博客 249

PyTorch~Faster RCNNの小麦麦穗检测

这一个类来保存对应的loss@propertyreturn 0else:# 定义模型, 优化器,损失, 迭代,以及 学习率itr = 1itr = 1。 whaosoft aiot http://143ai.com 数据描述:全球麦穗数据集由来自7个国家的9个研究机构领导,东京大学、国家农业、营养和环境研究所、Arvalis、ETHZ、萨斯喀彻温大学、昆士兰大学、南京农业大学和洛桑研究所。包括全球粮食安全研究所、DigitAg、Kubota和Hiphen在内的许多机构都加入了这些机构的行列,致力于精确的

whaosoft143ai的博客 2106

uniapp - 实现移动端H5微信公众号网页内置浏览器中预览和下载word文档(doc)、excel表格(xls)、ppt文稿、pdf文档等文件,微信内部打开预览和下载到本地详教程,兼容安卓苹果手机

uni-app,微信公众号,h5,移动端,web平台端,网页,网站,Uniapp微信公众号H5网站,内置浏览器下载文档,如何在微信浏览器中预览office文件,word文档,excel文档,pdf文档,ppt文档,office,微信内置浏览器下载文件,下载文件,在微信浏览器里面实现下载任意文件,H5需要在微信浏览器中下载excel文件,UniApp实现网页在微信内置浏览器中下载文件详细教程,安卓点击下载会提示打开浏览器,后端返回流文件,如何解决无法下载文件,跳转至浏览器下载文件,发送到电脑微信,安卓,苹果,

🏆 前端领域优质创作者 1万+

nxdc-milktea 项目全解析:一套仿奈雪の茶的 uni-app 奶茶小程序模板能学到什么

对于想入门 **uni-app 奶茶小程序模板** 开发的新手来说,nxdc-milktea 是一套非常难得的实战范例。这是一套仿奈雪の茶小程序的完整前端模板,用 uni-app 开发、基于 Vue + Vuex 构建,覆盖了首页、点餐、取餐、积分商城、会员体系等 20 多个页面,所有数据以静态 JSON 模拟接口提供,无需后端即可直接运行。无论你是想学习小程序点餐逻辑、Vuex 状态管理,还是想

gitblog_00018的博客 399

★教程1:matlab学习教程入门100例目录

★基础入门 1.为什么要学习MATLAB 2.MATLAB安装 持续更新....... ★MATLAB基础编程语言熟悉

FPGA/MATLAB学习教程/源码/项目合作开发 4万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

了解&制作数据集の学习记录

制作自己の数据集(详细学习笔记) 文章目录制作自己の数据集(详细学习笔记)前言一、下载相关数据集,作为样板二、使用步骤1.引入库2.读入数据总结 前言 一、下载相关数据集,作为样板 目标检测领域常用的三个数据集PASCAL VOC、ImageNet、COCO. 我用的是voc2007. Pascal VOC网址:http://host.robots.ox.ac.uk/pascal/VOC/ VOC数据集在类别上可以分为4大类,20小类。 数据集下载后解压得到一个名为VOCdevkit的文件夹,该文件夹结构

weixin_51015047的博客 505

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Yolo5の网络结构训练策略

冻结训练的作用:当已有部分预训练权重,这部分预训练权重所应用的那部分网络是通用的,如骨干网络,那么我们可以先冻结这部分权重的训练,将更多的资源放在训练后面部分的网络参数,这样使得时间和资源利用都能得到很大改善。第四个参数 args:类的初始化参数,用于解析作为 moudle 的传入参数,即[ch_out, kernel, stride, padding, groups][输出通道数量,卷积核尺寸,步长,padding],这里连ch_in都省去了,因为输入都是上层的输出(初始ch_in为3)whaosoft

whaosoft143ai的博客 320

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

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

【爆锤导师の计算机毕业设计!】Langchain+YOLO目标检测+LLM多模态大模型AI分析的增材制造粉末床熔合缺陷智能检测分析预警系统

本项目面向增材制造粉末床熔合(Powder Bed Fusion,PBF)工艺的层质量监控,系统名称为 PBF Sentinel。系统以 Electron 桌面客户端为统一入口,使用 YOLO 完成粉床层图像中的缺陷定位,使用 LangChain 编排文本模型与视觉多模态模型,对检测结果进行复核、严重程度判断和工艺辅助分析,并通过图片检测、视频检测、实时检测、预警处置、模型训练、模型评估和数据管理形成完整业务闭环。

全网计算机/大数据辅导(自媒体)道祖第一人、全网粉丝100W+,专注于大学生项目实战开发,讲解,毕业答疑辅导,高校老师/讲师/同行合作。以及产品测评宣传、工具推广等合作。同时招收学生代理、校园代理。 262

计算机视觉の专业术语

在计算机视觉中存在很多的专业术语,如先验知识,语义信息,embedding,head,neck等。这些术语的解释无法直接在网上搜到,也没有在哪一篇论文中定义它们的概念和意义,因此,对于第一次听到这些术语的读者来说会非常的困惑。此外,对于还没有建立计算机视觉知识体系的读者来说,也很难理解特征空间,fine-tuning、预训练、池化等方面的内容。本文介绍了很多读者在其它地方不可能了解的内容,通过这些内容相信读者能更深层次地理解计算机视觉,建立起基本的计算机视觉知识体系。 whaosoft aiot http:

whaosoft143ai的博客 180

YOLOv8の多任务使用

参考https://docs.ultralytics.com/config/中的Configuration参数,分别针对train.py、detect.py、val.py等做了相应参数的配置对齐。,既然是Model定义和配置上的问题,那么就没有再往下修改的必要了,还是等官方团队的更新和修改吧,等等党永远不亏。那么,能否直接将v5的项目中,将相应的函数补充过来给v8做适配呢,自然是可以的,当笔者将model.py的。根据官方的文档介绍,还有对代码的分析,目前v8项目是支持检测、分类和分割的。whaosoft

whaosoft143ai的博客 1241
laserneuron
博客等级 码龄7年 0粉丝 1原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值