YOLOv1
一、前期知识储备
1 、论文内容结构
YOLO把检测问题当作回归问题处理
假阳性:把物体认为是背景的情况
2、yolo的优缺点
3、yolo结果分析
1、实验一
2、与fast-RCNN 对比
3、yolo+fasterRCNN
4、yolo泛化能力强,学到物体的本质特征
4、目标检测评价指标
1、mAP(平均准确率):
绿色:groundtruth
红色:检测出的框,并且给出置信度(confidece)
AP计算
二、论文详解
1、yolo算法思想
1、Resize image. 图片图片输入尺寸448*448
2、Run convolutional network. 输入到神经网络中
3、NMS. 使用非极大值抑制得到最后的结果
4、
(1) 训练阶段:计算loss
(2) 测试阶段:输出预测信息(置信度、类别、框)
2、网络结构细节
1、将图片隐式分为SxS(S=7)个网格
2、物体的中心落在哪个网格内,哪个网格就负责预测这个物体
3、每个网格需要预测B个框,C个类别
4、每个框包含了位置信心与置信度(x,y,w,h,confidence),所以一张图片预测的信息共有SxSx(Bx5+C) 个
通过IOU来判断边框内是否有物体
- 1、小疑问:YOLO中每一个grid cell 的两个 bounding box 是如何初始化的呢?
- 给网络一张图片,网络就会给每一个格子选择两个bbox,而且有些时候某些bbox很好的框出了物体,感觉好神奇。 我感觉其实在刚开始训练的时候他肯定不会怎么智能马上预测出我们想要的bbox,肯定是经过多次训练,使预测bbox越来越理想。训练时,输出的数据里面有bbox的x,y,w,h,然后将预测出来的x,y,w,h和真实值比较,通过反向传播修改前面神经网路的参数,经过多次迭代,就能得到理想的bbox。 在测试时训练好的神经网络看到当前网格的一些信息,就能推测出应该用怎么的bbox。比如神经网络看见这只图像中狗的眼睛比较小,他给出的bbox的尺度就会小一点,然后依据嘴巴,脚,尾巴等信息,可以推测出bbox的中心。*
- 2、思考:YOLO预测存在的问题
- (1)如果一个网格内出现两个物体
(2)一个网格包含了很多个小物体
以上两种情况聚能检测出一个和一类物体,所以yolo对很靠近的物体及小目标群体检测效果不好。
3、网络结构
1、论文中网络结构图
一个448x448x3的图片经过网络得到了7x7x30的张量信息。
蓝色的线代表:7x7的中一个网格预测出的信息(2个bounding box和20类的信息)
整体:网络最终预测出的SxSx(Bx5+C)维度的张量信息
2、网络结构详解
4、损失函数分析
YOLO把检测问题当作回归问题处理:判断类别一般使用交差熵或逻辑回归,但类别损失yolo依然用直接做差方法。
总结:
5、网络训练细节
三、代码实现
参考博客:https://www.cnblogs.com/sddai/p/10288096.html
https://blog.csdn.net/baidu_27643275/article/details/82794559