single shot multibox detector 特点
1 结构上采用了卷积的形式取代了全连接层
2 卷积核不变的情况下,采用特征图降采样,来识别不同大小的同一类物体
3 设置多个先验框
4 CNN直接检测
1 结构
下图VGG16
输入:(224x224x3)
->两个(卷积层+relu) (224x224x64)
->一个最大池化, 两个卷积+relu (112x112x128)
->一个最大池化,三个卷积+relu (56x56x256)
->一个最大池化,三个卷积+relu (28x28x512)
->一个最大池化,三个卷积+relu (14x14x512)
->一个最大池化(7x7x512)
->三个全连接层+relu:前两个是(1x1x4096)维向量,最后一个是输出(1x1x1000)1000个类别
->softmax
保留VGG16的前5层
后面6、7层从全连接层,变成了conv卷积层
下图SSD
YOLO是有两个全连接层FC,分别由relu, 和reshape两个功能
SSD将这两个功能直接放到了卷积来进行操作,更加高效
YOLO
2 vgg16介绍
原vgg网络:
输入:(224x224x3)
->两个(卷积层+relu) (224x224x64)
->一个最大池化, 两个卷积+relu (112x112x128)
->一个最大池化,三个卷积+relu (56x56x256)
->一个最大池化,三个卷积+relu (28x28x512)
->一个最大池化,三个卷积+relu (14x14x512)
->一个最大池化(7x7x512)
->三个全连接层+relu:前两个是(1x1x4096)维向量,最后一个是输出(1x1x1000)1000个类别
->softmax
在SSD中这个网络叫 SSD-vgg300
ssd使用的是3*3的卷积核,
但是每次使用的卷积核的个数是不同的
1 输入: 300*300*3
2 Conv1-2: 使用的3*3*3*64(3*3卷积核,3通道,64个卷积核)
padding=2(加了两条边,300*300*3变成了302*302*3,为了保持大小不变)
s=1 步长为1,进行卷积,得到特征图
特征图:300*300*64(保持大小不变)(302-2*1 = 300)maxpooling2*2, s=2 (2*2池化层 步长2)
特征图:150*150*643 Conv2-3:使用padding=SAME(ps:好像same自动能变成76),
卷积核128个=75*75*128 150*150池化得到75奇数,在第三次卷积之前75添加到764 Conv3-4: 使用padding=SAME,
卷积核256个=38*38*256 /有三个子层 采用repeat多次操作5 Conv4-5: 使用padding=SAME,
卷积核512个=19*19*512 /有三个子层 采用repeat多次操作
PS:池化层示意图
2*2maxpooling 步长为2(蓝色田字格)
每个2*2池化会提取4个块里面最明显特征保留,如下图
2*2池化层,池化4*4特征图为2*2
3 全连接 转换成 卷积层
使用卷积层好处:参数共享,便于计算
选图选自 吴恩达Deeplearning.ai b站有
3.1 先看relu+降维
1 做卷积
PS:这里是不是这样计算的???
2 池化
3
第一个全连接层,打平,然后relu=max(0,z) 小于0 的置零
第二个全连接层,用于降维,在这里没有降维,没有进行任何运算
PS:其中左边每个 像素要跟右边进行计算
5*5*16=400,
右边400,
400*400计算量还是很大的
3.2 下面卷积核
5*5的卷积核,的到400个特征
一个5*5的卷积核计算25次,左边有16层,400个卷积核
计算量为 25*16*400
然后用1*1的卷积核,400个,得到1*1*400 tensor
softmax得到确认是4类中的哪一类
4 SSD 大尺度特征图识别小目标,小尺度特征图识别大目标
左大尺度,右小尺度