使用 GluonCV 0.3 与 Apache MXNet 1。3

源代码:https://github.com/tspannhw/nifi-gluoncv-yolo3

* 捕获和处理的图像可供在 NiFi 1.7.x 中的流中查看

使用 Case7

我需要很容易地监视我的安全存储库的内容。这是已知事物的固定数目。

在现实世界中, 我们需要的是一个很好的相机 (可能是四到八取决于房间的角度), 像 NVidia 乔治·杰特森 TX2、MiniFi 0.5 Java 代理、JDK 8、Apache MXNet、GluonCV、大量 Python 库、网络连接和简单工作流这样的设备。在我的金库之外, 我需要一个服务器或集群来进行更高级的处理, 尽管我可以在本地框上运行它。如果我正在看的项目或某些项目的数量不再在屏幕上, 那么我们应该立即发出警报。这可能是 SMS、电子邮件、松弛消息、警报系统或其他方法。我们在下面执行的大部分。如果有人想做一个完整的用例, 我可以帮助。

演示实现

我想使用新的永乐3模型, 这是新的0.3 流的一部分, 所以我安装了0.3。这可能是最后的时候, 你读这个。你可以试着做一个常规的 pip3.6 install -U gluoncv 命令, 看看你得到了什么。

pip3.6 install -U gluoncv==0.3.0b20180924

永乐 v3 是一个伟大的预先训练模型, 用于对象检测。

见: https://gluon-cv.mxnet.io/build/examples_detection/demo_yolo.html

GluonCV 模型动物园非常丰富, 非常容易使用。所以, 我们只是抓住模型 “yolo3_darknet53_voc” 与一个自动下载的时间, 我们准备好了。它们提供了简单的自定义代码开始。我写了我的处理图像和 JSON 结果, 以摄取的 Apache NiFi。您会注意到这与我们为打开计算机视觉对话所做的类似。

这是更新的, 甚至更容易。我删除了 MQTT, 然后只输出图像文件和一些 JSON 读取。

GluonCV 使工作与计算机视觉非常干净和容易。

为什么 Apache NiFi 深入学习工作流

让我数一下前五种方法:

1.出处-这让我看到所有的东西, 无处不在, 所有的时间与数据和元数据。

2, 可配置的队列-队列无处不在, 它们在大小和优先级上非常可配置。每一步都有压力和安全。在现实世界中, 接收器、源和步骤可以离线。离线, 在线, 无论何处, 我可以恢复, 并有充分的可见到我的流量, 因为它们在设备, 服务器, 网络, 云和民族国家之间传播。

3. 从 SSL 和数据加密的各个级别安全。集成与领先的工具, 包括 apache 诺克斯, apache 游侠和阿帕奇地图集。看到4. ui 一个简单的 ui, 用于开发、监视和管理令人难以置信的复杂流, 包括大量的、深入的学习、日志和每个数据源, 您可以将其抛出。

5.代理-MiniFi 给我两个不同的代理, 我的设备或系统流数据无头。

运行 gluoncv yolo3 模型

我用 shell 脚本将 Python 脚本打包, 以丢弃警告和垃圾邮件。

cd /Volumes/TSPANN/2018/talks/ApacheDeepLearning101/nifi-gluoncv-yolo3 
python3.6  -W ignore /Volumes/TSPANN/2018/talks/ApacheDeepLearning101/nifi-gluoncv-yolo3/yolonifi.py 2>/dev/null

我们可以检测到的可能对象的列表

["aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", 
"diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", 
"tvmonitor"]

我要训练这与我自己的数据为即将到来的啤酒互联网,对于保险库的使用情况下, 我们需要您的存储库内容图片。

这里

JSON 中的输出示例

{  
   "imgname":"images/gluoncv_image_20180924190411_b90c6ba4-bbc7-4bbf-9f8f-ee5a6a859602.jpg",
   "imgnamep":"images/gluoncv_image_p_20180924190411_b90c6ba4-bbc7-4bbf-9f8f-ee5a6a859602.jpg",
   "class1":"tvmonitor",
   "pct1":"49.070724999999996",
   "host":"HW13125.local",
   "shape":"(1, 3, 512, 896)",
   "end":"1537815855.105193",
   "te":"4.199203014373779",
   "battery":100,
   "systemtime":"09/24/2018 15:04:15",
   "cpu":33.7,
   "diskusage":"49939.2 MB",
   "memory":60.1,
   "id":"20180924190411_b90c6ba4-bbc7-4bbf-9f8f-ee5a6a859602"
}

处理的图像输出示例

它找到一个通用的人, 我们可以训练与已知的一组人, 允许在一个地区或已知的用户。

NiFi 流

网关服务器(我们可以跳过这个, 但聚合多个摄像头代理是有用的)

将流发送到云中

云服务器站点到站点

一旦我们推断出数据的模式, 我们就不再需要它了。我们可以手动或从其他工具派生架构, 但这很简单。完成后, 可以 InferAvroSchema 从流程中删除处理器。如果你想从这篇文章末尾附加的流程开始, 我会把我的留在你的使用中。

流程步骤

