手把手教你十分钟搞定人物检测

2018 年 9 月 13 日 AI研习社

本文为 AI 研习社编译的技术博客,原标题 Can you solve a person detection task in 10 minutes?,作者为 Supervise.ly。

翻译 | shunshun   老赵      审核 |  Lamaric


你能在 10 分钟之内解决人物检测的问题吗?

当然可以!💪


  动机

人物检测任务是随处可见的。如果你的工作和计算机视觉领域相关,那么你很有可能在之前遇到过这个问题。无论你从事什么行业,人物检测几乎都会应用。下面例举了一些行业:

  • 自动驾驶:识别道路场景中的人物

  • 零售业:分析超市内的消费者的行为

  • 时尚业:确定特定品牌和佩戴它们的人

  • 安全行业:限制某些人访问某些地方

  • 移动应用:找到你喜欢的那位,划掉你不喜欢的那位

但是,今天来看,这个任务有多难呢?

好吧,5 年前,主导解决方案是使用 opencv,基于 Haar-like 特征使用级联分类器实现的。这些检测器需要时间和精力来构建,并且按照目前的标准,检测结果不是很好。

在深度学习时代,特征工程和简单分类器的结合的方法逐渐被抛弃(至少,当谈到计算机视觉时),神经网络成为了主导方法。

实际上,在 github 上有很多人物检测的相关实践。例如,这个仓库和这个仓库(点击文末查看原文即可找到原文点击链接)。

尽管如此,即使在今天,公司仍然联系我们(DeepSystems.ai)并要求我们帮助他们完成这项特殊任务。希望在阅读这篇博文后,你会发现运行适用于你的行人检测任务是可行的。


  工具选择

我们将使用 Supervise.ly 平台来解决人员检测任务。除了推荐平台外,原因如下:

  • 我们需要 5 分钟才能获得初始解决方案

  • 无需编写代码并在各种开发工具之间来回切换

  • 开箱即用:一系列预训练的模型,可视化和部署


  如何处理任务

实际上,我们有两种方法来解决这个问题:

(1)使用预训练的模型

(2)训练我们自己的人物检测器。

有了 Supervise.ly 平台,上面的方法都可以使用。但是,为了简单起见,我们主要使用第一种方法。我们将使用在 COCO 上预训练的基于 NASNet 的 Faster R-CNN 模型。

因此计划如下:

I. 初始化人物检测模型

II. 检测图像上的人物以衡量检测质量

III. 为生产应用部署模型

让我们开始吧……


  执行步骤

首先,我们需要进入 Supervise.ly 网站并登录。然后按下面步骤一步一步来。


  I. 初始化人物检测模型

初始化一个人物检测模型很简单。为了完成这步,我们需要将你的 GPU 机器连接到 Supervise.ly,然后选择一个预训练的模型。

1. 将你的 GPU 机器连接到 Supervise.ly 平台

(1) 点击「connect your first node」按钮

(2)在终端上运行所选命令

(3)检查您的计算机是否已连接到平台

转到「Cluster」页面,点击图(1)「connect your first node」按钮,然后,你将看到图(2)窗口,只需复制命令并在终端中执行即可。Python 代理将安装在你的计算机上,它将显示在可用节点列表中(3)。

2. 选择预训练模型

(1)转到 Model Zoo 页面(2)选择你的检测器(3)检查「My Models」列表

转到「Neural networks」->「Model Zoo」页面(1)。您将看到一系列用于语义分割和目标检测任务的预训练模型。如果将光标悬停在「FasterRCNN NasNet」上,您将看到「Add model」按钮(2)。点击后,模型将出现在「My Models」列表(3)。

现在,Faster R-CNN 检测器准备就绪。下一步是看它是如何作用于图像的。


  II. 检测图像上的人物以衡量检测质量

在将模型部署为 API 之前,最好可视化神经网络预测,以了解它是否符合要求。使用 Supervisely 非常简单:只需点击几下即可拖放图像并运行推理过程。

