v1
YOLO v1全部使用了均方差(mean squared error)作为损失(loss)函数。由三部分组成:坐标误差、IOU误差和分类误差
v2
1.YOLO V2在V1基础上做出改进后提出。其受到Faster RCNN方法的启发,引入了anchor。YOLOv1利用全连接层的数据完成边框的预测,会导致丢失较多的空间信息,使定位不准
2.同时使用了K-Means方法,对anchor数量进行了讨论,在精度和速度之间做出折中。
3.并且修改了网络结构,去掉了全连接层,改成了全卷积结构。
4.在训练时引入了世界树(WordTree)结构,将检测和分类问题做成了一个统一的框架,并且提出了一种层次性联合训练方法,将ImageNet分类数据集和COCO检测数据集同时对模型训练。
5.YOLOv2对每批数据都做了一个归一化预处理。通过在每一个卷积层后添加batch normalization
6.YOLOv2是直接使用448×448的输入,随着输入分辨率的增加
7.在不同层次的特征图上获取不同分辨率的特征。
8.GoogleNet训练时一样,为了提高模型的鲁棒性(robust),在训练的时候使用多尺度[6]的输入进行训练
9.大多数目标检测的框架是建立在VGG-16上的,YOLO2是依赖于DarkNet-19的结构,
10在训练检测时,作者把分类网络改成检测网络,去掉原先网络的最后一个卷积层,取而代之的是使用3个3×3x1024的卷积层,并且每个新增的卷积层后面接1×1的卷积层,数量是我们要检测的类的数量。
v3
1.在YOLOv3[15]中使用逻辑回归预测每个边界框(bounding box)的对象分数
2.YOLOv3采用多个尺度融合的方式做预测。原来的YOLO v2有一个层叫:passthrough layer
3.YOLO v3使用新的网络来实现特征提取。在Darknet-19中添加残差网络的混合方式,使用连续的3×3和1×1卷积层,但现在也有一些shortcut连接,YOLO v3将其扩充为53层并称之为Darknet-53。
ssd
有人说SSD相当于YOLO(直接回归bounding boxes coordinates和all C class probabilities) + RPN的anchor(每个feature map用一个小窗口扫描,对每个扫描位置生成k个default的bounding boxes) + multi-scale的prediction。
大牛提出了一个可以看做单层sppnet的网络层,叫做ROI Pooling,
RCNN->FAST-RCNN
原来的方法:许多候选框(比如两千个)-->CNN-->得到每个候选框的特征-->分类+回归
现在的方法:一张完整图片-->CNN-->得到每张候选框的特征-->分类+回归
所以容易看见,Fast RCNN相对于RCNN的提速原因就在于:不过不像RCNN把每个候选区域给深度网络提特征,而是整张图提一次特征,再把候选框映射到conv5上,而SPP只需要计算一次特征,剩下的只需要在conv5层上操作就可以了。
Faster R-CNN
Fast R-CNN存在的问题:存在瓶颈:选择性搜索,找出所有的候选框,这个也非常耗时。那我们能不能找出一个更加高效的方法来求出这些候选框呢?
解决:加入一个提取边缘的神经网络,也就说找到候选框的工作也交给神经网络来做了。
做这样的任务的神经网络叫做Region Proposal Network(RPN)。
最后总结一下RCNN的步骤:
RCNN
1. 在图像中确定约1000-2000个候选框 (使用选择性搜索)
2. 每个候选框内图像块缩放至相同大小,并输入到CNN内进行特征提取
3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类
4. 对于属于某一特征的候选框,用回归器进一步调整其位置
Fast RCNN
1. 在图像中确定约1000-2000个候选框 (使用选择性搜索)
2. 对整张图片输进CNN,得到feature map
3. 找到每个候选框在feature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层
4. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类
5. 对于属于某一特征的候选框,用回归器进一步调整其位置
Faster RCNN
1. 对整张图片输进CNN,得到feature map
2. 卷积特征输入到RPN,得到候选框的特征信息
3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类
4. 对于属于某一特征的候选框,用回归器进一步调整其位置