发布网友 发布时间:2024-09-27 11:55
共1个回答
热心网友 时间:2024-10-04 19:56
文章对SSD算法的原理进行了详细阐述,有助于读者理解。
文章对SSD-TensorFlow进行了逐句注释。
文章首先说明了SSD与两阶段算法的区别。
“作者提出了SSD模型,将输出的bounding boxes视为一组不同尺度、不同大小的boxes。简而言之,在不同尺度的feature map上设置了系列不同大小的default boxes,实现了多尺度检测。这种思路与faster rcnn中的anchor boxes类似。然而,anchor boxes实现多尺度的方式不是在不同feature map上进行回归,而是直接设置不同比例的boxes。与rcnn系列模型相比,SSD取消了region proposal的过程,即没有像素、特征重采样(对应于faster rcnn的ROI Pooling)的过程,提升了运行速度。同时,得益于多尺度检测,精度上并未损失,甚至在512x512大小的图片上超过了faster rcnn。”
“基于深度学习的目标检测网络主要有两大类,一类是以RCNN为代表的region proposals方法,这类方法速度较慢,最快的faster rcnn在GPU上也只有7FPS;另一类是以YOLO为代表的基于回归的算法。YOLO虽然在速度上很快(45 FPS),但是精度较低。作者本文旨在解决速度与精度的矛盾问题,提升模型速度的同时,避免了精度损失。SSD和YOLO同属基于回归的算法。”
简单的关键点回归:将一幅图像提取到featrue maps,然后直接将整个featrue maps映射到要回归的点坐标和要回归的类别。
SSD算法思想:先将一幅图像提取到featrue maps,然后从c通道维度拍扁这个立方体(保持w和h维度),对其遍历,对每个像素位置(有通道维度的特征,比如1*256的featrue map)映射到要回归的点坐标和要回归的类别。这种做法较为直接,对于一个map上的像素点,要回归出所有类别的置信度和此处的boundingbox。
“1.预测过程
这里详细说明了如何回归,即“如何从特征图上1个像素位置映射到想要回归的坐标和类别”这个步骤。
然后,问题来了。训练过程中,如何分配特征图每个像素位置处的监督坐标和监督类别?
“首先需要对每一个ground truth匹配相应的default box,一个ground truth可以匹配多个default box。如果ground truth和default box的重叠率大于一个阈值,则匹配为正样本,否则为负样本。
目标函数:偏置偏差损失+类别置信度损失
default boxes大小设置:根据相应的特征图的尺度,设置不同大小的default box,具体计算公式参见论文。作者使用了6个default box。其他trick:Hard negative mining:只有那些有最高训练损失(training loss)的负面样本(negative example)子集才会在每次训练迭代中被使用。SSD的「正负」比一直保持在1:3。Data augmentation:随机裁剪”
“主要创新之处在于:”
“ssd思想:因为可以有单独产生先验框的层,而且输出可以都是已知先验框的坐标和类别信息;也就知道了每个正样本先验框与它的groudtruth的坐标差,这就是每个正样本先验框的监督信号。因此,只要给每个先验框定义出分类和坐标节点信息(以承载其被预测为正确groudtruth的预测信息)即可解决问题了。由于先验框个数是遍历feature map得到,所以最终参与预测的先验框很多,这每个先验框,类似于从整个feature map中抽离出局部feature map,符合人眼日常多目标检测原理。”
“ssd为什么效果好?
MTCNN和SSD实现了两种不同的检测策略
MTCNN:首先构建图像金字塔,然后使用固定大小的滑动窗口(由全卷积网络PNet实现)在金字塔每一级滑动,对每个滑动窗口分类回归,由于图像金字塔对原图信息有一定程度的损失(做resize),同时由于特征提取只使用一个网络,所以对于不同尺度的目标提取特征不够充分。
SSD:图像大小不变,采用不同大小的滑动窗口(由不同特征图实现),并对每个滑动窗口分类回归。不同的特征图对应了不同大小的滑动窗口,实现了对不同大小滑动窗口的特征提取,由于不同特征图使用了不同CNN结构,提取特征更加充分。”
政治从科学中吸取经验:
1)科学:SSD其实就是对6个不同特征图对应的所有priorbox进行分类和回归,每个特征图对应的priorbox其实就是每个特征图上每个像素点对应的感受野,而这些感受野其实就是滑动窗口,所以SSD本质上就是实现了对输入图像中所有滑动窗口的分类和回归
2)人民代表大会制度:从底层(conv4-3)选取代表,解决底层特有问题(小尺度)。
细节详解:
“voidcn.com/article/p-ki...
1)从原图采样crop出patch后reisze到300*300作为训练样本,自适应输入图像大小。
//对于batch_sampler的解释:(train.prototxt)
batch_sampler {
sampler {
min_scale: 0.3 #scale是patch随机框和原图的面积比
max_scale: 1.0
min_aspect_ratio: 0.5 #长宽比
max_aspect_ratio: 2.0
}
sample_constraint {
min_jaccard_overlap: 0.3 #随机框和原ground truth的jaccard overlap
}
max_sample: 1
max_trials: 50 #最大迭代寻找次数,一张图片寻找符合条件的bbox的次数
}
7个采样器,对应生成7个样本?IOU=0.1,0.3,0.5,0.7,0.9。对于每个采样器,随机选择一个来裁剪图片和标注数据。
2)怎样获取小尺寸目标?
ExpandImage是缩小图片,达到zoom out的效果:先做一个比原图大的画布,然后随机找一个放原图的位置将原图镶嵌进去,像天安门上挂了一个画像。这在SSD原文中提到的zoom out缩小16倍(4×4,3.6节)来获得小对象的方法。
这对控件检测是个缺点。控件目标的尺寸分布整体偏小,做完zoom操作后,整体更加偏小。当去掉zoom操作后,效果变好,但是泛化能力降低。这也是ssd中data augment对效果提升很大的原因。
3)多种数据增强方法怎么排列组合?
先扰动,后裁剪。
热心网友 时间:2024-10-04 19:54
文章对SSD算法的原理进行了详细阐述,有助于读者理解。
文章对SSD-TensorFlow进行了逐句注释。
文章首先说明了SSD与两阶段算法的区别。
“作者提出了SSD模型,将输出的bounding boxes视为一组不同尺度、不同大小的boxes。简而言之,在不同尺度的feature map上设置了系列不同大小的default boxes,实现了多尺度检测。这种思路与faster rcnn中的anchor boxes类似。然而,anchor boxes实现多尺度的方式不是在不同feature map上进行回归,而是直接设置不同比例的boxes。与rcnn系列模型相比,SSD取消了region proposal的过程,即没有像素、特征重采样(对应于faster rcnn的ROI Pooling)的过程,提升了运行速度。同时,得益于多尺度检测,精度上并未损失,甚至在512x512大小的图片上超过了faster rcnn。”
“基于深度学习的目标检测网络主要有两大类,一类是以RCNN为代表的region proposals方法,这类方法速度较慢,最快的faster rcnn在GPU上也只有7FPS;另一类是以YOLO为代表的基于回归的算法。YOLO虽然在速度上很快(45 FPS),但是精度较低。作者本文旨在解决速度与精度的矛盾问题,提升模型速度的同时,避免了精度损失。SSD和YOLO同属基于回归的算法。”
简单的关键点回归:将一幅图像提取到featrue maps,然后直接将整个featrue maps映射到要回归的点坐标和要回归的类别。
SSD算法思想:先将一幅图像提取到featrue maps,然后从c通道维度拍扁这个立方体(保持w和h维度),对其遍历,对每个像素位置(有通道维度的特征,比如1*256的featrue map)映射到要回归的点坐标和要回归的类别。这种做法较为直接,对于一个map上的像素点,要回归出所有类别的置信度和此处的boundingbox。
“1.预测过程
这里详细说明了如何回归,即“如何从特征图上1个像素位置映射到想要回归的坐标和类别”这个步骤。
然后,问题来了。训练过程中,如何分配特征图每个像素位置处的监督坐标和监督类别?
“首先需要对每一个ground truth匹配相应的default box,一个ground truth可以匹配多个default box。如果ground truth和default box的重叠率大于一个阈值,则匹配为正样本,否则为负样本。
目标函数:偏置偏差损失+类别置信度损失
default boxes大小设置:根据相应的特征图的尺度,设置不同大小的default box,具体计算公式参见论文。作者使用了6个default box。其他trick:Hard negative mining:只有那些有最高训练损失(training loss)的负面样本(negative example)子集才会在每次训练迭代中被使用。SSD的「正负」比一直保持在1:3。Data augmentation:随机裁剪”
“主要创新之处在于:”
“ssd思想:因为可以有单独产生先验框的层,而且输出可以都是已知先验框的坐标和类别信息;也就知道了每个正样本先验框与它的groudtruth的坐标差,这就是每个正样本先验框的监督信号。因此,只要给每个先验框定义出分类和坐标节点信息(以承载其被预测为正确groudtruth的预测信息)即可解决问题了。由于先验框个数是遍历feature map得到,所以最终参与预测的先验框很多,这每个先验框,类似于从整个feature map中抽离出局部feature map,符合人眼日常多目标检测原理。”
“ssd为什么效果好?
MTCNN和SSD实现了两种不同的检测策略
MTCNN:首先构建图像金字塔,然后使用固定大小的滑动窗口(由全卷积网络PNet实现)在金字塔每一级滑动,对每个滑动窗口分类回归,由于图像金字塔对原图信息有一定程度的损失(做resize),同时由于特征提取只使用一个网络,所以对于不同尺度的目标提取特征不够充分。
SSD:图像大小不变,采用不同大小的滑动窗口(由不同特征图实现),并对每个滑动窗口分类回归。不同的特征图对应了不同大小的滑动窗口,实现了对不同大小滑动窗口的特征提取,由于不同特征图使用了不同CNN结构,提取特征更加充分。”
政治从科学中吸取经验:
1)科学:SSD其实就是对6个不同特征图对应的所有priorbox进行分类和回归,每个特征图对应的priorbox其实就是每个特征图上每个像素点对应的感受野,而这些感受野其实就是滑动窗口,所以SSD本质上就是实现了对输入图像中所有滑动窗口的分类和回归
2)人民代表大会制度:从底层(conv4-3)选取代表,解决底层特有问题(小尺度)。
细节详解:
“voidcn.com/article/p-ki...
1)从原图采样crop出patch后reisze到300*300作为训练样本,自适应输入图像大小。
//对于batch_sampler的解释:(train.prototxt)
batch_sampler {
sampler {
min_scale: 0.3 #scale是patch随机框和原图的面积比
max_scale: 1.0
min_aspect_ratio: 0.5 #长宽比
max_aspect_ratio: 2.0
}
sample_constraint {
min_jaccard_overlap: 0.3 #随机框和原ground truth的jaccard overlap
}
max_sample: 1
max_trials: 50 #最大迭代寻找次数,一张图片寻找符合条件的bbox的次数
}
7个采样器,对应生成7个样本?IOU=0.1,0.3,0.5,0.7,0.9。对于每个采样器,随机选择一个来裁剪图片和标注数据。
2)怎样获取小尺寸目标?
ExpandImage是缩小图片,达到zoom out的效果:先做一个比原图大的画布,然后随机找一个放原图的位置将原图镶嵌进去,像天安门上挂了一个画像。这在SSD原文中提到的zoom out缩小16倍(4×4,3.6节)来获得小对象的方法。
这对控件检测是个缺点。控件目标的尺寸分布整体偏小,做完zoom操作后,整体更加偏小。当去掉zoom操作后,效果变好,但是泛化能力降低。这也是ssd中data augment对效果提升很大的原因。
3)多种数据增强方法怎么排列组合?
先扰动,后裁剪。