什么是 Tensorflow 的异议检测? 以及它是如何工作的[示例]
已发表: 2021-06-18目录
物体检测——这是什么意思?
对象检测是通过计算机视觉在图像或视频中识别或定位对象的过程。 如果我们有一张包含猫和人的图像,并且我们必须对图像中的对象进行分类,那么可以应用检测对象的技术,即对象检测,并且可以定位所需的对象,即猫和人。 这可以通过围绕检测到的对象绘制的边界框来实现。 因此,所需对象的位置是已知的。
大多数人仍然对物体识别和图像识别感到困惑。 两者之间的区别在于,在图像识别的情况下,整个图像被标记,而在对象识别中,图像中的对象被标记。
物体的类别,如人、桌子等,以及物体在给定图像中的位置坐标,可以通过物体检测技术来识别。 对象检测算法的性能取决于其在图像中定位对象的能力。 检测对象的一个这样的示例是面部检测。
为什么要进行物体检测?
由于属于对象检测的独特功能,该过程可以应用于许多重要任务,例如:
- 计算人群中的人数。
- 在自动驾驶汽车的情况下驾驶。
- 视频监控。
- 人脸检测。
- 异常检测
对象检测方法
用于对象检测方法的算法可以在使用之前进行训练,也可以在无监督的情况下进行。
两种方法,即基于机器学习的方法和基于深度学习的方法用于检测对象。
- 基于 ML 的方法正在研究图像的各种特征,例如颜色直方图或边缘等。 然后生成基于这些特征的回归模型并预测对象的位置。
- 卷积神经网络 (CNN) 用于基于深度学习的方法,用于通过无监督方法检测对象。
对象检测方法的工作
目标检测任务可以通过以下步骤进行:
- 输入图像被分解成几个小片段。 在整个图像中创建绑定在一起的框集。
- 每个分割区域都经过特征提取的过程。 然后它预测框内是否存在有效对象。 该过程确定盒子中是否存在任何视觉特征。
- 为重叠的盒子构造了一个盒子。
使用 TensorFlow 进行对象检测
TensorFlow 可以定义为一个用于机器学习的开源库,并已广泛用于图像识别、语音搜索、对象识别等多种应用中。Python 和 C++ API 均由 TensorFlow 提供。
- 深度学习算法和机器学习算法都存在于 TensorFlow 中。
- Python 被用作前端语言,也可以在 C++ 中高效运行。
- 开发人员使用 TensorFlow 创建计算图。
- 数学运算由图中的节点表示,数据通过连接表示。
TensorFlow 由 Google 机器智能研究组织内的 Google Brain 团队开发,用于对机器学习和深度神经网络进行研究。
API(应用程序编程接口)通过提供一组通用操作来防止开发人员从头开始编写代码。 TensorFlow 对象检测 API用于训练对象检测模型。 该框架建立在 TensorFlow 之上。 属于对象检测TensorFlow的特征是:
- 已经训练过的模型称为“模型动物园”,可在框架中使用。
- 用于训练各种训练模型的数据集是:
- COCO 数据集。
- KITTI 数据集。
- 开放图像数据集
对象检测 TensorFlow框架由具有不同架构的各种模型组成,因此预测精度也不同。 已经训练好的模型的架构类型有:
1. MobileNet-SSD
单卷积网络一次识别边界框的位置。 该架构由一个基础层(MobileNet)和几个卷积层组成。 通过对特征图的操作来预测边界框的位置。 下面列出了每个边界框的信息:
- 边界框在四个角(cx、cy、w、h)中的偏移位置。
- C 类的概率 (c1, c2, ...cp)
SSD 不预测盒子的形状,而是预测盒子的位置。 为每个特征图位置确定 K 个边界框。 k个边界框的形状在实际训练之前就已经设置好了。
以下等式计算损失。
L=1/N(L级+L箱)
其中,N:匹配框数,L 类:softmax loss,L 框:与匹配框相关的误差。
2. 移动网络
一个标准化的卷积被分解为一个卷积和一个逐点的卷积,即 1*1 的卷积。 通过因式分解减小模型大小,从而减少计算量。
3. Inception-SSD
Inception-SSD 与 MobileNet-SSD 具有相同的架构,但是,MobileNet-SSD 的架构基础是 MobileNet,这里是 Inception 模型。
4. 更快的 RCNN
目标位置的预测是基于区域提议算法。 通过 SSPnet 和 Fast R-CNN 的进步,检测网络减少了运行时间。 在 Faster RCNN 的情况下,当输入图像输入神经网络时,会生成卷积特征图。
然后通过卷积特征图识别区域提议并将其扭曲成正方形。 然后将正方形重新整形为通过 ROL 池化层(感兴趣区域层)固定的大小。 然后将其用作完全连接的层的输入。
softmax 层用于从 ROL 特征向量预测区域建议类。 还预测边界框偏移值。
对象检测 TensorFlow 模型的选择
可以根据用户的具体要求从 TensorFlow API 中选择合适的目标检测 TensorFlow 模型。 如果用户需要高速模型,可以使用单次检测网络,即SSD网络。 该模型速度相当快,并且可以以高 fps 检测视频馈送。
但是,如果需要更高的精度,那么 FasterRCNN 可能是更好的选择,因为模型精度很高,但速度相对较慢。 因此,用户可以根据自己的要求探索各种可用的机会。
用于对象检测的 TensorFlow 示例
使用 TensorFlow API 进行对象检测不需要机器学习或神经网络的先验知识。 API 提供的文件将主要使用。 唯一的要求是了解python的基础知识。
1. 下载 TensorFlow
- TensorFlow 既可以通过 git 下载,也可以手动下载。
- 通过 git下载TensorFlow是最简单的下载方式之一。 对于通过 git 下载,系统应该已经预先安装了 git。 安装 git 后,应在终端中键入以下命令。
- 必须访问以下链接并单击绿色按钮。 必须下载并解压缩压缩文件。
- 该文件夹必须从 models-master 重命名为模型。
- 必须虚拟地创建一个环境。 创建 python 虚拟环境的主要目标之一是创建一个隔离的 python 环境。 它用于python下的项目。 因此,每个项目的依赖关系都会有所不同。
- 在 anaconda 的提示符下必须使用以下命令:
在这种情况下,虚拟环境被命名为 obj_detection
conda create -n obj_detection -> 用于虚拟设置环境
conda activate obj_detection -> 用于激活虚拟环境
2.安装依赖
- API 所需的依赖项必须安装在本地 PC 上。
- 激活虚拟环境后即可安装依赖项。
- 应键入以下命令
点安装张量流
- 如果存在 GPU,则需要以下命令
点安装 tensorflow-gpu
- 其他依赖项将通过以下命令安装
点安装枕头 Cython lxml jupyter matplotlib contextlib2 tf_slim
3. 下载协议缓冲区(Protobuff)
- 协议缓冲区是用于像 XML 一样以串行方式构造数据的某些机制。
- 'Protobuff' 必须从链接下载。
- 提取文件并将文件复制到已下载的“models”文件夹中名为“research”的子文件夹中。
- 必须导航到包含 protobuf 文件的文件夹并运行以下命令
protoc object_detection/protos/*.proto –python_out=。
- 该命令的成功执行将针对模型文件夹中对象检测下的 protos 文件夹中的每个 proto 文件创建一个 python 文件。
结论
目标检测是一种广泛应用于各种实时应用的技术。 我们了解到,该技术可以通过应用机器学习或深度学习算法来实现。
此外,随着 API 的应用,即 TensorFlow,用户需要具备 Python 编程概念的先验知识。 只有这样才能正确理解使用 TensorFlow API 的对象检测方法。 TensorFlow 是一个用于机器学习的开源平台。 因此,要了解 TensorFlow 的工作机制及其应用,最好先了解机器学习的概念。
如果你是一名中级专业人士,想学习 Python 编程,部署 ML 模型和云计算,可以查看upGrad提供的“机器学习与人工智能理学硕士”课程。 由IIIT Bangalore & LJMU联合认证的课程将您的目标与专家培训相结合,让您为进入梦想中的公司做好准备。 你所需要的只是拥有学士学位。 如果对 upGrad 的课程有任何疑问,我们的协助团队可以回复您。