前言
现代社会中,计算机视觉技术得到了越来越广泛的应用,其中的 object detection
技术更是常常涉及各个领域。目前,已经有很多的 object detection
开源框架可供选择,但是要实现一个 object detection
的应用还是需要借助很多工具和调试。
近些年来引入了很多基于 JavaScript/TypeScript 的 object detection
库, 通过将这些库打包成 npm
包,我们可以很方便地在我们的项目中使用它们,这些库包括 object-detection
,face-api.js
等,它们都允许我们更加便捷地实现 object detection
的功能。
本篇文章中,我们会给出一篇实现 object detection
的教程,通过介绍 object-detection
库的使用来为想要学习这方面知识的读者提供指导和帮助。
介绍
object-detection
是一款基于 tensorflow
的 object detection
库。
有了它,在不使用任何网络的情况下,我们就可以轻松地为我们的应用程序添加 object detection
的功能,它在浏览器中运行的时候只会使用CPU进行计算,同时还支持在 Node.js 中使用 GPU 计算来获得更快的计算速度。
object-detection
的特点如下:
支持多种模型训练方式:包括从头开始训练以及基于预训练模型进行的微调;
支持多种体系结构:包括 SSD,FasterRCNN (更多的框架正在不断添加中)。
支持多种数据格式:包括 TensorFlow.js models,TensorFlow SavedModels,TensorFlow frozen models,以及 TensorFlow checkpoints,
支持 Node.js 和浏览器
在本文中,我们将演示如何使用 object-detection
来识别一张图片中的人脸,并且思考如何将它应用在实际项目中去。
安装
首先,在项目的根目录下,打开终端并运行以下命令来安装 object-detection
:
npm install object-detection
解析代码
在安装 object-detection
之后,我们还需要安装一些其他必要的库: tfjs
(TensorFlow 神经网络库) 和 tfjs-backend-cpu
(CPU 后端)。
npm install @tensorflow/tfjs npm install @tensorflow/tfjs-backend-cpu
这些库都已经准备好了,现在就可以开始写代码了。
首先,我们需要在我们的代码中引入 object-detection
。
import ObjectDetection from 'object-detection';
下一步, 我们需要创建一个新的 ObjectDetection
实例。
-- -------------------- ---- ------- ----- --------------- - --- ----------------- ------ ------------------------ -- --------- --------------------------------------------------------- -- ------ --------------------- -- -------------------- ------ -- --------------------- ------ -- ------------- ----- ------ ----- --
这里我们选择的是 ssd_mobilenet_v1_coco
模型,这是一个轻型的神经网络,它可以在 CPU 上高效地运行,同时在 COCO
数据集上训练良好。这个模型的主要优点在于它能够以实时的速度运行,同时还能够在检测中提供相对准确的结果。
如果你想用你自己的模型来替换 ssd_mobilenet_v1_coco
,只需要修改配置对象的相关值就可以了,同时记得同时修改其自带的 weight!
然后,我们需要调用 initialize
方法来初始化模型:
await objectDetection.initialize();
在模型初始化之后,我们就可以使用 detect
方法来检测图像中的物体。我们需要先传入图像的 url 地址,检测完成后我们会获得检测结果的数组。
const detections = await objectDetection.detect('path/to/image.png');
示例代码
下面是一段完整的示例代码。
-- -------------------- ---- ------- ------ --------------- ---- ------------------- ----- -------- ----- - --- - ----- --------------- - --- ----------------- ------ ------------------------ -- --------- --------------------------------------------------------- -- ------ --------------------- -- -------------------- ------ -- --------------------- ------ -- ------------- ----- ------ ----- --- ----- ----------------------------- ----- ---------- - ----- -------------------------------------------- ------------------------ - ----- ------- - --------------------- - - ------
总结
在这篇文章中,我们介绍了如何使用 object-detection
库来识别一张图片中的物体。通过这个例子,我们可以发现 object-detection
非常强大、灵活,并且易于使用。
当然,这只是一篇介绍性的文章,我们只是碰触了这个库的表面,如果你想在开发中应用这个库,还需要进一步学习和了解它的更多特点和能力。
不管如何,有了这篇文章的指导,使用 object-detection
库去实现一些真正有用的应用已经变得异常的容易。希望这篇文章可以对读者有所帮助,祝大家都可以找到好的应用!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005681481e8991b448e436d