1. 导入图像


(1)转到「Import」->」Upload」页面并拖放图像

(2)定义项目名称并开始导入

(3)勾选「Projects」页面

转到「Import」页面,然后拖放包含测试图像的文件夹(1)。将项目命名为保存图像的项目。在我们的例子中,项目名称是「test_images」。然后单击"start import"按钮(2)。导入完成后,转到「Projects」页面,检查包含你的图像的项目是否已创建(3)

2. 运行推理过程

(1)单击「测试」按钮(2)选择项目(3)定义推理参数


现在让我们在你的图像上测试我们的人物检测器。转到「我的模型」页面,然后单击「测试」按钮(1)。然后,你选择一个带有图像的项目来检测人物。在我们的例子中,它是「test_images」项目,然后单击「下一步」按钮(2)。然后,我们应该指定将存储检测结果的项目的名称。在我们的例子中,它是「inf_test_images」项目(3)。

唯一剩下的就是选择推理模式。在列表「inference_full_image」中选择。最后一步是替换该行:

这行:

点击开始「推理」按钮。

3. 检查结果

(1)点击生成的项目(2)查看预测

推理过程完成后,你将在项目页面(1)上看到「inf_test_images」。要检查结果(2),请单击「inf_test_images」项目,然后单击此项目中的数据集。

现在我们知道我们的模型符合要求,让我们进入最后一步 - 模型部署。


  III. 为生产应用程序部署模型

在大多数情况下,一旦我们对检测质量感到满意,我们就需要通过 API 从自定义环境中使用该模型。以下说明介绍了如何为生产应用程序部署模型。

1. 部署人物检测模型

(1)单击「Deploy」按钮(2)指定并提交部署参数(3)确保任务完成

转到「我的模型」页面,然后单击「部署」按钮(1)。然后,在指定目标 GPU 机器和设备后,单击「提交」按钮(2)。因此,将创建一个新任务,并且一旦完成(3),你就可以将 API 请求发送到你的人员检测模型。

2. 发送 API 请求

(1)单击「Deploy API Info」项(2)获取部署信息

在调用 API 之前,我们需要获取令牌和 URL 信息。为此,在「Cluster-> Tasks」页面上单击上下文菜单(1)中的「Deploy API info」。在下一页,你将看到通过 API(2)使用我们的检测模型所需的所有信息。

更具体地说,这里(2)我们可以看到:

 1. API 令牌 RsiYTrSBsyE5BIXRYYCFBLJf13JqVQ4NeEUUxX2oE1SdkwgdpmErjZ0tHEKljadILv8cQrosxMVmirJVOOf025mR8XB88feSRDbbeAYpKL2MwJ1MAZtJ2PfideN4UmNP

 2. URL

https://app.supervise.ly/public/api/v1/models/435/deploy/upload

3. 用法示例

很明显,不过我要说的是,您的 API 令牌和网址将与上述不同。

例如,假设你有「dl_heroes.jpg」图像。

Yann LeCun, Geoffrey Hinton, Yoshua Bengio, Andrew Ng

因此,如果你在终端中运行以下命令:

然后,Supervise.ly 会以 json 格式给你回复检测结果:

上面的 Json 对应于检测到的所有对象,包括坐标和置信度。可视化后,我们得到

API 返回的预测可视化

为了让生活更轻松,我们提供了一个 python notebook,它实现了 API 调用并可视化检测结果。我们鼓励你使用它。

Jupyter notebook


  回到主要问题

回想一下标题中的问题「你能在 10 分钟内解决一个人检测任务吗?」

  • 快速回答是,只需按照上面的说明操作即可。

  • 更为深思熟虑的答案是「它取决于」,细节决定成败。