路由如果没有错误合并记录, 然后将这些聚合的 apache Avro 记录转换为一个 apache 兽人文件。

然后将其存储在 HDFS 目录中。一旦完成, 将有一个 DDL 添加到元数据, 您可以发送到 PutHiveQL 或手动创建表直线或策帕林飞艇或架构: gluoncvyolo

{  
   "type":"record",
   "name":"gluoncvyolo",
   "fields":[  
      {  
         "name":"imgname",
         "type":"string",
         "doc":"Type inferred from '\"images/gluoncv_image_20180924211055_8f3b9dac-5645-49aa-94e7-ee5176c3f55c.jpg\"'"
      },
      {  
         "name":"imgnamep",
         "type":"string",
         "doc":"Type inferred from '\"images/gluoncv_image_p_20180924211055_8f3b9dac-5645-49aa-94e7-ee5176c3f55c.jpg\"'"
      },
      {  
         "name":"class1",
         "type":"string",
         "doc":"Type inferred from '\"tvmonitor\"'"
      },
      {  
         "name":"pct1",
         "type":"string",
         "doc":"Type inferred from '\"95.71207000000001\"'"
      },
      {  
         "name":"host",
         "type":"string",
         "doc":"Type inferred from '\"HW13125.local\"'"
      },
      {  
         "name":"shape",
         "type":"string",
         "doc":"Type inferred from '\"(1, 3, 512, 896)\"'"
      },
      {  
         "name":"end",
         "type":"string",
         "doc":"Type inferred from '\"1537823458.559896\"'"
      },
      {  
         "name":"te",
         "type":"string",
         "doc":"Type inferred from '\"3.580893039703369\"'"
      },
      {  
         "name":"battery",
         "type":"int",
         "doc":"Type inferred from '100'"
      },
      {  
         "name":"systemtime",
         "type":"string",
         "doc":"Type inferred from '\"09/24/2018 17:10:58\"'"
      },
      {  
         "name":"cpu",
         "type":"double",
         "doc":"Type inferred from '12.0'"
      },
      {  
         "name":"diskusage",
         "type":"string",
         "doc":"Type inferred from '\"48082.7 MB\"'"
      },
      {  
         "name":"memory",
         "type":"double",
         "doc":"Type inferred from '70.6'"
      },
      {  
         "name":"id",
         "type":"string",
         "doc":"Type inferred from '\"20180924211055_8f3b9dac-5645-49aa-94e7-ee5176c3f55c\"'"
      }
   ]
}

表格数据具有类型和属性的字段。让我们指定用于自动分析、转换和实时流 SQL 的那些。

配置单元表架构: gluoncvyolo

CREATE EXTERNAL TABLE IF NOT EXISTS gluoncvyolo (imgname STRING, imgnamep STRING, class1 STRING, pct1 STRING, host STRING, shape STRING, end STRING, te STRING, battery INT, systemtime STRING, cpu DOUBLE, diskusage STRING, memory DOUBLE, id STRING) STORED AS ORC;

apache NiFi 为我生成表在 apache 蜂巢3.x 作为 Apache 兽人文件, 以快速的性能。

蜂巢酸表架构: gluoncvyoloacid

CREATE TABLE gluoncvyoloacid
(imgname STRING, imgnamep STRING, class1 STRING, pct1 STRING, host STRING, shape STRING, `end` STRING, te STRING, battery INT, systemtime STRING, cpu DOUBLE, diskusage STRING, memory DOUBLE, id STRING)
STORED AS ORC TBLPROPERTIES ('transactional'='true')

我可以很容易地插入或更新数据到蜂巢3.x 酸2表。

我们有数据, 现在查询它。简单, 无需安装表、Leafletjs、AngularJS、图形、地图和图表的分析。

NiFi 流量注册表

要管理版本控制, 我使用的是 NiFi注册表, 这是伟大的。在最新版本, 0.2, 有能力备份它与 GitHub!这很容易apache.org/docs/nifi-registry-docs/index.html “目标 =” _blank “>> 文档和布赖恩弯的优秀职位上的主题。

我有几个陷阱。

  • 使用您自己的新 GitHub 项目具有权限, 然后将其克隆到本地 git 克隆https://github.com/tspannhw/nifi-registry-github.git
  • 请确保 GitHub 目录具有权限且为空 (无自述文件或垃圾邮件)。
  • 请确保您放入了完整的目录路径。
  • 更新您的配置, 如下所示:
    <flowPersistenceProvider>
        <class>org.apache.nifi.registry.provider.flow.git.GitFlowPersistenceProvider</class>
        <property name="Flow Storage Directory">/Users/tspann/Documents/nifi-registry-0.2.0/conf/nifi-registry-github</property>
        <property name="Remote To Push">origin</property>
        <property name="Remote Access User">tspannhw</property>
        <property name="Remote Access Password">generatethis</property>
    

这是我的 GitHub 目录来保存版本: https://github.com/tspannhw/nifi-registry-github

资源

飞艇笔记本电脑

阿帕奇-mxnet-gluoncv-yolov3-复制. json

Nifi 流量

gluoncv 服务器. xml

Comments are closed.