卷积:
前层先识别线条等低级单位, 后层从卷积核抽象出形状等高级单位, 前层每一块卷积, 映射后层一个特征点。
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.加深网络,使用残差网络,增加层数是为了上采样。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:卷积深层网络+图像定位 - Python技术站