本文逻辑不通,仅供自己阅读
yolo强化理解随笔加感悟D1
Day2 运行yolov5的pytorch实现:开始使用yolov5 pipeline
1.yolov2 v3 v4 v5检测头与anchor的尝试改进
2.Yolov5代码使用方法介绍:测试与训练
3.详细解读检测头代码
一、检测模型
特征提取器+检测头(head
二、YOLOv0 model.py
Yolov1 全部改为 yolov0
YoloV0定义
先看forward
Extractor 提取特征 可以认为特征提取器
View可以理解为维度上的变化
Detector 可以理解为检测头
Vgg 最后预测 115 这个向量
前面的1是batch_size 几张图片的意思
三、YOLOv0 train.py
For代数
加载数据,每迭代一次加载一批数据
得到loss,loss反向传播,optimizer优化参数
Loss定义
判断输入维度与标签维度是否想等,三个for循环
Target_process
主要用于生产曾(c,x, y, w, h)的c值
四、YOLO 改进
Location prediction trick
同时代rcnn预测偏移量,基于anchor和grid偏移量
V1直接输出 xywh,范围特别大,不精确
V2 的改进改为预测
X=cx+xt
Y=cy+yt
中心点坐标就可以得到了
这种利用偏移量预测的trick限制了目标框的位置,控制在grid中。
Anchor 人工会提供一组框[w_a, h_a]
Tx ty tw th 为预测输出都是偏移量,bw=真实*一个0到正无穷的倍数
五、Anchor-box trick
也就是我们fast 系列模型中用的方法。区别就在于预测中心点时用额是认为设定anchor框的左上角的点而不是grid cell的。Cell更准。
六、Yolov2的改进trick
77(25+20)
1313(5*5+20)
改进完后检测头输出增大,输出的信息更为丰富。
七、统计的到anchor
八、YOLOV1与YOLOV2对比
增加了offset
九、YOLOV2损失函数
十、YOLOV3检测头
多尺度检测头
V2:77->1313
V3检测头进一步发展
13预测大目标(感受野大) 26预测中目标 52预测小目标
先验框 anchor 现在是9个了
十一、YOLOV1、2、3对比
十二、YOLOV4检测头
还是多尺度
但是用更多的anchors来预测ground truth
1.一个框对应多个anchor,只要anchor与ground truth 有IOU就负责则
2.为了解决offset (0.1)不能占据整个grid 用了sota,在前面加了个系数
P^2*中心点的距离/对角线距离的平方
完整的yolov4 ciou loss
十三、YOLOV5检测头
自适应anchor,two-stage 检测方法
Anchor在检测过程中的作用
V4之前的anchor都是人工指定或者统计data
Img-conv-feature map-anchor预测(c,tx ty tw th)
Map(tx,xA)=out_x,基于anchor的预测方法
Two stage 第一步前景预测候选框出来,第二步再具体类别等预测。
自适应的anchor
推断前景的xywh后,xa ya 等都是1*1卷集合预测的,自适应的anchor就是通过自定义anchor经网络又算了一遍。
十四、补充
1.GT的格式,主要弄清楚哪个anchor对GT负责,
1)GT中心点确定grid
2)算anchor与GT 的IOU
2.基于检测的跟踪 trl
3.v5的anchor是基于数据集聚类但还是有个自适应操作
4.1*1卷积核主要是降低计算量,可以降维
5.一阶段二阶段的区别突破点就在正负样本比例上
6.gpt3
7.数据+资源=算力,理论目前很充分了