同样,需要人员检测的可能应用程序的数量是巨大的。以下是引起头痛的三个最受欢迎的因素:

  1. 硬件限制。对于某些应用程序,可以使用板载高端 GPU 的台式计算机。其他应用程序应该可以在手机上或机器人内部使用。在这种情况下,我们需要以牺牲模型精度为代价来使用小而快速的神经网络。

  2. 实时要求。例如,在自动驾驶行业中,软件应该是实时工作的。在这种情况下,最新的 GPU 仍然不够强大,无法运行更快的 R-CNN 的最先进的实现。因此,我们必须牺牲准确性并选择更简单的模型。

  3. 具体情况。如果我们构建一个安全应用程序,那么很可能,我们必须在夜间发现不需要的人。无法保证开箱即用的探测器可以解决此任务。许多其他变化是可能的 - 不同的天气,摄像机角度或只有一小部分人可见的事实。好消息是我们可以训练模型在特定条件下运行良好,但它可能需要我们一些额外的工作。

将来,我们将发布一系列博客文章,解决更复杂的场景,包括自定义对象检测器的培训。

如果你发现这篇文章很有趣,那就多分享它一些,这样更多的人就能看到它!

原文链接:https://hackernoon.com/can-you-solve-a-person-detection-task-in-10-minutes-74fba061194c


请点击文章底部【阅读原文】查看更多外部链接和参考文献。

更多精彩内容,尽在AI研习社:

基于 OpenCV(C++/Python) 使用深度学习 进行人类姿态检测

如何在 Azure 上使用 Horovod 框架进行物体检测的分布式深度学习

基于 OpenCV 使用 YOLOv3 进行深度学习中的物体检测

亚马逊、谷歌、微软等各家公司人脸识别对比

斯坦福CS231n李飞飞计算机视觉经典课程(中英双语字幕+作业讲解+实战分享)


等你来译:

你能在 10 分钟之内解决人物检测的问题吗?

如何使用 OpenCV 编写基于 Node.js 命令行界面 和 神经网络模型的图像分类

深度学习来自监督的方法

登录查看更多
5

相关内容

专知会员服务
31+阅读 · 2020年4月24日
训练目标检测模型只需要这 6 行代码
AI科技评论
8+阅读 · 2019年8月19日
7个实用的深度学习技巧
机器学习算法与Python学习
16+阅读 · 2019年3月6日
从人脸检测到语义分割,OpenCV预训练模型库
极市平台
5+阅读 · 2018年10月26日
10行代码实现目标检测,请收下这份教程
从零开始PyTorch项目:YOLO v3目标检测实现
机器之心
14+阅读 · 2018年4月23日
手把手教你如何部署深度学习模型
全球人工智能
17+阅读 · 2018年2月5日
人脸检测与识别总结
计算机视觉战队
21+阅读 · 2017年11月29日
简单车牌检测
计算机视觉战队
6+阅读 · 2017年6月23日
Seeing What a GAN Cannot Generate
Arxiv
8+阅读 · 2019年10月24日
Arxiv
12+阅读 · 2019年4月9日
Arxiv
5+阅读 · 2019年2月28日
Arxiv
4+阅读 · 2018年10月5日
Arxiv
8+阅读 · 2018年1月30日
VIP会员
相关VIP内容
专知会员服务
31+阅读 · 2020年4月24日
相关资讯
训练目标检测模型只需要这 6 行代码
AI科技评论
8+阅读 · 2019年8月19日
7个实用的深度学习技巧
机器学习算法与Python学习
16+阅读 · 2019年3月6日
从人脸检测到语义分割,OpenCV预训练模型库
极市平台
5+阅读 · 2018年10月26日
10行代码实现目标检测,请收下这份教程
从零开始PyTorch项目:YOLO v3目标检测实现
机器之心
14+阅读 · 2018年4月23日
手把手教你如何部署深度学习模型
全球人工智能
17+阅读 · 2018年2月5日
人脸检测与识别总结
计算机视觉战队
21+阅读 · 2017年11月29日
简单车牌检测
计算机视觉战队
6+阅读 · 2017年6月23日
Top
微信扫码咨询专知VIP会员