深度神经网络包含什么ssd支持哪些格式的图片输入

目标检测步骤总结如下:

测试的比较直接的方法是:训练生成checkpoint文件后就可以运行 eval.py

在测试结果的文件夹下可以直观的看到有框的图片显示。。。


修改为(参考,好像不行,需要验证。。。):

另一个方法:升级tensorflow版本到1.5以上,当然cuda,cudnn可能需要对应升级

  • 降采样层(池化层):2个
  • 输出层:1个。10个类别(数字0-9的概率)

LeNet-5网络是针对灰度图进行训练的,输入图像大小为32*32*1,不包含输入层的情况下共有7层,每层都包含可训练参数(连接权重)。注:每个层有多个Feature Map,每个Feature Map通过一种卷积滤波器提取输入的一种特征,然后每个Feature Map有多个神经元。

1、C1层是一个卷积层(通过卷积运算,可以使原信号特征增强,并且降低噪音

第一层使用5*5大小的过滤器6个,步长s = 1,padding = 0。即:由6个特征图Feature Map构成,特征图中每个神经元与输入中5*5的邻域相连,输出得到的特征图大小为28*28*6。C1有156个可训练参数(每个滤波器5*5=25个unit参数和一个bias参数,一共6个滤波器,共(5*5+1)*6=156个参数),共156*(28*28)=122,304个连接。

2、S2层是一个下采样层(平均池化层)(利用图像局部相关性的原理对图像进行子抽样,可以/stdcoutzyx/article/details/

七、残差神经网络——ResNet

深度学习网络的深度对最后的分类和识别的效果有着很大的影响,所以正常想法就是能把网络设计的越深越好,

但是事实上却不是这样,常规的网络的堆叠(plain network)在网络很深的时候,效果却越来越差了。其中原因之一

即是网络越深,梯度消失的现象就越来越明显,网络的训练效果也不会很好。 但是现在浅层的网络(shallower network)

又无法明显提升网络的识别效果了,所以现在要解决的问题就是怎样在加深网络的情况下又解决梯度消失的问题。

通过在一个浅层网络基础上叠加 y=x 的层(称identity mappings,恒等映射),可以让网络随深度增加而不退化。

这反映了多层非线性网络无法逼近恒等映射网络。但是,不退化不是我们的目的,我们希望有更好性能的网络。

假如优化目标函数是逼近一个恒等映射, 而不是0映射, 那么学习找到对恒等映射的扰动会比重新学习一个映射函数要容易。

残差函数一般会有较小的响应波动,表明恒等映射是一个合理的预处理。

非常深的网络很难训练,存在梯度消失和梯度爆炸问题,学习 skip connection它可以从某一层获得激活,然后迅速反馈给另外一层甚至更深层,利用 skip connection可以构建残差网络ResNet来训练更深的网络,ResNet网络是由残差模块构建的。

上图中,是一个两层的神经网络,在l层进行激活操作,得到a[l+1],再次进行激活得到a[l+2]。由下面公式:

a[l+2] 加上了 a[l]的残差块,即:残差网络中,直接将a[l]向后拷贝到神经网络的更深层,在ReLU非线性激活前面

加上a[l],a[l]的信息直接达到网络深层。使用残差块能够训练更深层的网络,构建一个ResNet网络就是通过将很多

这样的残差块堆积在一起,形成一个深度神经网络。

(三)残差网络——ResNet

上图中是用5个残差块连接在一起构成的残差网络,用梯度下降算法训练一个神经网络,若没有残差,会发现

随着网络加深,训练误差先减少后增加,理论上训练误差越来越小比较好。而对于残差网络来讲,随着层数增加,

训练误差越来越减小,这种方式能够到达网络更深层,有助于解决梯度消失和梯度爆炸的问题,让我们训练更深网络

同时又能保证良好的性能。

残差网络有很好表现的原因举例:

假设有一个很大的神经网络,输入矩阵为X,输出激活值为a[l],加入给这个网络额外增加两层,最终输出结果为a[l+2],

可以把这两层看做一个残差模块,在整个网络中使用ReLU激活函数,所有的激活值都大于等于0。

对于大型的网络,无论把残差块添加到神经网络的中间还是末端,都不会影响网络的表现。

这些残差块学习恒等函数非常容易。可以确定网络性能不受影响,很多时候甚至可以提高学习效率。

模型构建好后进行实验,在plain上观测到明显的退化现象,而且ResNet上不仅没有退化,34层网络的效果反而比18层的更好,而且不仅如此,ResNet的收敛速度比plain的要快得多。

实际中,考虑计算的成本,对残差块做了计算优化,即将两个3x3的卷积层替换为1x1 + 3x3 + 1x1, 如下图。新结构中的中间3x3的卷积层首先在一个降维1x1卷积层下减少了计算,然后在另一个1x1的卷积层下做了还原,既保持了精度又减少了计算量。

这相当于对于相同数量的层又减少了参数量,因此可以拓展成更深的模型。于是作者提出了50、101、152层的ResNet,而且不仅没有出现退化问题,错误率也大大降低,同时计算复杂度也保持在很低的程度。

这个时候ResNet的错误率已经把其他网络落下几条街了,但是似乎还并不满足,于是又搭建了更加变态的1202层的网络,对于这么深的网络,优化依然并不困难,但是出现了过拟合的问题,这是很正常的,作者也说了以后会对这个1202层的模型进行进一步的改进。

2015年,YOLO之后,另外一个直接回归的方法SSD,以state-of-the-art的检测效果和检测效率横空出世;

直接看下图吧,可以看出,YOLO是在卷积层后加了FC,然后预估2*7*7共49个位置98BBox;而SSD显著的不同就是多尺度:1) 多尺度的feature map上提取特征,通过3*3的卷积核,保证特征的细粒度和丰富性; 2) 多尺度feature map上抽取anchor,每张图共有7308个BBox,远大于YOLO的98;

另外,每个正例BBox学习的并不是绝对位置或者相对grid的位置,而是相对于ground truch的偏移,如下图:

1. 准确率上:VOC达到最高80%,COCO这个小物体也是最高26.8%;

2. 速度上,500尺寸下,SSD和YOLO基本持平,20帧,但是mAP高10点;

另外,16年的YOLOv2在检测效果和速度上更高一层,在效果保持state-of-the-art的基础上,FPS能达到50+,是SSD的2倍+,但是!小物体检测依然是YOLO的短板,COCO上的依然低于SSD5个百分点,如下:

本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。

我要回帖

更多关于 深度神经网络包含什么 的文章

 

随机推荐