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,...
(可以自由组合成一个网络)
Backbone:CSPDarknet53
Neck:SPP,PAN
Head:YOLOv3
YOLOv1:直接回归出位置
YOLLOv2:全流程多尺度方法
YOLOv3:多尺度检测头,resblock darknet53
1、前向计算部分(90%)
2、损失函数:mean square error:MSE,cross enporty
3、反向传播部分
输入:矩阵
输出:Onehot
耗时,最耗时的环节
操作复杂,需要手动生成大量样本
目标检测:滑动窗口分类方法
1、本质上还是训练分类器
2、训练一个二分类器:背景,前景(待检测目标)
3、各个尺度的窗口都训练一个分类器
4、从原图上剪切出背景,归一化到统一大小
5、从原图上剪切出前景,归一化到统一大小
6、背景图片很多,前景图片少:二分类样本不均衡
方法一:聚类,聚成7类,然后在这7类中,取置信度得分最大的框
如果两个目标本身就比较接近?
两个框重合度很高,他们呢有很大概率表示的是同一个目标
两个目标与剩下的一个目标比较远?
可以根据框的重合度来完成“聚类”
如果不知道到底有几个目标?
两两遍历,认为重合度较大的那些框表示一个物体
如何衡量重合度?
IoU=交集/并集
以下去除冗余框的过程: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、推理的时候,图片也要大,保证多尺度训练不白费