【TensorFlow学习笔记】目标识别篇(一)简述

今天说说使用深度学习进行目标检测的文章,第一部分讲讲Single shot detector(SSD)和MobileNet。这二者相结合,可以用来实现更快速的,实时的目标检测,尤其是在资源有限的设备上(包括Raspberry Pi, smartphones等等)。

这里就说说如何使用OpenCV中的dnn模块,用来导入一个实现训练好的目标检测网络。使我们可以把图像传送到深度网络中,然后得到图中每个物体的包围框(x,y)坐标。最后,我们使用MobileNet SSDs来检验这些图像。

使用Single Shot Detectors进行目标检测
当提到用深度学习进行目标检测时,主要有下面三种方法:

  • Faster R-CNNs

  • You Only Look Once(YOLO)

  • Single Shot Detectors(SSDs)

Faster R-CNNs是最常听说的基于深度学习的神经网络了。然而,这种方法在技术上是很难懂的(尤其是对于深度学习新手),也难以实现,训练起来也是很困难。

此外,即使是使用了“Faster”的方法实现R-CNNs(这里R表示候选区域Region Proposal),算法依然是比较慢的,大约是7FPS。

如果我们追求速度,我们可以转向YOLO,因为它非常的快,在TianXGPU上可以达到40-90 FPS,最快的版本可能达到155 FPS。但YOLO的问题在于它的精度还有待提高。

SSDs最初是由谷歌开发的,可以说是以上两者之间的平衡。相对于Faster R-CNNs,它的算法更加直接。相对于YOLO,又更加准确。
【TensorFlow学习笔记】目标识别篇(一)简述_第1张图片
如上图:
(左)标准的卷积层,包含batchnorm和ReLU。
(右)将卷基层分为depthwise 和pointwise 层,然后再加上batchnorm和ReLU(图片和标题出自Liu et al.)

当搭建目标检测网络时,我们一般使用现有的网络架构,例如VGG 或者ResNet,然后在目标检测过程中使用它们。问题是,这些网络结构可能非常大,大约会有200-500MB。

这类网络架构不适用于资源有限的设备,因为因为他们的规模太大计算结果太多。作为替代的选择,我们使用MobileNets,另一个谷歌研究员的文章作品,我们称之为“MobileNets”。因为这就是为了资源有限的设备(比如说手机)而设计的。MobileNets与传统CNNs不同之处在于可分离卷积(depthwiseseparable convolution)。

depthwise separable convolution的概念一般是指把卷积分解成两部分:

1.一个3x3的denthwise卷积(深度卷积)

2.接着一个1x1的pointwise卷积(点卷积)

这使我们可以减少网络中的参数,降低计算量

这里有个问题就是损失了精度——MobileNets并不像其他的网络那样精度高。

但是他们更加的节省资源。
https://www.cnblogs.com/xiaoboge/p/10544336.html

你可能感兴趣的:(#,深度学习)