前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MaskCam:Jetson Nano AIoT口罩检测相机

MaskCam:Jetson Nano AIoT口罩检测相机

作者头像
GPUS Lady
发布2021-04-21 16:32:28
1.2K0
发布2021-04-21 16:32:28
举报
文章被收录于专栏:GPUS开发者GPUS开发者

这个项目来自:

翻译自:https://www.hackster.io/BDTI/maskcam-a-jetson-nano-aiot-mask-detection-camera-a04eea

MaskCam是基于Jetson Nano的智能相机系统的原型参考设计,该系统实时测量人群口罩的使用情况,并在边缘执行所有AI计算。MaskCam可检测并跟踪其视野中的人员,并通过对象检测,跟踪和投票算法确定他们是否戴着口罩。

它将检测统计信息上载到云中,在其中可以使用Web GUI监视摄像头正在观看的区域中的口罩合规性。它可以将特定的视频片段保存到本地磁盘(例如,突然涌入的许多人没有戴口罩),并且可以选择通过RTSP流式传输视频。

(放置在机场的MaskCam)

MaskCam由Berkeley Design Technology,Inc.(BDTI)和Tryolabs SA开发,并由NVIDIA资助开发。MaskCam是根据MIT许可证提供的。有关MaskCam的更多信息,请参阅BDTI的报告(https://www.bdti.com/sites/default/files/MyBDTI/pubs/Developing-Prototype-Mask-Jetson-Nano.pdf)。该项目在MIT许可下也完全开源。有关使用和修改MaskCam的更多详细信息,可参见GitHub存储库(https://github.com/bdtinc/maskcam)。

(注意:我们发现BDTI的报告里对比了Jetson系列的规格,特意列在这里)

本项目视频说明:

该项目所需的材料

要设置MaskCam,您将需要:

  • 运行JetPack 4.4.1或4.5的Jetson Nano Developer Kit。(请参阅https://developer.nvidia.com/zh-cn/embedded/learn/get-started-jetson-nano-devkit ,了解如何在Jetson Nano上安装JetPack。)
  • 使用5V4A DC电源供电。
  • 一个USB网络摄像头连接到您的Nano
  • 利用网线,或者USB WiFi,或者M.2 WiFi模块将您的Jetson Nano连接到互联网
  • 另一台装有可以显示RTSP流的程序的计算机-我们建议使用VLC或QuickTime 。

本项目采用:

入门

在我们的Jetson Nano Dev Kit上运行MaskCam的最简单,最快的方法是使用我们的预制容器。

首先,打开Jetson Nano的电源,然后等待其完全启动。打开一个终端并使用以下命令从Docker Hub下载MaskCam容器(下载大约需要10分钟):

代码语言:javascript
复制
sudo docker pull maskcam/maskcam-beta

使用查找本地Jetson Nano IP地址ifconfig。稍后将使用此地址查看来自摄像机的实时视频流,并通过Web服务器与Nano交互。

确保将USB摄像头连接到Nano,然后通过运行以下命令启动MaskCam。确保用您的Nano的IP地址代替<your-jetson-ip>

代码语言:javascript
复制
sudo docker run --runtime nvidia --privileged --rm -it --env MASKCAM_DEVICE_ADDRE
SS=<your-jetson-ip> -p 1883:1883 -p 8080:8080 -p 8554:8554 maskcam/maskcam-beta

MaskCam容器将maskcam_run.py使用USB相机作为默认输入设备(),开始运行口罩检测脚本/dev/video0。加载时,它将在终端中产生各种输出消息。如果有错误,该过程将在几秒钟后自动结束。查看本指南末尾的“故障排除”部分,以获取有关解决错误的提示。

30秒左右后,它应不断生成状态消息(例如Processed 100 frames...)。让它保持运行状态(不要按Ctrl+C,但要注意设备将开始加热)并继续进行下一部分,以查看实时口罩检测视频流!

观看实时视频流

如果您滚动浏览日志而没有看到任何错误,则应该找到类似以下的消息:

代码语言:javascript
复制
Streaming at rtsp://aaa.bbb.ccc.ddd:8554/maskcam

aaa.bbb.ccc.ddd您之前提供的地址在哪里MASKCAM_DEVICE_ADDRESS。如果您未提供地址,则会在此处看到一些未知的地址标签,但流式传输仍将起作用。

您可以将该URL复制粘贴到另一台计算机上的RSTP流查看器中(请参阅下面视频如何使用VLC进行复制)。

如果一切顺利,您应该获得Nano视频流的奖励,脸上戴着口罩的绿色框和不戴着口罩的面部红色框。实时直播视频的示例如下所示。

该视频流给出了MaskCam如何工作的一般演示。但是,MaskCam还具有其他功能,例如能够将口罩检测统计信息发送到云并通过Web浏览器查看它们。如果您希望看到这些功能的实际效果,则需要设置一个MQTT服务器,这将在下一部分介绍:MQTT和Web服务器设置。

如果在运行实时流时遇到任何错误,请查看“疑难解答”部分,以获取有关解决错误的提示。有关配置MaskCam的更多详细信息,请查看GitHub页面上的“设置设备配置参数”部分(https://github.com/bdtinc/maskcam#mqtt-and-web-server-setup)。

MQTT和Web服务器设置

MaskCam旨在与Web服务器一起设置,该服务器存储掩码检测统计信息,并允许用户与设备进行远程交互。我们编写了用于实例化服务器的代码,该服务器从设备接收统计信息,将其存储在数据库中,并具有基于Web的GUI前端来显示它们。下面显示了示例设备的前端屏幕截图。

您可以通过在本地网络上的PC上启动服务器,然后将Jetson Nano MaskCam设备指向该服务器来测试和探索此功能。本节说明如何执行此操作。MQTT代理和Web服务器可以在Linux或OSX机器上构建和运行。我们已经在Ubuntu 18.04LTS和OSX Big Sur上对其进行了测试。

该服务器由多个docker容器组成,这些容器使用docker-compose一起运行。请按照平台的安装说明在您的机器上安装docker-compose,然后再继续。在下一步中设置容器时,将自动安装所有其他必需的软件包和库。

安装docker-compose之后,克隆此仓库:

代码语言:javascript
复制
git clone https://github.com/bdtinc/maskcam.git

转到server/文件夹,该文件夹具有在四个容器上实现的所有必需组件:Mosquitto代理,后端API,数据库和Streamlit前端。

这些容器是使用环境变量配置的,因此可以通过复制默认模板来创建.env文件:

代码语言:javascript
复制
cd server
cp database.env.template database.env
cp frontend.env.template frontend.env
cp backend.env.template backend.env

唯一需要更改的文件是database.env。用文本编辑器打开它,更换<DATABASE_USER><DATABASE_PASSWORD>以及<DATABASE_NAME>用自己的值的字段。以下是一些示例值,但是出于安全原因,您最好更具创造力:

代码语言:javascript
复制
POSTGRES_USER=postgres
POSTGRES_PASSWORD=some_password
POSTGRES_DB=maskcam

编辑数据库环境文件之后,您可以构建所有容器并使用单个命令运行它们:

代码语言:javascript
复制
sudo docker-compose up -d

发出命令后请等待几分钟,以确保所有容器均已构建并正在运行。然后,通过运行ifconfig命令检查计算机的本地IP 。(应该是与开始的地址192.168...10...172...)。这是服务器IP将被用于连接到服务器(因为服务器托管在此计算机上)。

接下来,打开Web浏览器并输入服务器IP来访问前端网页:

代码语言:javascript
复制
http://<server IP>:8501/

如果您在前端看到ConnectionError,请再等待几秒钟,然后重新加载页面。后端容器可能需要一些时间才能完成数据库设置。

现在,您的本地Web服务器已经设置好,并准备从Jetson Nano接收MQTT消息。

使用服务器设置设备

在本地计算机上(或在具有公共IP的AWS EC2实例中)设置服务器后,请切换回Jetson Nano设备。使用以下命令运行MaskCam容器,其中:

  • MQTT_BROKER_IP 设置为服务器的IP
  • MQTT_DEVICE_NAME 是您设备的名称(例如“ Camera1”)
  • MASKCAM_DEVICE_ADDRESS 是您的Jetson Nano的IP地址
代码语言:javascript
复制
sudo docker run --runtime nvidia --privileged --rm -it --env MQTT_BROKER_IP=<server IP> --env MQTT_DEVICE_NAME=my-jetson-1 --env MASKCAM_DEVICE_ADDRESS=<your-jetson-ip> -p 1883:1883 -p 8080:8080 -p 8554:8554 maskcam/maskcam-beta

就是这样!如果设备可以访问服务器的IP,那么您应该在输出日志中看到一些成功的连接消息,然后在前端的下拉菜单中看到您的设备(如果没有看到,请重新加载页面)。在前端中,选择Group data by: Second并单击Refresh status以查看新数据到达时绘图如何变化。

故障排除

如果在使用MaskCam时遇到任何错误或问题,请查看我们的GitHub存储库中的“常见错误故障排除”部分。它列出了常见错误以及如何解决这些错误。

更多信息

如果您想了解有关MaskCam的更多信息并深入研究使其工作的代码,请访问我们的开源GitHub存储库,网址为 https://github.com/bdtinc/maskcam 。该仓库还提供了有关使用balenaOS设置MaskCam的说明,以便可以将其作为完全容器化的应用程序进行部署和管理。

更多的项目:

給盲人一双眼睛:用Jetson NANO做一个盲人导航器

是时候薅羊毛了:NVIDIA 启动 Jetson Nano 2GB 开发套件赠送计划

利用NVIDIA TRT和Deepstream创建一个实时车牌检测和识别应用程序

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 该项目所需的材料
  • 入门
  • 观看实时视频流
  • MQTT和Web服务器设置
  • 使用服务器设置设备
  • 故障排除
  • 更多信息
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档