yolov4简单介绍

目标检测器(Object detector):

Input:image,patches,image pyramid,...

Backbone:VGG16,ResNet-50,ResNeXt-101,Darknet53...

Neek:FPN,PANet,Bi-FPN,...

Head

        Dense Prediction:RPN,YOLO,SSD,RentinaNet,FCOS,...

        Sparse Prediction:Faster R-CNN,R-FCN,...

(可以自由组合成一个网络)

yolov4简单介绍_第1张图片

YOLOv4:

yolov4简单介绍_第2张图片

Backbone:CSPDarknet53

Neck:SPP,PAN

Head:YOLOv3

YOLOv4前生:

YOLOv1:直接回归出位置

YOLLOv2:全流程多尺度方法

YOLOv3:多尺度检测头,resblock darknet53

学习模型步骤:

1、前向计算部分(90%)

2、损失函数:mean square error:MSE,cross enporty

3、反向传播部分

分类模型的输入与输出:

输入:矩阵

输出:Onehot

传统检测算法的主要思路:

耗时,最耗时的环节

操作复杂,需要手动生成大量样本

目标检测:滑动窗口分类方法

如何训练?如何组织样本训练?

1、本质上还是训练分类器

2、训练一个二分类器:背景,前景(待检测目标)

3、各个尺度的窗口都训练一个分类器

4、从原图上剪切出背景,归一化到统一大小

5、从原图上剪切出前景,归一化到统一大小

6、背景图片很多,前景图片少:二分类样本不均衡

训练的网络直接预测了12个框,如何得到最终的7目标?

方法一:聚类,聚成7类,然后在这7类中,取置信度得分最大的框

如果两个目标本身就比较接近?

两个框重合度很高,他们呢有很大概率表示的是同一个目标

两个目标与剩下的一个目标比较远?

可以根据框的重合度来完成“聚类”

如果不知道到底有几个目标?

两两遍历,认为重合度较大的那些框表示一个物体

如何衡量重合度?

IoU=交集/并集

yolov4简单介绍_第3张图片

NMS(非极大值抑制)

以下去除冗余框的过程:NMS(非极大值抑制)

两两遍历算重合度,计算量大,如何减少计算量:

1、得分置信度最高的框肯定是目标不用计算重合度:得到第一个框

2、既然找到了第一个框,就可以利用重合度,把与第一个框重合的其他框去掉(抑制掉)

3、剩下没有被抑制掉的框中,含有剩下的目标怎么办?

        拿得分最高,得到第二个目标,抑制掉重合框

4、剩下的没有被抑制掉的框中,含有剩下的目标怎么办?

        拿得分最高的,得到第三个目标,抑制掉重合框

5、没有剩下的框了,结束

检测模型的通病:小目标检测不佳,如何改善?

专门设计神经元你和小目标

yolov4的基础结构(yolov1):
优点:快,看一眼就出结果

缺点:与R-CNN比,框不准,召回低(很多没有被检测到)

如何做到又快又准又全面?

预测偏移量,基于anchor框和grid的偏移量

如何做到又快又准又全面?

yolo只用了一个尺度,从3个操作:

1、为了多尺度,输入图片尺寸要大

2、为了多尺度passthrough,检测头不能出现全连接,将其替换为卷积

3、多个尺度图片的训练

4、推理的时候,图片要大,保证多尺度训练不白费

预测偏移量,基于anchor框和grid的digmoid偏移量

增加候选框的数目,框也不再共用类别,3个操作:

1、7x7太小,增大为13x13

2、每个grid对应两个人为设定的anchor,增加为5个统计得到的anchor

3、每个anchoe对应一个类别

全流程多尺度,4个操作:

1、为了多尺度,输入图片尺寸要大

2、为了多尺度passthrough,检测头不能出现全连接,将其替换为卷积

3、多个尺度的图片训练

4、推理的时候,图片也要大,保证多尺度训练不白费

你可能感兴趣的:(计算机视觉,yolo,深度学习,人工智能)