电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>濒临灭绝鸟类探测器开源分享

濒临灭绝鸟类探测器开源分享

2022-10-26 | zip | 0.04 MB | 次下载 | 免费

资料介绍

描述

介绍:

由于非法狩猎和运动狩猎,有几种濒临灭绝的鸟类可以通过技术解决方案得到拯救。

根据《自然》杂志的当前讨论 [1],如果采取行动避免这种物种灭绝,可以减轻多少物种灭绝,鸟类生活 [2] 加强了这种灭绝,它大约可以减轻 40%。

pYYBAGNX_DCAQP0ZAAEVcaN23WA250.png
 

我发现的类似解决方案是基于提高对问题的认识。忽略这些解决方案,我可以找到:

  • 使用带 GPS 的项链。缺点:佩戴在动物身上的项圈和传感器会对动物造成伤害或不适。在电池的情况下,它们可能会爆炸。https://www.gps-collars.com/
  • 无人机智能传感。缺点:它们会对动物产生意想不到的碰撞或倒塌并伤害它们。
  • 识别鸟鸣。缺点:系统复杂繁琐,很难在一个地方长期维护。

在后者的情况下,除了加强我们的理论外,它还让我们有机会制作一个易于复制、节能且功能强大的系统。

解决方案:

使用 QuickFeather 开发套件中包含的英飞凌 IM69D130 PDM 数字麦克风,我们将获得音频信号,使用 SensiML,我们可以通过神经网络,指示我们听到的鸟的类型。

poYBAGNX_DeAVXE7AA0TxWYFae4310.png
 

显示在一个简单的 Web 应用程序中检测到的鸟类的信息

poYBAGNX_DqAKC-AAAFFDAP2etk552.png
 

连接图:

我们将项目基于以下架构:

pYYBAGNX_D2Af9YYAACJnOAih7Q400.png
 

我们将使用 QuickFeather 套件并通过 Simple Stream Gateway 将其连接到设备和 AWS,该信息将显示在 Web 应用程序中。

硬件

把它想象成我们使用 QuickFeather 作为 ESP32AI Shield。

pYYBAGNX_EKATbTNAAkCp0IOG1Y894.png
 

开发环境设置:

由于我使用我的计算机对许多不同的组件进行编程,我真的很喜欢能够隔离我用来编程的环境。在这种情况下,为了进行应用程序的开发并能够正确使用 QORC SDK,我将所有东西都安装在一个 Docker 容器中,该容器可以简单地打开和关闭以编译程序。除了在不同的机器上很容易重现。

我已将容器上传到 Docker Hub,因此您也可以根据需要使用它。

下面是容器编译qf_ssi_ai_app示例程序的示例

poYBAGNX_EWAenKqAAGWCxOgwME783.png
 

QuickFeather Burner v1(闪光器):

除了在 docker 上将所有内容编译到开发环境中,我决定创建一个 GUI 来轻松编程 QuickFeather,而无需命令行。

该程序与 Windows 10 兼容,您可以在 QuickFeather Burner v1 文件夹中找到可执行文件。

否则,您可以在存储库中看到此代码。

QuickFeather 燃烧器 v1

pYYBAGNX_EiAPpfXAADL34F7j3s638.png
 

先决条件,在 pc 上安装 python3 并在 PATH 中可用。

poYBAGNX_EuAAspDAABNghlim-c369.png
 
  • Install Dep :第一次打开时,按下按钮安装程序的依赖项。
  • 刷新端口:刷新连接到电脑的串行端口。
  • 浏览 Bin 文件:搜索 bin 中的文件。
  • 程序:在所选设备上对 bin 进行编程,一旦您完成闪烁设备,您应该会看到“成功”响应。

遵循这个过程:

 

该程序的功能纯粹是从命令行加速设备的闪存过程。

捕获数据:

为了获得可靠的我国鸟鸣数据,并能够对设备进行正确的测试,决定使用这个“数据库”的歌曲作为模型训练的输入。

数据:(网页是西班牙语,所以我留下谷歌翻译的版本)

对于这个测试,我决定使用以下 6 只随机鸟类的数据。

  • 铍蜂鸟
  • 墨西哥木匠
  • 墨西哥芬克
  • 红眼龙
  • 裁缝
  • 扎纳特市长

鸟类:

如果您想更深入地了解该项目,它位于 Data Capture Lab Project 文件夹中。

Near-Extinct-Bird-Detector/Data Capture Lab Project at master · altaga/Near-Extinct-Bird-Detector (github.com)

设置 QuickFeather:

为了设置设备并能够使用 QuickFeather 对我的音频进行采样,我遵循了 SensiML 官方教程

  • 使用 QuickFeather 和 SensiML 处理音频数据
  • 在这种情况下,由于设备将通过 WiFi 工作,我决定使用 SensiML 提供的 ESP32 接口通过 WiFi 发送所有数据。更多细节在:ESP32 接口

https://github.com/sensiml/esp32_simple_http_uart

