查看: 3419|回复: 1

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

[复制链接]
  • TA的每日心情
    无聊
    2019-1-9 09:43
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2018-9-12 15:02:19 | 显示全部楼层 |阅读模式
    分享到:
    工具选择
    我们将使用 Supervise.ly 平台来解决人员检测任务。除了推荐平台外,原因如下:
    1. 我们需要5分钟才能获得初始解决方案
    2. 无需编写代码并在各种开发工具之间来回切换
    3. 开箱即用:一系列预训练的模型,可视化和部署

    如何处理任务
    实际上,我们有两种方法来解决这个问题:
    (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” 按钮
    1.png
    (2)在终端上运行所选命令
    2.png
    (3)检查您的计算机是否已连接到平台
    3.png

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

    2.选择预训练模型 4.png 5.png 6.png

    (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. 导入图像
    7.png 8.png 9.png

    (1)转到“Import”->”Upload” 页面并拖放图像(2)定义项目名称并开始导入(3)勾选 “Projects”页面

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

    2. 运行推理过程
    10.png 11.png 12.png

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

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

    唯一剩下的就是选择推理模式。 在列表“inference_full_image”中选择。 最后一步是替换该行:
    1. <font size="2">“save_classes”: “__all__”,</font>
    复制代码
    这行:
    1. <font size="2">“save_classes”: [“person”],</font>
    复制代码
    点击开始“推理”按钮:
    3. 检查结果
    13.png 14.png
    (1)点击生成的项目(2)查看预测

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


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

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

    1.部署人物检测模型
    15.png 16.png 17.png

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

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

    2. 发送API请求
    18.png 19.png

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

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

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

    1. API令牌RsiYTrSBsyE5BIXRYYCFBLJf13JqVQ4NeEUUxX2oE1SdkwgdpmErjZ0tHEKljadILv8cQrosxMVmirJVOOf025mR8XB88feSRDbbeAYpKL2MwJ1MAZtJ2PfideN4UmNP
    2. URL
    3. 用法示例
    很明显,不过我要说的是,您的API令牌和网址将与上述不同。
    例如,假设你有“dl_heroes.jpg”图像。
    20.png
    Yann LeCun, Geoffrey Hinton, Yoshua Bengio, Andrew Ng

    因此,如果你在终端中运行以下命令:
    1. <font size="2">curl -XPOST -H ‘X-API-KEY: YourToken’ -F ‘image=@dl_heroes.jpg;type=image/jpeg’ YourUrl</font>
    复制代码

    然后,Supervise.ly会以json格式给你回复检测结果:
    1. <font size="2">[{"tags":[],"description":"","objects":[{"bitmap":{"origin":[],"np":[]},"type":"rectangle","classTitle":"person","description":"","tags":[],"points":{"exterior":[[343,87],[493,375]],"interior":[]},"score":0.999502420425415},{"bitmap":{"origin":[],"np":[]},"type":"rectangle","classTitle":"person","description":"","tags":[],"points":{"exterior":[[0,94],[149,375]],"interior":[]},"score":0.9994213581085205},{"bitmap":{"origin":[],"np":[]},"type":"rectangle","classTitle":"person","description":"","tags":[],"points":{"exterior":[[247,96],[367,377]],"interior":[]},"score":0.9987866282463074},{"bitmap":{"origin":[],"np":[]},"type":"rectangle","classTitle":"person","description":"","tags":[],"points":{"exterior":[[138,96],[256,378]],"interior":[]},"score":0.99868243932724},{"bitmap":{"origin":[],"np":[]},"type":"rectangle","classTitle":"person","description":"","tags":[],"points":{"exterior":[[100,133],[129,177]],"interior":[]},"score":0.9136056900024414}],"size":{"width":506,"height":380}}]</font>
    复制代码

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

    API返回的预测可视化

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


    回到主要问题
    回想一下标题中的问题“你能在10分钟内解决一个人检测任务吗?”

    1. 快速回答是,只需按照上面的说明操作即可。
    2. 更为深思熟虑的答案是“它取决于”,细节决定成败。

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

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

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

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

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

    如果你发现这篇文章很有趣,那就多分享它一些,这样更多的人就能看到它!
    本文转载自雷锋网 AI研习社



    回复

    使用道具 举报

  • TA的每日心情
    开心
    2017-12-29 15:29
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2018-9-27 09:42:39 | 显示全部楼层
    10分钟!太难了,这都是高手
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-3-28 19:44 , Processed in 0.151326 second(s), 20 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.