使用 TensorFlow.js 在浏览器上进行自定义对象检测

什么是物体检测?

与许多计算机视觉认知应用相比,对象检测是在图像和视频中识别和定位对象的常用技术之一。

顾名思义——“计算机视觉”,是计算机获得类似人类视觉以查看和识别物体的能力。目标检测可以被视为具有一些高级功能的图像识别。

该算法不仅可以识别/识别图像/视频中的对象,还可以对它们进行定位。换句话说,算法在图像或视频帧中的对象周围创建了一个边界框。

92889ed0e56ab840c7dff41051ac2517.png

物体检测示例

各种物体检测算法

以下是一些用于对象检测的流行算法:

  • R-CNN: 基于区域的卷积神经网络

  • Fast R-CNN: :基于区域的快速卷积神经网络

  • Faster R-CNN: 更快的基于区域的卷积网络

  • YOLO: 只看一次

  • SSD: 单镜头探测器

每种算法都有自己的优缺点。这些算法如何工作的细节超出了本文的范围。

bbb847765c97c05d535eb8aa34464a3f.png

卷积神经网络的架构

曾经晚上放学回家,打开电视看最喜欢的动画片的美好时光,可能大家都经历过。相信我们都喜欢看动画片。那么,如何重温那些日子呢?

今天,我们将学习如何使用 TensorFlow.js 创建端到端的自定义对象检测 Web 应用程序。我们将在自定义数据集上训练模型,并将其作为成熟的 Web 应用程序部署在浏览器上。

如果你对构建自己的对象检测模型感到兴奋,还等什么?让我们深入了解。

本文将创建一个在浏览器上实时检测卡通的模型。随意选择你自己的数据集,因为整个过程保持不变。

创建数据集

第一步是收集要检测的对象的图像。比如最喜欢的动画片是机器猫,史酷比,米奇 老鼠,憨豆先生和麦昆。

这些卡通形象构成了这个模型的类。

为这五个类中的每一个收集了大约 60 张图像。这是数据集外观。

b468d3965489e1f68df299109a99d233.png

记住:如果你给模型喂垃圾,你就会得到垃圾。为了获得最佳结果,请确保为模型收集足够的图像以从中学习特征。

收集到足够的数据后,让我们继续下一步。

标记数据集

要标记数据集中的对象,我们需要一个注释/标记工具。有很多注释工具可以做到这一点,例如 LabelImg、Intel OpenVINO CVAT、VGG Image Annotator 等。

虽然这些都是业内最好的注释工具,但发现 LabelImg 更容易使用。随意选择你喜欢的任何注释工具,或者直接按照本文进行操作。

下面是一个带注释的图像的示例:围绕感兴趣区域(对象)及其标签名称的边界框。

fcb745c3eaae286811da29e8167d9136.png

图片标注

对于每个注释的图像,将生成一个相应的 XML 文件,其中包含元数据,例如边界框的坐标、类名、图像名称、图像路径等。

训练模型时需要这些信息。我们稍后会看到那部分。

下面是 XML 注释文件的外观示例。

7ea8f8b0cf1f9fc2203f50267d519400.png

注释 XML 文件

好的,一旦你正确注释了所有图像,按照目录结构的以下方式将数据集拆分为训练集和测试集:

f21819f6b4ca18a47a92a64a61654555.png

数据集的目录结构

在 Google Drive 上上传数据集

登录你的 Google 帐户并将压缩的数据集上传到你的 Google Drive。我们将在模型训练期间获取此数据集。

确保数据集的上传没有因网络问题而中断,并且已完全上传。

9e6bd578c12124190d80b323cff0432a.png

Google Drive 上的数据集

在本地机器上克隆以下存储库

https://github.com/NSTiwari/TensorFlow.js-Custom-Object-Detection

此存储库包含一个名为:Custom_Object_Detection_using_TensorFlow_js.pynb的 Colab Notebook。

打开 Google Colab 并将此 Colab Notebook上传到那里。现在,我们将开始实际训练我们的对象检测模型。

我们正在使用 Google Colab,因此你无需在本地机器上安装 TensorFlow 和其他库,因此我们避免了手动安装库的不必要麻烦,如果安装不当可能会出错。

配置 Google Colab

在 Google Colab 上上传笔记本后,检查运行时类型是否设置为“GPU”。

为此,请单击 Runtime –> Change runtime type.

1e2c77af919942ed004df17208918b16.png

Google Colab 设置

在笔记本设置中,如果硬件加速器设置为'GPU',如下图,你就可以开始了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TensorFlow.js是一个用于在浏览器中运行机器学习模型的JavaScript库。它提供了一种在前端进行目标检测的方法。下面是使用TensorFlow.js进行目标检测的步骤: 1. 下载和安装TensorFlow.js转换器 首先,你需要下载和安装TensorFlow.js转换器。你可以在GitHub上找到它的源代码和安装说明。 2. 下载预训练的目标检测模型 接下来,你需要从TensorFlow 2 Detection Model Zoo中下载一个预训练的目标检测模型。这个模型是在TensorFlow 2中训练的,并且可以用于TensorFlow.js。 3. 转换模型为TensorFlow.js格式 使用TensorFlow.js转换器,你可以将下载的预训练模型转换为TensorFlow.js格式。这样,你就可以在浏览器中加载和运行它。 4. 在浏览器中加载和运行模型 最后,你可以使用TensorFlow.js库在浏览器中加载和运行转换后的模型。你可以使用它来进行目标检测,并在图像或视频中识别出特定的对象。 下面是一个使用TensorFlow.js进行目标检测的示例代码: ```javascript // 加载模型 const model = await tf.loadGraphModel('model/model.json'); // 获取图像元素 const imageElement = document.getElementById('image'); // 将图像转换为Tensor const tensor = tf.browser.fromPixels(imageElement); // 扩展维度以适应模型的输入要求 const expandedTensor = tensor.expandDims(); // 运行模型进行目标检测 const predictions = await model.executeAsync(expandedTensor); // 处理预测结果 // ... // 清理资源 tensor.dispose(); expandedTensor.dispose(); predictions.dispose(); ``` 这是一个基本的示例,你可以根据你的需求进行修改和扩展。你可以在TensorFlow.js的文档中找到更多关于目标检测的详细信息和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值