特别是如果您想查看项目并自己编译它,它将位于该文件夹中。数据采集​​实验室

Near-Extinct-Bird-Detector/Data Capture Lab at master · altaga/Near-Extinct-Bird-Detector (github.com)

如果您只想开始从您的设备进行测量,编译的 bin 将位于文件夹中。数据采集​​实验室箱

Near-Extinct-Bird-Detector/Data Capture Lab Bin at master · altaga/Near-Extinct-Bird-Detector (github.com)

捕获数据示例:

 

捕获数据:

要对数据进行采样,请获取鸟网页提供的音频(GitHub 中的音频)并使用 QuickFeather 捕获它们。

pYYBAGNX_FCAHnMZAAIVZmtZYlc711.png
 

标签数据:

对于数据标注,在每帧捕获的数据中,选择鸟鸣中最显着的片段,同时选择它们没有唱歌的片段为 Normal 类别(没有鸟鸣,来自背景自然的纯噪声,在这种情况下“沉默”)

这是墨西哥木匠的歌曲的一个例子:

pYYBAGNX_FOANpxHAAKLioAfcak460.png
 

SensiML:

在这种情况下,在训练模型时,请使用以下设置,因为它们是给我最好结果的设置。

poYBAGNX_FWAUGBuAADhdv5lX4s047.png
 

生成的模型产生的混淆矩阵为:

poYBAGNX_FiANFrVAAC_S5kAhP4635.png
 

6只鸟的识别结果是:

pYYBAGNX_FuAIeFjAAEKEH8CqsQ560.png
 

由于单片机的限制,需要保证单片机能检测到的鸟类很少。

测试模型:

使用ESP32 Interface y Simple-Streaming-Gateway用一些鸟类测试模型。

 

尽管该模型似乎毫无意义地检测了多只鸟,但实际上它主要检测的是我们想要的鸟。然而,为了证明这一点,我们必须对几次检测进行平均,以显示它是如何正确检测到鸟的。

ESP32 接口:

SensiML 视频系列中解释了这个 ESP32 接口。

这个 ESP32 项目的所有代码都在 esp32_simple_http_uart 文件夹中,要编译它并在 ESP32 上烧写它,你必须使用 ESP-IDF vscode 插件。

该项目需要的唯一设置如下。

在 esp32_simple_http_uart/sdkconfig 的第 135 行输入您的 wifi 凭据并编译代码。

CONFIG_EXAMPLE_CONNECT_WIFI=y
# CONFIG_EXAMPLE_CONNECT_ETHERNET is not set
CONFIG_EXAMPLE_WIFI_SSID="YOURSSID"
CONFIG_EXAMPLE_WIFI_PASSWORD="YOURPASS"
CONFIG_EXAMPLE_CONNECT_IPV6=y
# end of Example Connection Configuration

完成此操作后,您可以毫无问题地将其连接到 Simple-Streaming-Gateway。

简单流式网关:

为了查看我们的 QuickFeather 正在阅读的内容,请安装 SensiML 提供的 SSG 示例。

为了让系统保持安装状态并且不必在计算机上运行 SSG,我决定将其完全安装在 Raspberry Pi Zero W 上

pYYBAGNX_IWAXmgGAAmopZZuYSg022.png
 

在这里您可以看到平台:

poYBAGNX_IeAKTxBAAEPO5LgpAE869.png
 

SSG 到 AWS 物联网

在这种情况下,为了将我们的设备与 AWS IoT 通信,我决定稍微修改 SSG 代码以实现与 AWS IoT 的 MQTT 连接,我们将利用 SSG 使用 Python 后端工作的事实.

SSG 中要修改的文件是 Simple-Streaming-Gateway/sources/base.py

添加了 AWS IoT 的 MQTT 代理。

*添加您的 AWS IoT 终端节点和您将向其发送数据的主题。

EndPoint = "XXXXXXXXXXXXXXX.iot.us-east-1.amazonaws.com" 
sub_topic = 'birds-detected'

由于 AWS 的安全性,有必要创建客户端证书和私有证书,以便将设备与平台通信。

  • 首先,我们必须访问我们的 AWS 控制台并查找 IoT 核心服务:
poYBAGNX_IqAYpN0AACmF_HybIw415.png
 
  • 获取您的 AWS 终端节点,保存它。
pYYBAGNX_I2AZG5XAACmYPcBhkI627.png
 
  • 在侧面板中选择“Onboard”选项,然后选择“Get started”。
poYBAGNX_JCAWk5tAAEFpw-DBxY271.png
 
  • 选择“开始”。
pYYBAGNX_JOAHHbyAAD9NOxoATU288.png
 
  • 在“选择平台”中选择“Linux/OSX”,在 AWS IoT DEvice SDK 中选择“Python”,然后单击“下一步”。
pYYBAGNX_JqAHk-WAACqQappLYY418.png
 
  • 在名称处,输入任何名称,然后单击“下一步”。
poYBAGNX_J2AE7xUAACjy7lLsZg075.png
 
  • 在“Download connection kit for”点击“Linux/OSX”按钮下载凭证包(我们稍后会用到)并点击“Next Step”。
pYYBAGNX_KCAF3jsAACqFr1NxSo522.png
 
  • 点击“完成”。
pYYBAGNX_KSAKkKhAACQEkO31ys531.png
 
  • 点击“完成”。
poYBAGNX_KeAFzpAAAC4S8Jk6bY715.png
 
  • 在横向栏上,在管理/事物部分内,我们可以看到我们已经创建的事物。现在我们必须设置那个东西的策略,让它在 AWS 中不受限制地工作。
pYYBAGNX_KmAe0OJAABezUeC0oo889.png
 
  • 在侧栏,在 Secure/Policies 部分我们可以看到我们的事物策略,点击它来修改它:
poYBAGNX_KyAEPX-AABQ7NtiKAY723.png
 
  • 点击“编辑政策文件”。
pYYBAGNX_K-AIo0BAACx-23OTlU259.png
 

将以下文本复制粘贴到文档中并保存。

{
"Version": "2012-10-17",
"Statement": [
    {
    "Effect": "Allow",
    "Action": "iot:*",
    "Resource": "*"
    }
]
}
pYYBAGNX_LKAQ0FbAACsbqIIffA137.png
 

这样,设备会将数据发送到 AWS IoT。

poYBAGNX_LSARRo_AAB-umEhjiI719.png
 

网页部署:

网页的部署是使用 ReactJS 和 AWS-SDK for javascript 完成的。

poYBAGNX_DqAKC-AAAFFDAP2etk552.png
 

看一看!:

AWS 认知:

为了安全起见,为了安全地使用和使用 AWS 服务,身份池凭证是通过 Cognito 服务实施的。

AWS IoT 和 Cognito 的访问密钥必须放在以下文件中。

Webapp/src/components/aws-configuration.js

var awsConfiguration = {
  poolId: "us-east-1:XXXXXXXXXXXXXXX", // 'YourCognitoIdentityPoolId'
  host:"XXXXXXXXXXXXXX-ats.iot.us-east-1.amazonaws.com", // 'YourAwsIoTEndpoint', e.g. 'prefix.iot.us-east-1.amazonaws.com'
  region: "us-east-1" // 'YourAwsRegion', e.g. 'us-east-1'
};
module.exports = awsConfiguration;

AWS IoT Web 套接字:

网页通过 AWS IoT 作为 Web 套接字接收传感器数据,因此在页面内定义很重要,这是我们将要接收的主题,在本例中为“鸟类检测”。

在以下文件中,输入您将订阅的主题的名称。WebApp/src/App.js

<IotReciever sub_topics={["birds-detected"]} callback={this.callBackIoT} />

数据后处理:

为了对传感器检测到的数据进行后处理,平均采集了 7 个样本。系统每次检测到积累了7个音频样本,就获取数据的统计模式,观察哪只鸟被检测到最多。显示此事件的信息。

const temp = JSON.parse(IoTData[1])
  in_array.push(parseInt(temp.Classification))
  console.log(in_array)
  if (in_array.length > 6) {
    let temps = this.state.birds

    if (flag && temps.find(element => element === (statisticalMode(in_array) - 1)) === undefined && (statisticalMode(in_array) - 1) !== 3) {
      flag = false
      temps.pop()
      temps.push(statisticalMode(in_array) - 1)
      this.setState({
        birds: temps
      })
    }
    else if (temps.find(element => element === (statisticalMode(in_array) - 1)) === undefined && (statisticalMode(in_array) - 1) !== 3) {
      temps.push(statisticalMode(in_array) - 1)
      this.setState({
        birds: temps
      })
    }
    in_array = []

网页演示:

在这里,我们可以看到平台如何正确检测到其中一只鸟:

 

完成品:

我在当地的森林中部署了这个项目,幸运的是那里有免费的 WiFi 连接。因此,可以将设备放置在这个地方进行试点测试。

pYYBAGNX_LyAT7BnAAV03YuoF4Q636.png
免费WiFi
 
poYBAGNX_MOACWaDABC4tN7HDVw061.png
设备打开
 
poYBAGNX_MmAYwBUAAeqLO_c6Jc476.png
3D打印案例
 
pYYBAGNX_M-AI8TNAAb4QAtU-HQ861.png
网关
 
poYBAGNX_DeAVXE7AA0TxWYFae4310.png
现场设备
 

最终演示:

 

结论:

当然,这只是为了尝试和保存所需的东西而做的一小部分努力,但第一步总是试图找到这些物种。物联网与人工智能一起为我们带来了自动化这一过程的可能性,并在其中变得更加确定。本质上,可以为更多种类的物种扩展和复制相同的过程,我还看到使用计算机视觉做同样事情的版本,在这种情况下的问题是为其提供动力。目前的目的是将 QuickFeather 和 SensiML 的音频功能推向极限,并为此找到一个有价值的应用程序。


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费