残差网络
非残差网络的缺陷:随着层数增加效果并没有提升
原因:
一方面sigmond函数导数小于1,另一方面标准化后的权值是满足(0,1)的高斯分布,结果层数增加后前面层计算出的梯度很小乃至接近0,出现梯度消失现象,而导致整个网络训练效果下降。
残差网络原理
首先使用Relu函数作为非线性激活函数。
接着在每一层计算非线性输出时加入上上层的非线性输出。
常用数据集
有标注和矩形框。
部分提供分割和标注,一张图中有多个对象。
YOLO神经网络
算法评估
精确率与召回率
改变判断阈值可以改变精确率和召回率,精确率的提升,往往会造成召回率的下降。
mAP:均值平均准确率
Recall值没有变化的地方,对增加AP值没有贡献。
目标检测问题
(附一张常用概念)
滑动窗口:滑动检测是否有目标
道理简单,但是滑动窗口有很多问题,例如滑动次数太多,并且检测目标的大小可能不同,一个位置需要用很多框,计算太慢。改进的两步法是指一般图片中,大多数位置都不存在目标,可以确定那些更有可能出现目标的位置,再有针对性的用CNN进行检测。两步法依然很费时!
进一步减少出现目标的位置,而且将目标分类检测和定位问题合在一个网络里——一步法(YOLO)。
YOLO基本思想
YOLO的作者当时是这么想的:你分类器输出⼀个one-hot vector,那我把它换成(x,y,w,h,c),c表⽰confidence置信度,把问题转化成⼀ 个回归问题,直接回归出Bounding Box的位置不就好了吗?
(神经网络作为一个黑盒来看待)
一张图多个目标
为什么这样⼦更优?因为conv操作是位置强相关的,就是原来的⽬标在哪⾥,你conv之后的feature map上还在哪⾥,所以图⽚划分为16个区域,结果也应该分布在16个区域上,所以我们的结果(Tensor)的维度size是:(5,4,4)。
多个区域一个目标
在既分的一个区域里有多个目标还不能解决。
多类的目标
加入独热编码
YOLO网络结构
将图片分成7*7=49个cell,每个格子都可以检测是否包含目标 ,YOLO v1中,每个格子只能检测一种物体(现在的能力还不能做到检测多个物体,但可以不同大小,可以越过格子大小检查)。
包围框
置信度
(不太清楚网络输出的置信度还能明确的表示这个含义吗)
从所有的bb中筛选出最后的结果:除去重复目标的框
NMS(⾮极⼤值抑制)。2个框重合度很⾼,⼤概率是⼀个⽬标,那就只取⼀个框。
重合度的计算⽅法:交并⽐IoU=两个框的交集⾯积/两个框的并集⾯积。
具体算法:
