卷积:

前层先识别线条等低级单位, 后层从卷积核抽象出形状等高级单位, 前层每一块卷积, 映射后层一个特征点。

卷积深层网络+图像定位

input:   7*7*3        filter(kernel):  3*3*3    stride:  2         padding:  1

输出为:    (7-3+2*1)  / 2   +  1  =   4*4 

如果有3个kernel,   4*4*3

 

minibatch思想:     

每次批处理n个数据, [n,:,:,:], 将数据集全部数据total, 设置迭代次数epoch,  m = total / epoch, 遍历m,   每次在m个数据集上更新参数。 

 

池化层:

缩减模型规模, 提取最大特征值。

 

 

定义与概念:

    定位问题与单纯的分类问题的区别,实际上是在softmax时多输出表示坐标的四个参数: (中心点bx by , 高和宽 bh bw )。

    ->比较早期的做法是使用滑动窗口, 先定义窗口尺寸, 依次识别窗口是否出现目标物体, 采用01分类。

    ->现在一般使用Bounding box + Anchor box,  以每个格子建立坐标系,左上角为0,0 取物体中心点 确定落在哪个格子。

        anchor box:  如果一个格子出现多种对象,首先根据这两个对象特征构建两个格子,每个格子还是8个特征, e.g. (Pc, bx, by, bw, bh, c1, c2, c3), 最终是3*3*2*8个特征值。 这样做的好处是,两个对象中点很难在一个格子里,而且更有针对性。

        e.g. 输入图片416*416, 经过23层卷积,最终映射到13*13 的特征图上,  同时定义Bounding box的大小为13*13,  那么图像就被分割为32*32个小grid, 在每个grid中进行预测, 找到目标物体的中心点坐标。 对于这种思想, 应在项目中详细理解, 等我完成重新源码后,会上传代码, 待完成....

 

     ->交并比iou:  边框交集面积/并集面积 阈值0.5, 主要用于非极大值抑制, 去掉同一分类中最大重复的边框。

     ->非极大值抑制: 求出预测参数(pc*c1*c2...)  去掉pc小于0.6以下的值, 如果找出最大值,则找出其他与最大值边框严重重合iou的边框,使这些其他边框变暗。

 

目标检测算法的发展:

 

YOLO1

卷积层:  用来提取特征值, 全连接层:  用来预测。

全连接输出: 7*7*30    7:  将输入图片拆分为7个网格,30:   2*5 +20   其中2个bounding box, 每个box5个坐标参数, confidence=pred*iou。

iou: 总分数一共有 20*(7*7*2) 个:
20个分类, 遍历每个分类,先将得分少于阈值的设置为0, 再用NMS去掉重复率最大的bounding box(针对每个类,先找出评分最高的,计算每个box与它的iou,如果交并比大于0.5,认为重复,过滤。)

损失函数: 对分类与坐标采用不同权重, 增大分类结果的惩罚效果,  降低坐标预测结果的惩罚效力, 因为非目标点数目众多。

grid cell 如何预测object: 找到object的中心点,看它落在哪个grid cell,就由那个grid cell预测。

 

 

YOLO2

1. 提升泛化能力: 在每次卷积后添加batch_normal, 使每批数据分布在激活之前相同。

2. 在卷积时使用anchor boxes: yolo1在最后一层全连接1470*1后reshape为7*7*30使用bounding box预测, Bounding box 实际上只能画出两类边框 2*[pc,bx, by, bw, bh], 而采用Anchor box后, 将会对每类预测边框, 5*[pc, bx, by, bw, bh, c1, c2, ...c20] 。

yolo2使用卷积降采样,等比例缩小32倍,在卷积中每个特征点 与原图中 每个cell一一对应,使用相对偏移,取代直接坐标。

使用416奇数输入产生一个center cell。

yolo1通过每个cell进行预测, 首先在每个cell 预测 2个bounding box坐标与置信度,再预测分类,7*7*(2*5+20)。

yolo2将cell与bounding box解藕,直接在每个cell预测anchor box的坐标、置信度与分类,13*13*(2*(5+20))。

3.细粒度特征
将高低分辨率的特征图连接, 获得更高分辨率, 将26*26*512 reshape为 13*13*2048 连接到最后一层13*13

4.多尺寸训练
每经过10批训练,就会使用新的尺寸,降采样参数为32,最小320*320, 最大608*608,满足不同尺寸图片要求。

5.将分类网络转为检测网络,去掉原网络最后一个卷积层增加三个3*3*1024卷积层,并在每一个卷积后跟一个1*1卷积。

 

 

YOLO3

1. 增加检测级数, 在yolo2细粒度的基础上, 使用两个上采样提取更细粒度的图像特征:

在13*13的基础上,增加两个上采样26*26, 52*52, 从每个cell预测5个bounding box变为3个, 但是数目却增加很多 3*(13*13+26*26+52*52)。

多级检测:
当strides为32时,特征图为13,此时进行上采样,上采样因子为2,连接上一卷积层,依次...

在每一种尺寸,每个cell预测3个bounding box 即anchor box, 对于每个尺寸,anchor box也不相同。

2.使用logistic loss代替softmax, 每个bounding 与 ground trurh一一匹配。

3.加深网络,使用残差网络,增加层数是为了上采样。